From: Chet Ramey Date: Tue, 22 May 2018 20:51:07 +0000 (-0400) Subject: bash-5.0-alpha release X-Git-Tag: bash-5.0-alpha X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a51695bed07d37086c352372ac69d0a30039a6b;p=thirdparty%2Fbash.git bash-5.0-alpha release --- diff --git a/CHANGES b/CHANGES index 43cb1341a..4eb96c0e9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,526 @@ +This document details the changes between this version, bash-5.0-alpha, and +the previous version, bash-4.4-release. + +1. Changes to Bash + +a. Fixed a bug that could cause traps in background jobs to give the terminal + to the wrong process group. + +b. Fixed a bug that caused `kill -l 0' to print an out-of-range error. + +c. Fixed a problem that could result in here-documents being displayed in + the wrong order. + +d. Fixed a number of out-of-bounds and free memory read errors found via + fuzzing. + +e. Fixed a subshell inheritance problem that could cause a subshell to wait for + the wrong process. + +f. Fixed a bug that caused SHLVL to be incremented one too many times when + creating subshells. + +g. A job dying due to SIGINT can now interrupt sourcing a file in a shell with + job control enabled. + +h. Fixed a spurious warning about unterminated ${ or $( constructs during + word completion. + +i. The shell no longer runs traps if a signal arrives while reading command + substitution output. + +j. Fixed an arithmetic expansion error that could allow ++var++ as valid + syntax. + +k. Fixed an error that allowed out-of-bounds references to the directory stack. + +l. The shell does a better job of saving multi-line history entries with + embedded comments. + +m. Fixed a bug that could cause quoted bracket expressions in regular expression + arguments to `[[' to not match correctly. + +n. Fixed a bug that could cause an IFS character in a word to result in an + extra '\001' character in the expansion. + +o. A trailing backslash in a glob pattern can match a trailing backslash in the + string. + +p. Fixed a memory leak in the process creation code path when job control is + enabled. + +q. Fixed a bug that caused `printf' to output broken surrogate pairs for + Japanese locales. + +r. Fixed a bug that caused a SIGINT generated from `kill' in a dot script to + kill an interactive shell. + +s. Fixed a bug that could cause the `read' builtin to not fully read a + multibyte character. + +t. Fixed a bug that could cause identifiers to be evaluated in conditional + arithmetic expressions even when evaluation is suppressed. + +u. Fixed a bug that could result in command substitution, when executed in a + context where word splitting is not performed, to leave a stray '\001' + character in the string. + +v. Fixed a bug that could cause history expansion to be disabled in a non- + interactive shell even if `-o histexpand' is supplied at startup. + +w. Fixed a bug that caused `read -N' to strip leading whitespace IFS characters. + +x. Fixed a bug that caused spurious tilde expansion in arithmetic expressions. + +y. If indirect expansion attempts to indirectly reference through an unset + variable, report an error. + +z. Added a guard to prevent the shell from looping while receiving an endless + stream of SIGTTIN at shell startup. + +aa. Fixed a bug with parsing here documents inside a command substitution when + looking for the closing delimiter. + +bb. Fixed a bug that caused printf to not quote all characters in the + current locale when using the `%q' format specifier. + +cc. Fixed a bug with bash's internal buffered I/O system that caused the input + pointer to not be reset when read(2) returned an EOF. + +dd. Bash now installs its SIGWINCH signal handler with SA_RESTART, so it will + not interrupt open/read/write system calls. + +ee. The ERR trap now reports line numbers more reliably. + +ff. The shell no longer tries to manipulate the terminal process group if a + command or process substitution is killed by SIGTERM when job control is + enabled. + +gg. Fixed a bug that caused extglob patterns to match filenames beginning with + a period. + +hh. File descriptors open for writing to here documents are no longer available + to subshells. + +ii. Make sure word completion doesn't perform command or process substitution. + +jj. Fixed a bug with parsing $$'...' inside a command substitution. + +kk. Fixed a bug that caused bash to remove backslash-newline pairs from the + body of a here-document with a quoted delimiter inside a command + substitution. + +ll. Fixed a bug that could cause the shell to hang when adding a pid to the + table of background process exit statuses. + +mm. Fixed a bug that could cause 0x01 characters to be doubled in the output + of process substitution. + +nn. Restricted shells now clear the hash table before making the PATH variable + read-only. + +oo. There are a number of changes to the expansion of $* and $@ in contexts + where word splitting does not occur (quoted and unquoted), with IFS set + to NULL or a non-standard value, mostly to deal with the consequences of + the behavior defined in Posix interpretation 888. + +pp. There are a number of changes to nameref variable handling to avoid + creating variables with invalid names. + +qq. A non-interactive posix mode shell no longer exits when an assignment + statement fails if the assignment is utimately being performed by the + `command' builtin. + +rr. When using character class names for globbing, don't allow case + insensitivity, even if nocaseglob is enabled. + +ss. Fixed a bug that allowed some redirections to stay in place if a later + redirection failed. + +tt. Fixed a bug in how command and process substitutions are recognized within + other parameter expansions. + +uu. Fixed a bug that caused bash to loop under certain circumstances when + performing arithmetic expansion on a variable whose value is an invalid + expression. + +vv. Fixed a bug that could cause bash to expand aliases inappropriately while + parsing compound commands like `case'. + +ww. Fixed a bug that could cause `read -N' to fail to read complete multibyte + characters, even when the sequences are incomplete or invalid, with or + without readline. + +xx. Fixed a bug that could cause `case' to fail to match patterns containing + 0x01 characters. + +yy. Fixed a bug that caused exported functions to contain stray 0x01 characters. + +zz. Fixed some inconsistencies with how the history number is handled in the + various prompt strings. + +aaa. Fixed a bug that could cause a core dump if READLINE_LINE was unset + inside a shell function bound to a key sequence with `bind -x'. + +bbb. Fixed a bug that could cause bash to not read a token terminator correctly + if a command substitution was used inside an arithmetic `for' command. + +ccc. Fixed problems that could occur with a fatal arithmetic expansion error + in a context (like prompt expansion) where you can't jump back to the + top level. + +ddd. Expression errors in arithmetic `for' commands are treated more like + shell syntax errors. + +eee. Fixed a parser synchronization error resulting from a syntax error + followed immediately by an EOF. + +fff. When executing a shell function, the first line in the function ($LINENO) + is line 1 instead of line 0, as Posix requires. + +ggg. In Posix mode, bash will canonicalize the value of PWD it inherits from + the environment and use that to set its idea of the current directory. + +hhh. If LINENO is exported, bash needs to regenerate its value each time it + constructs the environment. + +iii. Fixed a bug with restoring the SIGINT handler when using `wait -n'. + +jjj. Make sure the `coproc' command returns an appropriate status if the NAME + argument is invalid. + +kkk. Fixed a problem with arithmetic expressions containing array references + that contain arithmetic expressions with syntax errors. + +lll. The `select' command and help builtin will use $COLUMNS before the window + size returned from the kernel as the terminal width. + +mmm. `read -n 0' and `read -N 0' now try a zero-length read to attempt to + detect file descriptor errors. + +nnn. The `read' builtin now does a better job of acting on signals that don't + interrrupt read(2). + +ooo. Fixed some cases where `printf -v' did not return failure status on a + variable assignment error. + +ppp. Fixed temporary environment propagation back to the current environment + so that it doesn't happen for special builtins run by the `command' + builtin. + +qqq. Fixed a bug when searhing for the end of a here-document delimiter in a + command substitution. + +rrr. Fixed a bug that could cause `cd ${DIRSTACK[0]}' to fail. + +sss. Fixed a bug that could cause reserved words to not be recognized in a + for statement without the `in' inside a command substitution. + +ttt. Fixed a bug that could cause a double-free in a timed command with an + expansion error. + +uuu. Fixed a bug that could cause a core dump if a script switches from a UTF-8 + locale to a different locale after displaying a lone surrogate character. + +vvv. Fixed cases where bash prematurely removed FIFOs attached to process + substitutions. + +www. Fixed a problem with calculating the size of the table that stores exit + statuses from background processes when the child process resource limit + is very large. + +xxx. Fixed a memory leak with functions using `return' when using FIFOs for + standard input. + +yyy. `wait' without arguments attempts to wait for all active process + substitution processes. + +zzz. Fixed a bug where an indirect parameter was subjected to word splitting + when trying to find the indirected variable name. + +aaaa. Fixed a bug that could allow restricted shell users to add commands to + the hash table. + +bbbb. When using the `!(patlist)' extended globbing operator, a filename + beginning with a `.' that doesn't match any of the patterns is not + returned as a match if leading dots must be matched explicitly. + +cccc. Fixed a bug that could cause line number and source file information for + a function definition to be incorrect if there are multiple definitions. + +dddd. Fixed a bug that could cause builtins like `readonly' to behave + differently when applied to arrays and scalar variables within functions. + +eeee. Fixed a bug that could cause alias expansion to add an extra space to + a quoted string that begins outside the alias expansion. + +ffff. Fixed a bug that could result in unwanted alias expansion after timing + the null command. + +gggg. Fixed a bug that could cause a core dump if a timestamp in a history + file overflowed a time_t. + +hhhh. Restricted shells can no longer redirect from /dev/tcp or /dev/udp, since + the kernel calls make those file descriptors read-write. + +iiii. Fixed a problem with splitting double-quoted words for programmable + completion when the double quote immediately follows another word + delimiter. + +jjjj. Fixed a bug resulting in a use-after-free if two file descriptors share + the same input buffer. + +kkkk. The error message resulting from ${x:?} and ${x?} now differs depending + on whether the variable is null or unset. + +llll. In Posix mode, the shell exits if a variable assignment fails and precedes + an empty simple command (after expansion). + +mmmm. Fixed a timing problem with SIGALRM that could cause the read builtin to + drop characters. + +nnnn. Added code to deal with kill(2) failing to send the shell a fatal signal + due to Linux pid namespace peculiarities. + +oooo. Fixed a bug that made \C-@ (NUL) unusable in key sequences used for + `bind -x' commands. + +pppp. Fixed a bug that could cause SIGINT recursion when running an external + command in a trap the shell takes after a command exits due to SIGINT. + +qqqq. Make sure the shell turns off job control before running the command- + not-found handle, so the command doesn't try to manipulate process + groups. + +rrrr. Fixed a problem with timing process substitutions that caused the shell + to print timing information for the calling command. + +ssss. Fixed a bug that caused backquotes in a here-document delimiter to mark + the delimiter as quoted (inhibiting expansion of the here-document + contents). + +tttt. Fixed several problems with 0x01 and 0x177 in case pattern lists and + conditional command pattern matches. + +uuuu. Fixed a bug that could cause the pattern matching engine to not recognize + locale-specific character classes. + +vvvv. The auto-configuration now tests for /dev/stdin and /dev/fd independently. + +wwww. The `globstar' code now skips over symbolic links to directories, + preventing them from being scanned twice. + +xxxx. When running `bind -x' commands, bash now sets READLINE_POINT based on + the number of characters in the readline line buffer, not the number of + bytes. + +yyyy. Fixed a problem that could cause recursive trap evaluation of the RETURN + trap when using `eval return'. + +zzzz. Fixed a bug with expanding 0x01 in an unquoted here-document. + +aaaaa. The process substitution code now closes and unlinks FIFOs when the + process on the other side exits, in order to prevent SIGPIPE or + waiting until a FIFO opened for read has a writer. + +bbbbb. Fixed a bug with recursive calls to the parser overwriting the token in + an {id}>foo construct. + +ccccc. After a Posix discussion, the pattern matching engine just skips over + invalid character classes in bracket expressions, instead of matching + them like individual characters in the expression. + +ddddd. Fixed a posix-mode problem with variable scoping when creating variables + from assignment statements preceding special builtins. + +eeeee. Fixed a bug that could cause patterns containing backslashes to not be + run through the pattern matching engine. + +fffff. Fixed a bug that could cause redirections to compound commands to not + be `undone' if the file descriptor in the redirection was closed when + the redirection was initially processed. + +ggggg. Fixed a bug that could cause buffer corruption when using `bind -x' in + a command execute as a result of a key binding installed by `bind -x'. + +2. Changes to Readline + +a. Added a guard to prevent nested macros from causing an infinite expansion + loop. + +b. Instead of allocating enough history list entries to hold the maximum list + size, cap the number allocated initially. + +c. Added a strategy to avoid allocating huge amounts of memory if a block of + history entries without timestamps occurs after a block with timestamps. + +d. Added support for keyboard timeouts when an ESC character is the last + character in a macro. + +e. There are several performance improvements when in a UTF-8 locale. + +f. Readline does a better job of preserving the original set of blocked = + signals when using pselect() to wait for input. + +g. Fixed a bug that caused multibyte characters in macros to be mishandled. + +h. Fixed several bugs in the code that calculates line breaks when expanding + prompts that span several lines, contain multibyte characters, and contain + invisible character seqeuences. + +i. Fixed several bugs in cursor positioning when displaying lines with prompts + containing invisible characters and multibyte characters. + +j. When performing case-insensitive completion, Readline no longer sorts the + list of matches unless directed to do so. + +k. Fixed a problem with key sequences ending with a backslash. + +l. Fixed out-of-bounds and free memory read errors found via fuzzing. + +m. Fixed several cases where the mark was set to an invalid value. + +n. Fixed a problem with the case-changing operators in the case where the + lower and upper case versions of a character do not have the same number + of bytes. + +o. Handle incremental and non-incremental search character reads returning EOF. + +p. Handle the case where a failing readline command at the end of a multi-key + sequence could be misinterpreted. + +q. The history library now prints a meaningful error message if the history + file isn't a regular file. + +r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace + a multibyte character. + +s. The key binding code now attempts to remove a keymap if a key unbinding + leaves it empty. + +t. Fixed a line-wrapping issue that caused problems for some terminal + emulators. + +u. If there is a key bound to the tty's VDISCARD special character, readline + disables VDISCARD while it is active. + +v. Fixed a problem with exiting bracketed paste mode on terminals that assume + the bracketed paste mode character sequence contains visible characters. + +w. Fixed a bug that could cause a key binding command to refer to an + uninitialized variable. + +3. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signfies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +4. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-4.4-release, and the previous version, bash-4.4-rc2. @@ -21,7 +544,6 @@ e. Fixed several potential buffer overflow issues in the word expansion code. 3. New Features in Bash 4. New Features in Readline - ------------------------------------------------------------------------------ This document details the changes between this version, bash-4.4-rc2, and the previous version, bash-4.4-beta2. diff --git a/COMPAT b/COMPAT index 9959b962f..aa0019fa7 100644 --- a/COMPAT +++ b/COMPAT @@ -2,9 +2,9 @@ Compatibility with previous versions ==================================== This document details the incompatibilities between this version of bash, -bash-4.4, and the previous widely-available versions, bash-3.x (which is -still the `standard' version for Mac OS X), 4.1/4.2 (which are still -standard on a few Linux distributions), and bash-4.3, the current +bash-5.0, and the previous widely-available versions, bash-3.x (which is +still the `standard' version for Mac OS X), 4.2/4.3 (which are still +standard on a few Linux distributions), and bash-4.4, the current widely-available version. These were discovered by users of bash-2.x through 4.x, so this list is not comprehensive. Some of these incompatibilities occur between the current version and versions 2.0 and @@ -391,6 +391,11 @@ above. argument to `declare' or a similar builtin expands to a word that looks like a compound array assignment (e.g. declare w=$x where x='(foo)'). +60. Bash-5.0 only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting + BASH_ARGC and BASH_ARGV is available at compatibility levels less than + or equal to 44. + Shell Compatibility Level ========================= @@ -451,6 +456,11 @@ compat43 set continue loops in the calling context. Bash-4.4 and later reset the loop state to prevent this. +compat44 set + - the shell sets up the values used by BASH_ARGV and BASH_ARGC so + they can expand to the shell's positional parameters even if extended + debug mode is not enabled + ------------------------------------------------------------------------------- Copying and distribution of this file, with or without modification, diff --git a/CWRU/audit-patch b/CWRU/audit-patch deleted file mode 100644 index 3e14cccf6..000000000 --- a/CWRU/audit-patch +++ /dev/null @@ -1,339 +0,0 @@ -Date: Tue, 06 Feb 2007 16:06:58 -0500 -From: Steve Grubb -Subject: Re: bash and linux audit -To: chet.ramey@case.edu -Organization: Red Hat - -OK, I released audit 1.4 Sunday which has the logging function for user -commands. It produces audit events like this: - -type=USER_CMD msg=audit(01/30/2007 18:23:45.793:143) : user pid=22862 uid=root -auid=root subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023 -msg='cwd=/root/test dir cmd=ls -l (terminal=tty1 res=success)' - -diff -urp bash-3.2.orig/config-bot.h bash-3.2/config-bot.h ---- bash-3.2.orig/config-bot.h 2007-01-03 09:01:05.000000000 -0500 -+++ bash-3.2/config-bot.h 2007-01-20 11:59:23.000000000 -0500 -@@ -97,6 +97,11 @@ - # define RESTRICTED_SHELL_NAME "rbash" - #endif - -+/* If the shell is called by this name, it will become audited. */ -+#if defined (AUDIT_SHELL) -+# define AUDIT_SHELL_NAME "aubash" -+#endif -+ - /***********************************************************/ - /* Make sure feature defines have necessary prerequisites. */ - /***********************************************************/ -diff -urp bash-3.2.orig/config.h.in bash-3.2/config.h.in ---- bash-3.2.orig/config.h.in 2007-01-03 09:01:05.000000000 -0500 -+++ bash-3.2/config.h.in 2007-01-20 11:59:23.000000000 -0500 -@@ -81,6 +81,11 @@ - flag. */ - #undef RESTRICTED_SHELL - -+/* Define AUDIT_SHELL if you want the generated shell to audit all -+ actions performed by root account. The shell thus generated can become -+ audited by being run with the name "aubash". */ -+#undef AUDIT_SHELL -+ - /* Define DISABLED_BUILTINS if you want "builtin foo" to always run the - shell builtin "foo", even if it has been disabled with "enable -n foo". */ - #undef DISABLED_BUILTINS -diff -urp bash-3.2.orig/configure.in bash-3.2/configure.in ---- bash-3.2.orig/configure.in 2007-01-03 09:01:05.000000000 -0500 -+++ bash-3.2/configure.in 2007-01-20 11:59:23.000000000 -0500 -@@ -162,6 +162,7 @@ opt_history=yes - opt_bang_history=yes - opt_dirstack=yes - opt_restricted=yes -+opt_audit=yes - opt_process_subst=yes - opt_prompt_decoding=yes - opt_select=yes -@@ -195,8 +196,8 @@ dnl a minimal configuration turns everyt - dnl added individually - if test $opt_minimal_config = yes; then - opt_job_control=no opt_alias=no opt_readline=no -- opt_history=no opt_bang_history=no opt_dirstack=no -- opt_restricted=no opt_process_subst=no opt_prompt_decoding=no -+ opt_history=no opt_bang_history=no opt_dirstack=no opt_restricted=no -+ opt_audit=no opt_process_subst=no opt_prompt_decoding=no - opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no - opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no - opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no -@@ -227,6 +228,7 @@ AC_ARG_ENABLE(progcomp, AC_HELP_STRING([ - 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(audit, AC_HELP_STRING([--enable-audit], [enable an audited shell]), opt_audit=$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) -@@ -254,6 +256,10 @@ fi - if test $opt_restricted = yes; then - AC_DEFINE(RESTRICTED_SHELL) - fi -+if test $opt_audit = yes; then -+AC_DEFINE(AUDIT_SHELL) -+AUDIT_LIB='-laudit' -+fi - if test $opt_process_subst = yes; then - AC_DEFINE(PROCESS_SUBSTITUTION) - fi -@@ -355,6 +361,8 @@ AC_SUBST(HELPDIRDEFINE) - AC_SUBST(HELPINSTALL) - AC_SUBST(HELPSTRINGS) - -+AC_SUBST(AUDIT_LIB) -+ - echo "" - echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" - echo "" -diff -urp bash-3.2.orig/doc/bash.1 bash-3.2/doc/bash.1 ---- bash-3.2.orig/doc/bash.1 2007-01-03 09:01:05.000000000 -0500 -+++ bash-3.2/doc/bash.1 2007-01-20 11:59:23.000000000 -0500 -@@ -155,6 +155,12 @@ single-character options to be recognize - .PP - .PD 0 - .TP -+.B \-\-audit -+The shell logs all commands run by the root user (see -+.SM -+.B "AUDIT SHELL" -+below). -+.TP - .B \-\-debugger - Arrange for the debugger profile to be executed before the shell - starts. -@@ -8770,6 +8776,17 @@ turns off any restrictions in the shell - script. - .\" end of rbash.1 - .if \n(zY=1 .ig zY -+.SH "AUDIT SHELL" -+.zY -+.PP -+If -+.B bash -+is started with the name -+.BR aubash , -+or the -+.B \-\-audit -+option is supplied at invocation, the shell logs all commands issued by the root user to the audit system. -+.if \n(zY=1 .ig zY - .SH "SEE ALSO" - .PD 0 - .TP -diff -urp bash-3.2.orig/eval.c bash-3.2/eval.c ---- bash-3.2.orig/eval.c 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/eval.c 2007-01-20 11:59:23.000000000 -0500 -@@ -45,6 +45,11 @@ - # include "bashhist.h" - #endif - -+#if defined (AUDIT_SHELL) -+# include -+# include -+#endif -+ - extern int EOF_reached; - extern int indirection_level; - extern int posixly_correct; -@@ -58,6 +63,38 @@ extern int rpm_requires; - static void send_pwd_to_eterm __P((void)); - static sighandler alrm_catcher __P((int)); - -+#if defined (AUDIT_SHELL) -+static int audit_fd = -1; -+ -+static int -+audit_start () -+{ -+ audit_fd = audit_open (); -+ if (audit_fd < 0) -+ return -1; -+ else -+ return 0; -+} -+ -+static int -+audit (cmd, result) -+ char *cmd; -+ int result; -+{ -+ int rc; -+ -+ if (audit_fd < 0) -+ return 0; -+ -+ rc = audit_log_user_command (audit_fd, AUDIT_USER_CMD, cmd, -+ NULL, !result); -+ close (audit_fd); -+ audit_fd = -1; -+ return rc; -+} -+#endif -+ -+ - /* Read and execute commands until EOF is reached. This assumes that - the input source has already been initialized. */ - int -@@ -145,7 +182,25 @@ reader_loop () - - executing = 1; - stdin_redir = 0; -+#if defined (AUDIT_SHELL) -+ if (audited && interactive_shell && getuid () == 0) -+ { -+ if (audit_start () < 0) -+ { -+ if (errno != EINVAL && errno != EPROTONOSUPPORT && -+ errno != EAFNOSUPPORT) -+ return EXECUTION_FAILURE; -+ } -+ } -+#endif -+ - execute_command (current_command); -+#if defined (AUDIT_SHELL) -+ { -+ extern char *shell_input_line; -+ audit (shell_input_line, last_command_exit_value); -+ } -+#endif - - exec_done: - QUIT; -diff -urp bash-3.2.orig/externs.h bash-3.2/externs.h ---- bash-3.2.orig/externs.h 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/externs.h 2007-01-20 12:05:00.000000000 -0500 -@@ -77,6 +77,10 @@ extern int shell_is_restricted __P((char - extern int maybe_make_restricted __P((char *)); - #endif - -+#if defined (AUDIT_SHELL) -+extern int maybe_make_audited __P((char *)); -+#endif -+ - extern void unset_bash_input __P((int)); - extern void get_current_user_info __P((void)); - -diff -urp bash-3.2.orig/flags.c bash-3.2/flags.c ---- bash-3.2.orig/flags.c 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/flags.c 2007-01-20 11:59:23.000000000 -0500 -@@ -142,6 +142,12 @@ int restricted = 0; /* currently restri - int restricted_shell = 0; /* shell was started in restricted mode. */ - #endif /* RESTRICTED_SHELL */ - -+#if defined (AUDIT_SHELL) -+/* Non-zero means that this shell is audited. An audited shell records -+ each command that the root user executes. */ -+int audited = 0; /* shell was started in audit mode. */ -+#endif /* AUDIT_SHELL */ -+ - /* Non-zero means that this shell is running in `privileged' mode. This - is required if the shell is to run setuid. If the `-p' option is - not supplied at startup, and the real and effective uids or gids -diff -urp bash-3.2.orig/flags.h bash-3.2/flags.h ---- bash-3.2.orig/flags.h 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/flags.h 2007-01-20 11:59:23.000000000 -0500 -@@ -66,6 +66,10 @@ extern int restricted; - extern int restricted_shell; - #endif /* RESTRICTED_SHELL */ - -+#if defined (AUDIT_SHELL) -+extern int audited; -+#endif /* AUDIT_SHELL */ -+ - extern int *find_flag __P((int)); - extern int change_flag __P((int, int)); - extern char *which_set_flags __P((void)); -Only in bash-3.2: .made -diff -urp bash-3.2.orig/Makefile.in bash-3.2/Makefile.in ---- bash-3.2.orig/Makefile.in 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/Makefile.in 2007-01-20 11:59:23.000000000 -0500 -@@ -366,6 +366,8 @@ MALLOC_LIBRARY = @MALLOC_LIBRARY@ - MALLOC_LDFLAGS = @MALLOC_LDFLAGS@ - MALLOC_DEP = @MALLOC_DEP@ - -+AUDIT_LIB = @AUDIT_LIB@ -+ - ALLOC_HEADERS = $(ALLOC_LIBSRC)/getpagesize.h $(ALLOC_LIBSRC)/shmalloc.h \ - $(ALLOC_LIBSRC)/imalloc.h $(ALLOC_LIBSRC)/mstats.h \ - $(ALLOC_LIBSRC)/table.h $(ALLOC_LIBSRC)/watch.h -@@ -386,7 +388,7 @@ BASHINCFILES = $(BASHINCDIR)/posixstat. - $(BASHINCDIR)/ocache.h - - LIBRARIES = $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) $(GLOB_LIB) \ -- $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) -+ $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LOCAL_LIBS) $(AUDIT_LIB) - - LIBDEP = $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) $(GLOB_DEP) \ - $(TILDE_DEP) $(MALLOC_DEP) -diff -urp bash-3.2.orig/parse.y bash-3.2/parse.y ---- bash-3.2.orig/parse.y 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/parse.y 2007-01-20 11:59:23.000000000 -0500 -@@ -258,7 +258,7 @@ int need_here_doc; - - /* Where shell input comes from. History expansion is performed on each - line when the shell is interactive. */ --static char *shell_input_line = (char *)NULL; -+char *shell_input_line = (char *)NULL; - static int shell_input_line_index; - static int shell_input_line_size; /* Amount allocated for shell_input_line. */ - static int shell_input_line_len; /* strlen (shell_input_line) */ -diff -urp bash-3.2.orig/shell.c bash-3.2/shell.c ---- bash-3.2.orig/shell.c 2007-01-03 09:01:06.000000000 -0500 -+++ bash-3.2/shell.c 2007-01-20 12:04:23.000000000 -0500 -@@ -240,6 +240,9 @@ struct { - #if defined (RESTRICTED_SHELL) - { "restricted", Int, &restricted, (char **)0x0 }, - #endif -+#if defined (AUDIT_SHELL) -+ { "audit", Int, &audited, (char **)0x0 }, -+#endif - { "verbose", Int, &echo_input_at_read, (char **)0x0 }, - { "version", Int, &do_version, (char **)0x0 }, - { "wordexp", Int, &wordexp_only, (char **)0x0 }, -@@ -644,6 +647,10 @@ main (argc, argv, env) - maybe_make_restricted (shell_name); - #endif /* RESTRICTED_SHELL */ - -+#if defined (AUDIT_SHELL) -+ maybe_make_audited (shell_name); -+#endif -+ - if (wordexp_only) - { - startup_state = 3; -@@ -1143,6 +1150,29 @@ maybe_make_restricted (name) - } - #endif /* RESTRICTED_SHELL */ - -+#if defined (AUDIT_SHELL) -+/* Perhaps make this shell an `audited' one, based on NAME. If the -+ basename of NAME is "aubash", then this shell is audited. The -+ name of the audited shell is a configurable option, see config.h. -+ In an audited shell, all actions performed by root will be logged -+ to the audit system. -+ Do this also if `audited' is already set to 1 maybe the shell was -+ started with --audit. */ -+int -+maybe_make_audited (name) -+ char *name; -+{ -+ char *temp; -+ -+ temp = base_pathname (name); -+ if (*temp == '-') -+ temp++; -+ if (audited || (STREQ (temp, AUDIT_SHELL_NAME))) -+ audited = 1; -+ return (audited); -+} -+#endif /* AUDIT_SHELL */ -+ - /* Fetch the current set of uids and gids and return 1 if we're running - setuid or setgid. */ - static int diff --git a/CWRU/changelog b/CWRU/changelog index f37159d8b..61e07c0dc 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -11678,4 +11678,3714 @@ subst.c - skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated embedded "`", $(, ${ don't cause out-of-bounds reads +parse.y + - parse_comsub: when parsing a here-document delimiter, make sure we + don't try to use `nestret' after freeing it. Fixes bug reported by + Franco Costantini + [bash-4.4 frozen] + + 9/10 + ---- +trap.c + - run_debug_trap: only give the terminal to pipeline_pgrp if + subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE. + Fixes bug reported by Matthew Giassa + +execute_cmd.c + - execute_simple_command: if user_subshell is set, check and set + SUBSHELL_ASYNC if asynchronous is set as well as setting + SUBSHELL_PAREN + + 9/17 + ---- +builtins/common.c + - display_signal_list: if 0 is supplied as an argument to kill -l, + display a signal-out-of-range error. Fixes bug reported by + Martijn Dekker + + 9/18 + ---- +print_cmd.c + - print_heredoc_bodies: take a list of redirections, all here documents, + and print the here-document bodies including the ending delimiter, + followed by a newline + - print_redirection_list: print the heredoc headers the first time + through the list of redirections so we print them in the same left- + to-right order they're supplied; print the bodies and delimiters with + print_heredoc_bodies after we print all the redirections if we're + not printing a list of commands (printing_connection == 0). Fix for + problem reported by Isabella Parakiss + - print_deferred_heredocs: don't print heredoc headers, since they're + now printed in print_redirection_list + - print_deferred_heredocs: use print_heredoc_bodies + + 9/20 + ---- +builtins/mapfile.def + - readarray: update usage synopsis to include -d delim. Report and + fix from jhankins@homewood.k12.al.us + +test.c + - test_binop: if op[0] == '-', make sure op[1] != 0 before checking + op[2] or op[3]. Fixes out-of-bounds read reported by Franco + Costantini + +parse.y + - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0 + before checking word[2] and calling test_unop. Fixes out-of-bounds + read reported by Franco Costantini + - make sure to check all instances of the return value of the + simple_command production before trying to hook redirections onto it, + since it can potentially return NULL. + Reported by Franco Costantini + + 9/21 + ---- +parse.y + - token_is_assignment: make sure to check that the return value from + assignment() finds the `=' we just added at index I to avoid false + positives from g=g=g=g=g=g=(). Reported by Franco Costantini + + + 9/22 + ---- +parse.y + - token_is_assignment: if we're not using the bash malloc (which has + guard bytes after the requested allocation size), use a new + buffer so we can make sure it's big enough to hold the current + token and at least two additional characters. Reported by + Franco Costantini + + 9/23 + ---- +execute_command.c + - execute_in_subshell: call without_job_control for both job control + and non-job-control builds to avoid waiting for last_made_pid + inherited from parent shell. Related to fix from 8/4 to + initialize_subshell. Fixes bug reported by Martijn Dekker + + +builtins/declare.def + - local_builtin: allow `local --help' to work even when not executing + a function. Suggestion from Norm Abramovitz + + 9/25 + ---- +builtins/printf.def + - bexpand: if passed a null or empty string, return a newly-allocated + empty string (so the return value can always be freed) instead of + NULL. + - printstr: if passed a null string, treat it as if it were an empty + string so any precision or fieldwidth arguments are handled + correctly. Report from isabella parakiss + +subst.c + - skip_matched_pair: make the flags argument of 1 affect whether or + not backslash can quote characters in the string, so it affects + all quoting mechanisms + +arrayfunc.c + - unbind_array_element: now takes a third (flags) argument; flags&1 + means to not expand an associative array index. This is only called + from a shell builtin context, which means the argument should have + already undergone word expansion, so it should be ok. Will still + be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid + globbing + - valid_array_reference: pass second flags argument to skipsubscript; + still set to 0 by all callers + +arrayfunc.h + - unbind_array_element: updated prototype + +builtins/set.def + - unset_builtin: add third argument of 1 to unbind_array_element calls + [TEMPORARILY DISABLED] + - unset_builtin: call valid_array_reference with second arg of 1 to + handle unmatched pairs of quotes and [/] + +array.c + - array_reference: optimize access locality as well as sequential + access by adding ability to start from last-accessed element and move + backwards or forwards depending on the desired index. Inspired by + report from Tom McCurdy and followup from + Christian Franke + +variables.c + - all_array_variables: include associative arrays, not just indexed + arrays. Reported by Grisha Levit + +execute_cmd.c + - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK), + decrement the shell level so we don't end up incrementing it twice. + We should decrement the shell level for an implicit exec like an + explicit one. Reported by Stephane Chazelas + + +builtins/exec.def + - exec_builtin: don't bother to decrement the shell level if we are + already in a `(command)' subshell. Reported by Stephane Chazelas + + +lib/readline/macro.c + - macro_level: count of macro nesting level, maintained by + _rl_push_executing_macro and _rl_pop_executing macro + - _rl_with_macro_input: if current nesting level exceeds + MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal + and return to the top level. Reported by Christian Klomp + + +lib/readine/history.c + - add_history: if allocating the history list for the first time, + make sure the max history list size isn't so large that it will + cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE + (8192). Reported by Sean Zha + +jobs.c + - wait_for: if a foreground job with job control enabled is killed by a + SIGINT and sourcelevel != 0, act as if we received the SIGINT so the + file sourcing can be terminated. Reported by PePa + + + 9/26 + ---- +subst.c + - read_comsub: only warn once for null bytes in command substitution + output, instead of once for every null byte + +arrayfunc.c + - array_variable_part: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: now takes a `flags' argument; changed all callers + to initially pass 0 + - array_variable_name: pass `flags' argument to skipsubscript instead + of just passing 0 + +arrayfunc.h + - array_variable_{name,part}: added new argument to prototypes + + 9/29 + ---- +bashline.c + - bash_directory_completion_hook: don't bother to try and expand a + ${ or $( that isn't complete; expand_prompt_string will complain. + Fixes reports from John Passaro and + Valentin Bajrami + +lib/readline/history.c + - _hs_append_history_line: use a strategy that attempts to avoid + realloc copying memory to a newly-allocated block if the history + line we're appending to gets `too long' (currently 256 bytes). + We reallocate in powers of 2 starting at 512, and rely on realloc + not allocating a new block and copying into it if the size is the + same as the last call to realloc. Addresses issue raised by + Hubert Schmid + +trap.h + - check_signals: new extern declaration + - trapped_signal_received: new extern declaration + +builtins/read.def + - read_builtin: if one of the zread* functions returns < 0 (which + usually only happens in Posix mode), make sure we call check_signals() + before eventually calling run_pending_traps() because zread() isn't + going to call it + - include trap.h for correct extern functions and variable declarations + +lib/sh/zread.c + - zread: if executing a builtin, call check_signals_and_traps() for + backwards compatibility. If not, call check_signals() only, because + we don't want to run traps during, for instance, reading command + substitution output. Fixes race condition bug reported by Luiz Angelo + Daros de Luca + + 9/30 + ---- +subst.c + - command_substitute: reset parse_and_execute_level to 0 in the child + process, since it's independent of the other parse_and_execute + calls. Adds command substitution inside other parse_and_execute + calls optimizations to suppress forks, as suggested by + Martijn Dekker + + 10/3 + ---- +configure.ac + - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted + if the shobj-conf script isn't run. Fixes `make install' bug with + a minimal config reported by Andrew Tomazos + + 10/5 + ---- +support/shobj-conf + - darwin: set compatibility_version for a shared build of the readline + library (the standalone readline distribution shares this file) to + $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn + + + 10/6 + ---- +array.h + - array_first_index: new convenience define + +array.c + - ADD_AFTER: new define, complement of ADD_BEFORE + - UNSET_LASTREF: now takes an array as an argument, prepping for move + of lastref pointer into the array struct + - array_insert: check whether we are adding at the beginning of the + array and take a fast path if so + - array_insert: use same strategy as array_reference to find the place + to insert, starting from the last-referenced element and moving + forward or back from there; use ADD_AFTER if moving backward + - array_insert: if replacing an existing element, just replace the + value with new->value instead of the entire element + - array_reference: short-circuit quickly if looking for an element + before the first assigned index + - array_reference: if we don't find the element, leave lastref pointing + to the closest element under the assumption we will be assigning or + looking for something close + - array_reference: take advantage of ordered indexes to short-circuit + when looking for element that is not set + + 10/7 + ---- +array.c + - array_remove: short-circuit if asked to remove index after max + index or before first index + + 10/10 + ----- +lib/malloc/malloc.c + - internal_realloc: if we are requesting reallocation to the same size + as the block's current size, short-circuit and return `mem' right + after doing bounds check + - internal_realloc: if we are reducing the size of an allocation, and + the new size fits in the next lower bin, just keep the same block + and adjust the size, so we can avoid some copies + +parse.y + - set_line_mbstate: keep track of the allocated size of + shell_input_line_property, only request reallocation if the size + increases, but don't let it get too big + + 10/11 + ----- +jobs.c + - wait_for_background_pids: make sure we wait for pid in + last_procsub_child since it's not found in any job -- still needs + more work to wait for multiple process substitutions + +subst.c + - process_substitute: if make_child fails, make sure we call + restore_pipeline to undo the previous save_pipeline() + + 10/15 + ----- +subst.c + - process_substitute,command_substitute: leave subshell_level (reflected + as $BASH_SUBSHELL) intact for any exit trap instead of decrementing + it. Suggested by Martijn Dekker + +builtins/evalstring.c + - optimize_subshell_command: new function, framework for optimizing + out forks for command that have already forked and are executing + in a subshell. Not used yet + +expr.c + - readtok: if we have a post-increment or post-decrement, and the + previous token is not a string, check whether the previous token is + a number that results from a pre-increment or pre-decrement, and + make that an error. Report from Conrad Hoffmann + + 10/16 + ----- +aclocal.m4 + - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE + with existing set of preprocessor defines, so it can work when + cross-compiling. Suggested by Felix Janda + + 10/19 + ----- +variables.c + - get_bashpid: BASHPID is no longer readonly; assignments to it are + just ignored. + +doc/{bash.1,bashref.texi} + - BASHPID: note that assignments are ignored and unsetting BASHPID + causes it to lose its special properties + + 10/28 + ----- +builtins/pushd.def + - popd_builtin: make sure to check the normalized stack offset + (i.e., negatives counting back from the end of the stack) is within + bounds before trying to free that stack entry. Report from + Fernando Muñoz + +lib/readline/histfile.c + - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from + J. Peter Mugaas + +lib/readline/colors.c + - S_ISDIR: add define if missing + - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined. + Fixes for MinGW{64,32} from J. Peter Mugaas + +bashhist.c + - current_command_line_comment: set to the most recent line in a + possibly multi-line command that contains a shell comment; set in + maybe_add_history and bash_add_history to either the current + command number or -2 + - maybe_add_history: set current_command_line_comment for first line + of command + - bash_add_history: chars_to_add set to "\n" if the current command line + is one greater than the previous line containing a comment + (current_command_line_comment). Fixes complaint from back in + January, 2016 from Dave Rutherford + +array.h + - lastref: move last-referenced pointer into each array struct, so all + arrays can have reference locality + +array.c + - array_create: set lastref element to 0 + - array_copy: if copying the lastref in array a, set the new lastref + in the copy to the same element + - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF, + UNSET_LASTREF: change to use new array `lastref' member + +pathexp.c + - quote_string_for_globbing: if quoting for a regexp, make sure to + skip and copy a leading `^' in a bracket expression, and skip and + copy a subsequent `]' (after an optional `^'), so that leading + bracket doesn't close the bracket expression. Report from + Stephane Chazelas + + 10/29 + ----- +subst.c + - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for + $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes + - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${, + process substitution + - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for + $( + - extract_dollar_brace_string: use skipsubscript to skip over the + array subscript in ${var[sub]} (non-quoted case uses string_extract, + which already uses skipsubscript). Tagged for bash-5.0 + + 10/30 + ----- +variables.c + - EPOCHSECONDS: new dynamic variable, time in seconds since Unix + epoch; assignments are ignored. Can be used on systems where + strftime() doesn't support '%s' + - EPOCHREALTIME: new dynamic variable, time in seconds since Unix + epoch with microsecond granularity + +doc/{bash.1,bashref.texi} + - EPOCHSECONDS documentation + - EPOCHREALTIME documentation + +execute_cmd.c + - decpoint: moved to locale.c, renamed locale_decpoint; changed callers + +{bashintl,externs}.h + - locale_decpoint: extern declaration or #define if support for + localeconv() not there + + 10/31 + ----- +lib/malloc/malloc.c + - posix_memalign: add new posix-mandated interface + +examples/loadables/rm.c + - rm: minimal loadable builtin, removes files and directories, only + handles -r and -f options. Original from Tim Ruehsen + , heavily rewritten for inclusion as loadable + +examples/loadables/Makefile.in + - rm: add rules to build rm as one of the `other' targets + +examples/loadables/stat.c + - stat: new loadable builtin that takes a filename and loads the info + returned by stat(2) into an associative array specified by the -A + argument (default STAT) + + 11/1 + ---- +variables.c + - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets + $0 on assignment. From a suggestion from Rocky Bernstein + a few years ago + +doc/{bash.1,bashref.texi} + - BASH_ARGV0: document + + 11/2 + ---- +lib/glob/sm_loop.c + - parse_collsym: make sure to not return an out-of-bounds read if a + collating symbol is unterminated. Fixes OOB read reported by + Jerzy Kramarz + - brackmatch: after incrementing p, before checking whether it's a + character range, check whether *p was NULL before the increment + and short-circuit the bracket expression if it is + +jobs.c + - discard_last_procsub_child: new function, safely discards + last_procsub_child and sets it to NULL + +subst.c + - process_substitute: call discard_last_procsub_child instead of + calling discard_pipeline directly. Fixes bug reported by + Christian Weisgerber + + 11/3 + ---- +shell.h + - EX_DISKFALLBACK: new special return status available to builtins; + means to attempt to execute a disk command with the same name as + the builtin + +examples/loadables/rm.c + - if we see the -i option, return EX_DISKFALLBACK + +execute_cmd.c + - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, + try running execute_disk_command instead + +bashline.c + - shell_expand_line: use expand_word to expand the readline line + buffer, which allows us to pass flags with the word. If a numeric + argument is supplied, do not perform quote removal (pass + Q_HERE_DOCUMENT since here-doc quoting does the right thing) and + do not perform command or process subsitution. From a suggestion + by Dabrien 'Dabe' Murphy based on an old bug-bash + discussion + +subst.c + - expand_word_internal: note that we have added a quoted IFS char to + istring by setting sentinel has_quoted_ifs. Usually we only add + one if we are not going to be performing word splitting, but we + will not perform word splitting if there's no expansion, so we need + to take care of that case + - expand_word_internal: when performing final word split, if there are + no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs() + to remove any quoted ifs characters we added while processing + - remove_quoted_ifs: new function, removes CTLESC chars preceding + (single-byte) chars in IFS. Used when we are not performing word + splitting. Fixes bug reported by Martijn Dekker + + 11/4 + ---- +lib/readline/macro.c + - _rl_peek_macro_key: return the next character from the current + keyboard macro; the next character from the `next' keyboard macro, + if there is one, if at the end of the current macro; or 0 to + indicate that we are at the end of a keyboard macro sequence + +lib/readline/rlprivate.h + - _rl_peek_macro_key: extern declaration + +lib/readline/readline.c + - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro, + which should cause the keyboard timeout for ESC to kick in. The + previous test didn't run the timeout code if executing from a macro, + even if we had read the last character of the macro. Fixes bug + reported by Clark Wang + +lib/glob/sm_loop.c + - GMATCH: allow trailing backslash in pattern to explicitly match a + backslash that is the last character in the string. Bug report from + Stephane Chazelas + + 11/5 + ---- +builtins/common.c + - display_signal_list: if displaying a signal name corresponding to an + exit status > 128, don't display the SIG prefix at all. Old code + made displaying the SIG prefix dependent on JOB_CONTROL define. + Report and fix from Martijn Dekker + +execute_cmd.c + - execute_subshell_builtin_or_function: call without_job_control even + if JOB_CONTROL is not defined. Similar to fix from 9/23. + Report from Martijn Dekker + +execute_cmd.c + - execute_simple_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined + - execute_command_internal: free memory allocated and passed to + make_child in the child process created to run a () subshell or a + compound command within a pipeline if JOB_CONTROL is defined + - execute_coproc: free memory allocated and passed to make_child in + the child process if JOB_CONTROL is defined + - execute_disk_command: free memory allocated and passed to + make_child in the child process if JOB_CONTROL is defined. This + series of fixes is the result of reports from + Eduardo A. Bustamante López + + 11/6 + ---- +lib/sh/unicode.c + - u32toutf16: fix to prevent outputting broken surrogate pairs for + Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively). + Report and fix from Koichi MURASE + +builtins/trap.def + - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler + to sigint_sighandler if the shell is interactive and sourcing a + file (interactive_shell && sourcelevel) or running a trap + (interactive_shell && running_trap) even if it's not currently + interactive. Report from Martijn Dekker + +builtins/read.def + - check for and read multibyte characters in all cases, not just when + we are reading a specific number of characters, as long as + mb_cur_max > 1 + +subst.c + - expand_word_internal: some improvements to code that converts istring + into a WORD_LIST * to avoid multiple allocations and copies of + istring, which is already malloc'ed memory -- reduce number of malloc + and free calls + +test.c + - unary_test: make sure if we test -v array[@] or array[*] that we + free the return value from array_value + + 11/8 + ---- +expr.c + - expcond: make sure to set `noeval' before reading tokens depending on + the result of the conditional test, since readtok() can evaluate + identifiers (and recursively those containing expressions). Report + and fix from Koichi MURASE + +builtins/evalstring.c + - should_suppress_fork: make sure to check for traps on EXIT and + ERR, since any_signals_trapped() only checks for `real' signals, + not the fake shell ones. Fixes bug reported by Werner Fink + + - optimize_subshell_command: ditto + + 11/9 + ---- +eval.c + - reader_loop: change so that we don't reset the SIGINT handler every + time through the command loop in an interactive shell if the signal + is trapped (as the comment noted). Reported by Report from Martijn + Dekker + +subst.c + - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and + restore this_command_name while temporarily setting it for use in + error messages. Fixes use-after-free error reported by + Jerzy Kramarz + - string_extract_verbatim: make sure when we increment i by 2 due to + a CTLESC or CTLESC-CTLNUL that we don't read past the end of the + string. This can happen if the string ends with an odd number of + CTLESC chars. Fixes oob-read error reported by + Jerzy Kramarz + + 11/11 + ----- +configure.ac,aclocal.m4 + - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just + a stub function like on several Linux distributions + +lib/malloc/malloc.c + - malloc_usable_size: return the maximum number of bytes available for + a particular memory allocation (size of block allocated for it) + + 11/12 + ----- +configure.ac + - changes to make --enable-profiling work on Linux (-pg, no static link, + no -static in LDFLAGS) + +Makefile.in + - changes to make --enable-profiling work on Linux (take + ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add + BASE_LDFLAGS define that doesn't include -pg or -static; use + BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to + LDFLAGS) + +tests/run-gprof + - changes to make profiling test suite with gprof work on Linux (set + GMON_OUT_PREFIX to handle multiple profiled processes per test; + change default filename to gmon.out from bash.gmon; look for + gprof output files in ${TMPDIR} instead of /tmp; handle multiple + profiling files starting with $GMON_OUT_PREFIX) + +locale.c + - locale_isutf8: use locale_charset() if it's available and nl_langinfo + isn't + - locale_isutf8: add code to parse a locale specification and determine + whether the encoding is UTF-8 (or utf8) in the absence of + nl_langinfo and locale_charset + - set_default_locale: make sure to set locale_utf8locale early on + - locale_utf8locale: set via call to locale_isutf8 wherever LANG, + LC_ALL, or LC_CTYPE is set + + 11/13 + ----- +lib/readline/display.c + - rl_redisplay: handle report of potential integer overflow in + horizontal display mode from Mateusz Lenik + +lib/sh/mbschr.c + - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking + for an ASCII character, use (essentially) strchr as a shortcut + +lib/sh/shmbchar.c + - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement + functions (should also be able to use utf8_mblen in subst.c: + string_extract_verbatim) + - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar + - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not + used if earlier shortcut taken) + +lib/sh/unicode.c + - u32cconv: don't use nl_langinfo early to call u32toutf8() + - u32cconv: use locale_utf8locale to set utf8locale + - u32cconv: when initializing (u32init == 0), use locale_charset, then + nl_langinfo, then stub_charset to determine the charset + - u32cconv: even if we don't have iconv, if locale_utf8locale is non- + zero, return u32toutf8 + + 11/15 + ----- +lib/readline/nls.c + - _rl_init_locale: new function, split off code that determines current + locale from _rl_init_eightbit, use it to set _rl_utf8locale + +lib/readiline/rlprivate.h + - _rl_init_locale: new extern declaration + +lib/readline/readline.c + - rl_initialize: if not initializing everything the first time, call + _rl_init_locale to check current locale and set _rl_utf8locale + +lib/readline/text.c + - _rl_insert_char: optimize cases where we are inserting a single-byte + character in a locale with multibyte characters + - _rl_insert_char: check whether character is single byte if we know + we are in a UTF-8 locale, optimize single-byte case to avoid calls + to mbrtowc and memmove/memcpy + +lib/readline/mbutil.c + - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the + current character does not have the eighth bit set ((c & 0x80) == 0), + return that char without bothering to call mbrtowc + - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8 + locale and the current character is not a multibyte character + - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that + to avoid calls to mbrtowc + +lib/readline/display.c + - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrlen and mbrtowc + - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid + calls to mbrtowc + + 11/17 + ----- +lib/readline/histlib.h + - PATTERN_SEARCH: new flag for history search interfaces, means to + search for a pattern as Posix specifies + +lib/readline/histsearch.c + - history_search_internal: now takes a `flags' argument instead of just + an `anchored' argument to accommodate PATTERN_SEARCH + - _hs_history_patsearch: new internal interface to use when flags + specify PATTERN_SEARCH + +lib/readline/rlprivate.h + - SF_PATTERN: new flag for non-incremental search contexts, means to + treat search string as a pattern (maps to PATTERN_SEARCH) + +lib/readline/search.c + - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN + - noninc_search_from_pos: takes an additional `flags' argument for + SF_PATTERN + - noninc_dosearch: pass flags argument through to noninc_search_from_pos + - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used + to invoke the search) is `?' or `/', add SF_PATTERN to the flags + to conform to Posix spec for vi-mode editing + - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a + pattern search, pass SF_PATTERN to noninc_search_from_pos + - rl_noninc_forward_search_again: if in vi command mode and key == `N', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_noninc_reverse_search_again: if in vi command mode and key == `n', + make sure flags arg passed to noninc_dosearch includes SF_PATTERN + - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos + + 11/18 + ----- +lib/readline/search.c + - noninc_search_from_pos: takes a new argument, a pointer to int where + it stores the offset of the match in the history line (if non-NULL), + modified callers + - rl_history_search_internal: pass newcol pointer to + noninc_search_from_pos to avoid having to recompute the match offset + in the matching history entry + +config.h.in + - define HAVE_FNMATCH if we have the fnmatch function (configure was + already checking for it) + +lib/readline/histsearch.c + - _hs_history_patsearch: transform the pattern into one ending in a + `*' to avoid having to perform multiple match attempts from each + index in the history line + - history_search_internal: changes to handle pattern matching if + PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This + makes vi-mode history searching treat the user-specified search + string as an fnmatch pattern, as Posix requires. Fixes issue + reported by + + 11/19 + ----- +builtins/shopt.def + - shopt_enable_hostname_completion: only declare this if READLINE + defined, since that's the only time it's used. Reported by + isabella parakiss + + 11/20 + ----- +builtins/common.c + - display_signal_list: make `kill -l 0' print `EXIT', modifying change + from 9/17 + + 11/21 + ----- +subst.c + - expand_word_internal: when the shell encounters a backslash as the + last character of the string, don't try to add a '\'0' to the end + of the string if the string is quoted, just add a <\> and + skip to the end of string processing. Fixes oob-read error + reported by Jerzy Kramarz + +test.c + - two_arguments: check argv[pos][1] before checking argv[pos][2] when + looking for a unary argument. Fixes oob-read error on single `-' + in unary operator position reported by Jerzy Kramarz + + - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. + Fixes oob-read error reported by Jerzy Kramarz + +subst.c + - command_substitute: now takes additional flags argument, changed one + caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers + pass 0 + - command_substitute: pass through flags argument to read_comsub + - read_comsub: now takes additional new flags argument to indicate + whether or not the word is in a context where word splitting will + eventually be performed + - read_comsub: if we are running in a context where word splitting + will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is + in $IFS, add a CTLESC to make sure it gets through a round of + dequoting + + 11/23 + ----- +parse.y + - xparse_dolparen: since reset_parser frees the pushed string list, + and this is supposed to be a separate parsing context, we need to + save and restore pushed_string_list around the call to parse_string + and reset_parser. Fixes bug reported by Dan Douglas + + +bashhist.h + - HISTEXPAND_DEFAULT: default value of history_expansion, moved here + from flags.c + +flags.[ch] + - histexp_flag: new variable, this is what set -H/set -o histexpand + sets; history_expansion set to value of this variable; defaults to 0 + - history_expansion: now set to HISTEXPAND_DEFAULT + +bashhist.c + - bash_history_reinit: if interact == 0, set history_expansion to the + value of histexp_flag, to allow -H option to enable history + expansion + - bash_history_reinit: if interact == 0, make sure + history_expansion_inhibited is set opposite of histexp_flag, so + enabling history expansion with -H invocation option turns off + inhibited expansion. If interactive shell, we turn it off so + history_expansion controls whether or not history expansion takes + place. In practice, this function is always called with interact == 0, + and -c command still doesn't perform history expansion + +shell.c + - init_interactive: make sure histexp_flag and history_expansion are + identical in an interactive shell; allows both -H/+H option and + default compilation options (HISTEXPAND_DEFAULT) to work + + 11/24 + ----- +subst.c + - get_word_from_string: take advantage of the fact that SEPARATORS is + always a (possibly local) copy of IFS, so build a local charmap of + separators and use it instead of the (cached and possibly stale) + ifs_cmap map and isifs macro. Fixes bug with -N stripping leading + whitespace reported by Clark Wang + + 11/25 + ----- +builtins/read.def + - read_builtin: make `i' volatile, since auto variables are technically + undefined after a longjmp, and a timeout on SIGALRM causes one. + Fix suggested by Dmitry Goncharov + + 11/27 + ----- +parse.y + - shell_getc: if we are reading input from a string, and we get the + ending '\0', and we are not expanding an alias, return EOF right + away. It might be an eval'ed string that has a syntax error. + Fixes bug reported by Dan Douglas + + 11/28 + ----- +subst.c + - expand_word_internal: if we're expanding a quoted string containing + a tilde as the first character of a word, only expand the tilde if + we're expanding an array subscript (Q_ARRAYSUB), not if we're + expanding any arithmetic expression (Q_ARITH). This fixes a + backwards compatibility issue with expressions like ~0 reported by + Bize Ma + +subst.c + - parameter_brace_expand_indir: if the variable is not special and + the indirect variable is unset (!variable where variable is unset), + report an error. This is a slight incompatibility with previous + versions, which did not differentiate between indirecting an unset + variable and an indirect expansion resulting in an unset variable. + Fixes omission reported by otenba@protonmail.com + + 11/30 + ----- +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - do-uppercase-version: since this doesn't actually exist, replace it + with do-lowercase-version, with the caveat that do-lowercase-version + results in undefined behavior if bound to a character that's + already lowercase. Suggested by Branden Robinson + + +lib/readline/doc/rluser.texi + - history-substring-search-forward: was misspelled as "substr-search"; + ditto for search-backward + +doc/bash.1 + - history-substring-search-{backward,forward}: add documentation, text + straight from readline.3 + +jobs.c + - initialize_job_control: if the terminal's process group is valid, + but the shell is not the foreground process, check for terminating + signals (like SIGHUP, which the kernel would send if the process + group were orphaned) during the loop where we try to stop the shell + if it's not in the foreground. Not a perfect solution; the kernel + might not send SIGHUP + + 12/1 + ---- +jobs.c + - initialize_job_control: only go through the SIGTTIN loop 16 times at + most before deciding we're in the background and probably a member of + an orphaned process group; set original_pgrp to the terminal's pgrp + (so the eventual give_terminal_to doesn't leave the terminal in the + wrong pgrp); and bail on job control initialization + +tests/run-all + - unset SHELLOPTS to avoid its options `polluting' the test + environment. Suggestion from Vladimir Marek + + +tests/execscript + - use $PWD/exec8.sub to protect against someone who has a cd command + in his bashrc. Report from Vladimir Marek + + + 12/2 + ---- +shell.c + - open_shell_script: call end_job_control before exiting the shell in + case we were run as `bash -i script' and there is a problem with + executing `script'. If we don't, the terminal ends up in the wrong + process group. Fix from Clark Wang + + 12/3 + ---- +parse.y + - read_comsub: if we look for a character following a `<' and it's + not `<' (indicating that we don't have to read a here-document), + make sure we push that character back and go through the loop again + so we note the right word start location. Fixes bug reported by + parasite parasite <42parasite@gmail.com> + +subst.c + - parameter_brace_expand_indir: clean up checks for unset variables to + minimize incompatibilities with previous versions + + 12/5 + ---- +lib/readline/history.c + - add_history: don't update history_length until all of the updates to + the_history are complete, so history_length is always consistent. + Report and fix from Hong Cho + +bashline.c + - bash_backward_shellword: fix to work better at the end of the line, + with multiple trailing whitespace characters. Inspired by report + from Kirill Timofeev + +Makefile.in + - bashbug: use `^' as the sed delimiter instead of `%'; some compilers + use `%' in CFLAGS. Report from Vladimir Marek + + + 12/6 + ---- +test.c + - test_unop: make sure op[1] != 0 before testing op[2] + - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes + oob-read reported by Jerzy Kramarz + + 12/7 + ---- +lib/glob/glob.c + - glob_filename: assign the return value of realloc (results, ...) to + a temp pointer, so if realloc returns NULL, we make sure we free + results. Report from Kirill Timofeev + + 12/12 + ----- +lib/sh/shquote.c + - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte + characters that are in the current locale's character class + +builtins/printf.def + - printf_builtin: when processing the `%q' format, make sure to + backslash quote all characters by making sure that FLAGS + passed to sh_backslash_quote includes 2. Fixes issue for certain + iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a + non-breaking space. Report from Stephane Chazelas + + +lib/sh/eaccess.c + - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn + it into a stat on file descriptor N, as if /dev/fd were not + available. This is the case on some old versions of SunOS. Report + and patch from Dmitry Goncharov + +config.h.in + - DEV_FD_STAT_BROKEN: add define + +configure.ac + - --enable-dev-fd-stat-broken: new command-line option, defines + DEV_FD_STAT_BROKEN if supplied at configure time + +doc/bashref.texi + - --enable-dev-fd-stat-broken: document new command-line option for + configure + +arrayfunc.c + - assoc_expand_once: new variable, declared here just because + +arrayfunc.h + - assoc_expand_once: extern declaration + - AV_NOEXPAND: new flag value for the array_value family of functions: + means to not run associative array subscripts through word expansion + +builtins/set.def + - unset_builtin: call unbind_array_element with assoc_expand_once as + third arg, controls whether we expand associative array subscripts + (if 1, we suppress the usual expansion). With accompanying shopt, + provides backwards compatible option to solve problem with quotes + and other characters in associative array subscripts pointed out + most recently by Mingye Wang (Arthur2e5) + +builtins/shopt.def + - assoc_expand_once: new option, controls value of internal variable + with the same name. Currently undocumented because I'm not completely + sold on the name + +expr.c + - evalexp: now takes a second argument, flags. Changed all callers in + multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c, + subst.c,test.c,variables.c) + +externs.h + - EXP_EXPANDED, new flag for second argument to evalexp + +builtins/let.def + - let_builtin: add EXP_EXPANDED to flags passed to evalexp + +execute_cmd.c + - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp, + since the command string is run through expand_words_no_vars before + being evaluated + +expr.c + - set expression-global variable already_expanded if flags arg to + evalexp contains EXP_EXPANDED + - if assoc_expand_once option set and already_expanded flag set, pass + 1 in flags to array_variable_part to skip over quotes and expansions + in the subscript + - if those two variables set, pass AV_NOEXPAND as flag to + get_array_value to prevent word expansions on the subscript + +arrayfunc.c + - if flags passed to unbind_array_element includes 1, pass flag on to + skipsubscript so we don't expect matched quotes or process + expansions in the subscript + - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag + to array_variable_part to pass along to skipsubscript + - if flags to array_value_internal include AV_NOEXPAND, don't call + expand_assignment_string_to_string; just use the unexpanded subscript + to produce the key [THIS IS A WORK IN PROGRESS] + + 12/14 + ----- +subst.h + - ASS_NOEXPAND: assignment flag that inhibits expansion of associative + array subscripts + +variables.c + - bind_int_variable: takes new flags arg; flags are taken from the + ASS_ set of assignment flags, changed callers (bashline.c, expr.c, + pcomplete.c) + - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to + valid_array_reference and array_variable_part to pass along to + skipsubscript, so we don't try to skip over quoted strings in the + subscript + - bind_int_variable: pass flags along to assign_array_element + +variables.h + - bind_int_variable: updated extern declaration with new flags arg + +expr.c + - expr_bind_variable: if the assoc_expand_once option is enabled, and + the flags to evalexp indicate that we have already run the expression + through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable + +arrayfunc.c + - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag + to array_variable_name to pass along to skipsubscript + - assign_array_element: if flags includes ASS_NOEXPAND, don't run an + associative array subscript through word expansion, just use as-is + +subst.c + - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic + substitution because the string has already been expanded with + expand_arith_string + + 12/15 + ----- +builtins/read.def + - read_builtin: use value of assoc_expand_once for valid_array_reference + as with other uses + - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element + +general.c + - assignment: instead of checking whether flags == 0 to allow a `[', + explicitly check for (flags&1) to disallow it. This leaves the door + open for additional flag values + +builtins/printf.def + - printf_builtin: use value of assoc_expand_once for + valid_array_reference as with other uses + - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND + to assign_array_element + + 12/16 + ----- +builtins/history.def + - change history -d option to handle negative arguments; negative + arguments offset from the end of the history list (last_position + 1 + so history -d -1 deletes the history -d command that just got + added). Original patch from Piotr Grzybowski + +doc/bash.1,lib/readline/doc/hsuser.texi + - documented new behavior of negative offsets for `history -d' + + 12/17 + ----- +lib/readline/history.c + - remove_history: use memmove to move the history list around instead + of a loop that copies pointers one at a time, similar to add_history + + 12/19 + ----- +configure.ac + - linux: make sure PGRP_PIPE is defined unconditionally for all kernel + versions greater than 2.3.* + +lib/readline/history.c + - clear_history: when clearing the history, reset history_base to 1 + (its default) + - remove_history_range: new function, removes a set of history entries + and returns them all for deallocation + +lib/readline/history.h + - remove_history_range: extern declaration + + 12/20 + ----- +execute_cmd.c + - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the + expression through expand_words_no_vars + + 12/21 + ----- +input.c + - b_fill_buffer: when read returns EOF or error, and we reset the + buffer and pointers, reset the input pointer to 0. Fixes issue + reported by Stephane Chazelas + + 12/22 + ----- +arrayfunc.[ch],subst.c + - array_expand_index: added new FLAGS argument, reserved for future use, + changed callers + + + 12/24 + ----- +variables.c + - can_optimize_assignment,optimized_assignment: see if we can detect + whether or not we're trying to append a string to a string variable, + and optimize that using realloc/strcpy. Based on a log-ago + suggestion from Aharon Robbins + + 12/27 + ----- +builtins/help.def + - help_builtin: don't pass return value from ngettext() directly to + printf + + 12/28 + ----- +sig.c + - set_signal_handler: set SA_RESTART for SIGWINCH, so window size + changes don't interrupt open/read/write. Suggested by + Andriy Prystupa back in 10/2016 + + 12/30 + ----- +execute_cmd.c + - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc + associated with pid, don't remove it from the list with cpl_delete. + Just mark as dead and wait for coproc_reap/cpl_reap to take care + of disposing it + - execute_coproc: NEW FEATURE: run the coproc name through word + expansion before creating the coproc; this allows unique coprocs + to be created in loops. Originally requested way back in 2012 by + Erik Brandsberg + +command.h + - subshell_com: now has a line number member: line + +make_cmd.c + - make_subshell_command: assign current line number (line number of the + ending right paren) to `line' member + +copy_cmd.c + - copy_subshell_command: copy the `line' member + +execute_command.c + - execute_command_internal: when executing a user subshell (`(command)'), + set the line number and line number for the ERR trap from the line + number saved in the subshell command struct. Fix from + Eduardo A. Bustamante López + - execute_arith_command: set line number for ERR trap from line number + saved in the arith command struct. Fix from + Eduardo A. Bustamante López + - execute_cond_command: set line number for ERR trap from line number + saved in the cond command struct. Fix from + Eduardo A. Bustamante López + +variables.c + - bind_variable_internal: move can_optimize_assignment call to the + right place + + 12/31 + ----- +variables.c + - find_variable_nameref: treat a circular variable reference as + referring to a variable of that name in the global scope (for now), + if one exists. PROVISIONAL change: inspired by suggestion back in + 6/2016 by Grisha Levit + + 1/2/2017 + -------- +{expr,general,hashcmd}.c + - include flags.h for flag values + +make_cmd.c + - include shell.h instead of the files it includes + +flags.h + - new extern declarations for want_pending_command, read_from_stdin + +subst.h + - add extern declaration for expanding_redir, assigning_in_environment + +trap.h + - add extern declaration for running_trap + +execute_cmd.h + - added extern declarations for variables declared in execute_cmd.c, + changed files that declare lots of extern variables + +shell.h + - added extern declarations for variables declared in shell.c, + changed files that declare lots of extern variables + +parser.h + - added extern declarations for variables declared in parse.y, + changed files that declare lots of extern variables + +[lots of changes to reduce the number of extern declarations in C and DEF files] + +parse.y + - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to + use STRING_SAVER + + 1/3 + --- +sig.c + - termsig_handler: don't call end_job_control if subshell_environment + indicates that we're in a command or process substitution. + Provisional fix for bug reported by Russell King + +jobs.c + - end_job_control: only attempt to give the terminal back to + original_pgrp if job_control != 0; don't test interactive_shell + +execute_cmd.c + - execute_disk_command: call QUIT after search_for_command, since + the only time QUIT gets called is when the path is actually + searched. It doesn't happen for an absolute pathname. Fix for + bug reported by Russell King + + 1/16 + ---- +lib/glob/glob.c + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern (r returns 0 for any subpattern), + return 1 because we should skip the name + - extglob_skipname,wextglob_skipname: if we don't find a reason to + not skip the name in any subpattern, but the first part of the extglob + pattern is a wildcard (`*(pat)'), check the rest of the pattern, if + any, to decide whether or not to skip the name. Fixes bug reported + by Grisha Levit + +lib/glob/glob_loop.c + - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR + +lib/glob/glob.c + - wchkname -> wskipname + - wskipname: now takes a third `flags' argument, like the other variants + of skipname + + 1/17 + ---- +redir.c + - here_document_to_fd: set the file descriptor open for writing to the + here document to be close-on-exec. Fixes bug reported by + Siteshwar Vashisht + + 1/18 + ---- +{gmisc,gm_loop}.c + - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file), + compile twice for single and wide characters as with the rest of + the functions + - umatchlen,wmatchlen: ditto + - extglob_pattern_p: move to gm_loop.c, generalize for regular and + wide-char versions + + 1/19 + ---- +lib/readline/complete.c + - stat_char: fix small memory leak if stat/lstat returns -1 + +bashline.c + - bash_filename_stat_hook,bash_directory_completion_hook: make sure + expand_prompt_string is caled wth W_NOPROCSUB flag + - directory_exists: don't dequote the filename passed as an argument; + this function should never get quoted pathnames + +subst.c + - expand_word_internal: when calling expand_word_internal recursively + after reading a double-quoted string, make sure the W_NOCOMSUB and + W_NOPROCSUB flags make it to the recursive invocation. Fixes bug + reported by Jens Heyens + + 1/23 + ---- +lib/readline/signals.c + - _rl_orig_sigset: original signal mask, set and restored by + rl_set_signals (rl_clear_signals doesn't block signals). If we + are not installing signal handlers, just save signal mask each + time rl_set_signals is called + +lib/readline/input.c + - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block + the set of signals originally blocked by the calling application. + Fixes bug reported by Frédéric Brière + +parse.y + - yy_readline_get: try to unset NONBLOCK mode on readline's input + file descriptor before calling readline(). Inspired by report from + Siteshwar Vashisht + + 1/30 + ---- +parse.y + - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we + see a `$'; we should toggle it to accommodate things like $$. + Fixes bug reported by Christian Weisgerber + - parse_matched_pair: do the same thing with LEX_WASDOL + + 2/1 + --- +jobs.h + - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of + functions + +jobs.c + - wait_for_job, wait_for_any_job: take new flags argument for use by + the wait builtin + - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to + terminate instead of change state + - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for + child process to terminate instead of change state + +builtins/wait.def + - takes a new `-f' option, signifying to wait until the specified job + or process terminates, instead of changes state + +doc/{bash.1,bashref.texi} + - wait: document the new -f option and its behavior when job control + is enabled + - job control: add a paragraph describing how the wait builtin changes + behavior when job control is enabled: it returns when a job changes + state + + 2/2 + --- +examples/loadables/fdflags.c + - fdflags: new loadable builtin to set and unset file descriptor flags + (such as non-blocking, though bash undoes that) for descriptors bash + has open. Developed in consultation with Christos Zoulas + + + 2/3 + --- + +lib/readline/text.c + - rl_previous_screen_line: attempt to move to the same column on the + previous screen line of the current readline buffer by moving back + a number of characters equal to the screen width + - rl_next_screen_line: attempt to move to the same column on the + next screen line of the current readline buffer by moving forward + a number of characters equal to the screen width. Both originally + suggested by Hans Ginzel + +lib/readline/readline.h + - rl_{next,previous}_screen_line: extern declarations + +lib/readline/funmap.c + - {next,previous}-screen-line: new bindable command names + +lib/readline/doc/{rluser.texi,readline.3} + - {next,previous}-screen-line: document behavior, including limitations + + 2/5 + --- +lib/readline/input.c + - rl_read_key: when reading input from a macro, make sure to return + the next character as an unsigned char, so we handle multibyte + character sequences correctly. Report and fix from Grisha Levit + + + 2/6 + --- +shell.c + - --pretty-print: new invocation option, currently undocumented, dumps + a pretty-printed version of a shell script given as an argument to + stdout + - main: call pretty_print_loop() if we're in pretty-printing mode in + a non-interactive shell + +eval.c + - pretty_print_loop: new function, similar to reader_loop, reads + commands and prints them by displaying the result from + make_command_string() + +externs.h + - pretty_print_loop: new extern declaration + + 2/9 + --- +doc/{bash.1,bashref.texi} + - here strings: correct documentation to note they do not undergo + brace expansion. Report from Conor McCarthy + + 2/9 + --- +lib/readline/display.c + - expand_prompt: instead of recomputing the line break offsets for + prompts that span multiple screen lines on every call to rl_redisplay, + do it here. Manage a local array local_prompt_newlines; set an offset + every time `physchars' hits a multiple of the screen width. Inspired + by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819 + - rl_redisplay: don't calculate multi-line prompt line break indices + here; use the values calculated by expand_prompt + - rl_{save,restore}_prompt: save and restore local_prompt_newlines + + 2/11 + ---- +lib/readline/mbutil.c + - _rl_find_prev_mbchar_internal: since we're traversing the string + from the beginning, shortcut non-multibyte characters in a UTF-8 + locale + +parse.y + - parse_comsub: if we are parsing a here document with a quoted + delimiter (LEX_QUOTEDDOC), we should not remove + pairs from the body of the here document. Need to add LEX_QUOTEDDOC + to the values in tflags when calling shell_getc. Fixes bug reported + by Michael Homer , patch was originally + contributed by Geir Hauge + + 2/15 + ---- +jobs.c + - bgp_add: if hashed pid collides with bgpids.head index, print a + warning and move to the next index. Attempt to avoid collision + problem reported by Graham Northup + + 2/17 + ---- +subst.c + - process_substitute: call remove_quoted_escapes on the command string + like command substitution does, since the string will be run through + the parser again. Fixes bug reported by David Simmons + + +config-top.h + - STATIC_PATH_VALUE: new config variable, undefined by default + +variables.c + - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the + PATH variable at shell startup, overriding the environment and any + value for DEFAULT_PATH_VALUE. Based on a suggestion from + Lonnie Abelbeck + + 2/18 + ---- +shell.c + - maybe_make_restricted: clear the hash table before making the PATH + variable read-only by calling stupidly_hack_special_variables. + Suggestion from Lonnie Abelbeck + +subst.c + - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word} + to use this new function, initially identical to + expand_string_for_rhs + - getpattern: use expand_string_for_pat to expand the pattern + + 2/19 + ---- +subst.c + - expand_string_for_rhs: now that this is only used to expand the RHS + of the various non-pattern ${paramOPword} expansions, set + expand_no_split_dollar_star depending on whether or not the entire + brace expansion is going to be subjected to word splitting: if it's + quoted or if IFS is set but null, we will not be splitting so we set + this to 1 and let $* expand to separate fields separated by a space. + This was heavily debated back in October 2014 and resulted in Posix + interp 888. Reported by Martijn Dekker + + 2/20 + ---- +subst.c + - expand_string_for_rhs: now takes `op' (brace expansion operator) as + an additional argument; changed call in parameter_brace_expand_rhs + - expand_string_for_rhs: make sure to set expand_no_split_dollar_star + if `op' is `=', since we are supposed to preserve the assignment + statement expansion semantics on the RHS of ${param=word} + +jobs.c + - bgp_delindex: make sure to set ps->pid to NO_PID so we more + effectively remove it from the hash table. It shouldn't matter as + long as nothing in pidstat_table points to it, but better to be safe + - bgp_delete,bgp_search: generalize previous collision detection to + loop detection: abort search if we are going to go back to the + first index we tried + + 2/21 + ---- +lib/readline/vi_mode.c + - rl_vi_bword: if we're trying to move backward to non-whitespace + in a line that begins with whitespace, make sure we don't move + point to 0 and test memory locations before the start of the + buffer. Report and fix from Jason Hood + +lib/readline/display.c + - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to + initialize it. If it's still 0 after that, guess that the screen + width is 80 and use that to guess how many screen lines the prompt + consumes + +lib/readline/readline.c + - readline_internal_setup: if in emacs editing mode, and we are + showing the editing mode in the prompt, call _rl_reset_prompt() to + make sure that the updated setting of _rl_show_mode_in_prompt + (presumably set in an inputrc file) is reflected in the redisplay + performed by rl_callback_newline via readline_internal_setup. + Fix from Jason Hood + + 2/22 + ---- +builtins/complete.def + - print_one_completion,print_compopts: make sure to display the + `nosort' and `noquote' options if they've been set for a particular + compspec. Fix from Grisha Levit + +builtins/read.def + - read_builtin: if -e is supplied, read needs to free rlbuf before + returning, since it uses discard_unwind_frame at that point. Bug + and fix from ZhangXiao + +execute_cmd.c + - execute_for_command: when using a nameref as the for loop control + variable, make sure we check for readonly namerefs and make sure + that we force bind_variable to enforce restrictions on nameref + assignments. Fix from Grisha Levit + + 2/23 + ---- +general.c + - make_absolute: convert deprecated cygwin_conv_to_full_posix_path + to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) + +{shell,variables}.c,config-top.h + - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE; + don't use it in shell_initialize; set PATH to it just before + imposing restricted shell restrictions + + 2/24 + ---- +subst.c + - expand_string_for_rhs: revert change from 2/19 concerning setting + expand_no_split_dollar_star so we are consistent with the Posix + examples. This anticipates Martijn Dekker initiating an austin + group discussion about this case + + 2/25 + ---- +pcomplete.c + - gen_shell_function_matches: if COMPREPLY is an associative array, + don't coerce it to an indexed array, which will fail to produce any + matches anyway. Report from Grisha Levit + - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore + the nameref attribute. Report from Grisha Levit + + +subst.c + - parameter_brace_expand: if expand_no_split_dollar_star is set, make + sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES + as the second argument. Fixes differing treatment of $* and ${v[*]} + reported by Grisha Levit , because otherwise + *contains_dollar_at gets set to 1 and the word is inappropriately + split + + 3/1 + --- +subst.c + - expand_word_list_internal: if a variable assignment fails (e.g., due + to a readonly variable) in a non-interactive posix mode shell, don't + abort the shell if the assignment is being performed by the command + builtin, even if it's something like `command eval v=1'. Fixes + RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838 + (reported by Denys Vlasenko) + + 3/3 + --- +builtins/shopt.def + - set_compatibility_level: make sure that changing the compatibility + level sets or modifies BASH_COMPAT. Fixes bug reported by + Stephane Chazelas + +lib/glob/smatch.c + - is_cclass: broke into two functions: is_valid_cclass and cclass_test, + for future expansion. No functionality change + +lib/glob/sm_loop.c + - BRACKMATCH: when testing a character against a character class name, + use the unfolded (original) character, since we're not performing a + comparison. This is what glibc does. Fixes bug reported by + Lukáš BaÅinka + + 3/4 + --- +doc/{bash.1,bashref.texi} + - note that the arguments to -eq and the rest of the arithmetic + operators are evaluated as expressions when using [[. Report from + Rob la Lau + + + 3/7 + --- +lib/readline/display.c + - update_line: completely rewrote the code that handles line wrapping + in the presence of multibyte/double-width characters; punts to a + dumb update in cases where the number of screen positions doesn't + match + - update_line: in one case, where we are deleting characters from the + line, if we are writing a non-space into the last screen character + position, note that we are no longer using a space as a placeholder + for a line wrap where there is a multi-width character that won't + fit on the screen line (wrapped_line[current_line+1] = 0) + + 3/10 + ---- +lib/readline/readline.c + - bind_arrow_keys_internal: add default key bindings for control- + arrow keys, suggested by Per Bothner + + 3/13 + ---- +doc/{bash.1,bashref.texi} + - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and + PS4) before being displayed. Based on a report from Grisha Levit + + + 3/14 + ---- +input.c + - bufstream_ungetc: return EOF if being asked to unget a character to + a NULL buffer + - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd] + is non-NULL before trying to dereference. Fixes bug reported by + floyd + +execute_cmd.c + - execute_null_command: if we fork to execute the command, the subshell + is not interactive + - execute_null_command: for safety's sake, if a redirection attached + to a null command affects fd 0 or the fd the shell is reading for + input, and the redirection can potentially change or close that file + descriptor, force a fork so the redirection is done in a subshell + + 3/15 + ---- +lib/readline/display.c + - update_line: if we have to output some bytes, and we are outputting + the prompt string, make sure we correct _rl_last_c_pos if we are + at the wrap offset -- what if all of the characters in the prompt + are invisible, so the visible length is 0? Fixes display bug + reported by Grisha Levit + +execute_cmd.c + - undo_partial_redirects: new function, performs redirections specified + in redirection_undo_list and disposes of them. Intended to be used + to unwind redirections performed before a redirection error + - dispose_partial_redirects: new function, disposes of + redirection_undo_list and nulls the list + - execute_command_internal: use undo_partial_redirects + +execute_cmd.h + - undo_partial_redirects: extern declaration + - dispose_partial_redirects: extern declaration + +subst.c + - exp_jump_to_top_level: if we are throwing an expansion error while + expanding a redirection (expanding_redir != 0), undo any undoable + redirections by calling undo_partial_redirects() so we don't leave + any in place + +variables.c + - initialize_shell_variables: if SHELLOPTS is in the environment, + unset the readonly attribute on any existing variable with that + name. It may have been created by processing a -o option on the + command line. Fixes issue reported by Stephane Chazelas + + + 3/16 + ---- +lib/readline/histfile.c + - read_history_range: short-circuit and do nothing if the history file + is of 0 size + - read_history_range: make sure the buffer is zero-terminated so the + timestamp tests work right for history files of 1 character. Report + and recommended fix from Denis Martinez + +lib/readline/complete.c + - compute_lcd_of_matches: when trying to compute the common prefix + of a set of matches while performing case-insensitive completion + matching, don't sort the match list unless rl_sort_completion_matches + is non-zero. Fixes problem reported by Roee Bar + + 3/18 + ---- +subst.c + - extract_dollar_brace_string: handle process substitution embedded in + a ${...} expansion in the same way as command substitution. Reported + by D630 + +parse.y + - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is + read + - parse_matched_pair: handle an embedded process substitution like an + embedded command substitution if we are parsing an array index or + a dollar-brace expansion. Reported by D630 + + 3/21 + ---- +subst.h + - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by + make_variable_value + +variables.c + - make_variable_value: ASS_NOEVAL: if this is set, don't attempt + arithmetic evaluation or case modification, just produce the value + (still honor ASS_APPEND) + - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level + if arithmetic evaluation fails due to a syntax error + - bind_variable_internal: make sure aflags is passed to all calls to + make_variable_value + - push_temp_var: add ASS_NOLONGJMP to the flags passed to + bind_variable_internal. Fixes bug reported by D630 + +bashline.c + - bash_execute_unix_command: don't bother to attempt optimization by + checking whether the call to parse_and_execute changes $READLINE_LINE; + it can be defeated by the new code that optimizes appends to string + variables. Bug reported by Grisha Levit + + 3/22 + ---- +subst.c + - expand_string_for_rhs: re-apply change from 2/19 based on discussion + on the austin-group mailing list about how unquoted ${var-$*} + expands when IFS is null. Originally reported by Martijn Dekker + + + 3/25 + ---- +parse.y + - read_token_word: if we read a WORD immediately after a CASE, FOR, or + SELECT, increment `expecting_in_token' to note that we're going to + be reading IN as the next non-newline token + - special_case_tokens: if we're expecting an IN (expecting_in_token > 0) + and we have an "in", return IN and decrement expecting_in_token. This + is a better implementation of Posix grammar rule 6 than the previous + code in that function (which is still there for posterity, but should + eventually be removed). Fixes bug reported by Torka Noda + + +subst.c + - string_list_pos_params: if the expansion is not quoted, and IFS is + null, return a string containing the quoted positional parameters + separated by spaces. Callers know what to do with the string + - parameter_brace_substring,parameter_brace_remove_pattern, + parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod: + for the VT_POSPARMS case, after calling the operator-specific + expansion function, which eventually calls string_list_pos_params, + leave the returned string alone, since it's already quoted properly + - parameter_brace_expand: after calling the above functions to perform + expansions, if the expansion is being performed on an unquoted $* + when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC + so that splitting on spaces is performed on the already-quoted word. + Fixes bug reported by Grisha Levit + + 3/28 + ---- +subst.c + - process_substitute: change so the subshell doesn't inherit the 'v' + option, like command substitution now does (as of bash-4.4). + Suggested by Grisha Levit + + 3/30 + ---- +subst.c + - parameter_brace_casemod: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - parameter_brace_transform: now takes a pflags parameter, like + parameter_brace_patsub; changed callers + - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're + on the rhs of an assignment statement and not going to perform + word splitting, we're expanding $*, and $IFS is null, make sure + string_list_pos_params treats the expansion as double-quoted, so + the positional parameters will be concatenated. Fixes bug reported + by Grisha Levit + + 3/31 + ---- +doc/{bash.1,bashref.texi} + - add notes to the description of pipelines emphasizing that each + element of a pipeline is executed in a subshell, referring to the + description of a command execution environment, and that the + lastpipe option can modify that behavior. From a discussion with + Jean Delvare + + 4/1 + --- +subst.c + - expand_word_internal: set had_quoted_null to note for later if we + expand '', "", or "$x" when x is unset + - expand_word_internal: if we expand "$param" (or "${param}") and we + come back with a single word with the W_HAVEQUOTEDNULL flag set, + make sure we set had_quoted_null to remember it for later. In this + case, if we already have seen a quoted null and we expanded $@ in + this (sub)string expansion, we don't want to do any of the special + $@ handling. In particular, we don't want to set *expanded_something, + because that will result in word splitting and quoted null removal. + Fixes bug reported by Grisha Levit + - parameter_brace_patsub: when expanding ${*/pat/sub} in the case + where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't + going to be doing word splitting), pass MATCH_ASSIGNRHS so we do + the right thing in this case. Part of a set of cases inspired by + Grisha Levit + - param_expand: case '*': if we are on the rhs of an assignment + (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure + string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes + the positional parameters before joining them into a string with + string_list_internal. Otherwise, that first space gets removed by + the implicit word splitting that gets performed. Reported by + Grisha Levit + +array.c + - array_patsub,array_modcase: handle ${A[*]} identically to $* when + not quoted and IFS is null (separate with spaces). Makes things + like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null + +subst.c + - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]} + when the match is on the rhs of an assignment statement (PF_ASSIGNRHS) + and ifs is null, make sure the match is performed as if it were + quoted + - parameter_brace_substring: now takes a PFLAGS argument + - parameter_brace_substring: if expanding $* in a context where we + don't want to do word splitting (expand_no_split_dollar_star && + PF_NOSPLIT2), make sure we expand $* as if it were quoted + - parameter_brace_substring: if expanding an unquoted $* on the rhs of + an assignment statement when IFS is null, make sure we expand the $* + as if it were quoted + + 4/4 + --- +doc/{bash.1,bashref.texi} + - read: document that a delim argument of '' terminates each line when + a NUL character appears + + 4/5 + --- +subst.c + - parameter_brace_expand_word: handle case where unquoted $@ is + expanded in a context where word splitting is not performed (PF_NOSPLIT2) + and IFS is not equal to the standard value + - param_expand: handle case where unquoted $@ is expanded in a context + where word splitting is not performed (PF_NOSPLIT2) and IFS is not + equal to the standard value. Fixes bug with IFS == $1 when expanding + unquoted $@ reported by Grisha Levit + + 4/7 + --- +subst.c + - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $* + as quoted unless expand_no_split_dollar_star is also set. Fixes + expansion bug reported on 4/4 by Grisha Levit + - parameter_brace_transform: if we transform unquoted A[@] or A[*] + when IFS is null, don't quote the result of array_transform in the + same way we don't quote the result of parameter_list_transform, + since it will come back quoted. Fixes bug reported by + Grisha Levit + - list_transform: if we transform unquoted $* or ${a[*]} when IFS is + null and expand_no_split_dollar_star is non-zero, call + string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting. + We do this in all cases except @Q, which is inconsistent but more + intuitive. + Fixes bug reported by Grisha Levit + + 4/8 + --- +builtins/read.def + - read_mbchar: if unbuffered == 2, we are running read -N and need to + use zreadn to read the rest of the multibyte char, since the + previous call to zreadn may have buffered characters. Fixes bug + reported by Stephane Chazelas + +pathexp.h + - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn + CTLESC CTLESC (quoted CTLESC that's usually removed as part of + word splitting or quote removal) into CTLESC + +pathexp.c + - quote_string_for_globbing: if QGLOB_CTLESC is present in flags, + turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded + by a backslash. Callers can't do this because the remaining CTLESC + will be treated as a quoting character and turned into a backslash + +execute_cmd.c + - execute_case_command: if the pattern is not quoted, make sure to tell + quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by + passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker + + + 4/9 + --- +subst.c + - string_transform: after calling ansiexpand for the `E' transformation, + need to call dequote_escapes because ansiexpand assumes it is being + called by the parser and arranges for ansicstr to quote CTLESC and + CTLNUL with CTLESC. Reported by Grisha Levit + +variables.c + - mk_env_string: when exporting functions, run them through + dequote_escapes because any strings containing CTLESC or CTLNUL are + still quoted with CTLESC. Reported by Grisha Levit + + +subst.[ch] + - quote_escapes,dequote_escapes: now take const char * argument + +execute_cmd.c + - execute_intern_function: if the function name contains CTLESC, run + it through dequote_escapes just in case it got CTLESC quoting + CTLESC or CTLNUL from the parser + + 4/11 + ---- +eval.c + - reader_loop: make sure PS0 is expanded and displayed before + incrementing the command number + +parse.y + - prompt_history_number: function to make history number as reported + by \!, or posix mode !!, be the same index that the (possibly multi- + line) command will be stored with. The history library increments + history_offset as soon as a new line is entered, and it's up to the + history code to store the second and subsequent lines of a command + in the same history entry. If we are expanding PS0 or PS4, or + a ${var@P} expansion, we're already past the history entry no + matter what. Inspired by patch from Grisha Levit + + - decode_prompt_string: call prompt_history_number + - decode_prompt_string: if expanding PS4 or ${var@P}, make the + command number the same as reported by PS0/PS1/PS2 + + 4/12 + ---- +support/Makefile.in + - clean: remove man2html.o as part of this production instead of + waiting until `distclean'. Reported by chrlis + +subst.c + - string_list_pos_params: if we are expanding $* in a context where + IFS is null and expand_no_split_dollar_star is set (no word + splitting), use string_list_dollar_star to force the positional + parameters to be joined without first separating them into a list + and attempting to join them later. Fixes problem with constructs + like ${var=${*:1}}, pointed out by Grisha Levit + . This undoes change to @Q from 4/7, so + list_transform change reverted + + 4/19 + ---- +builtins.h + - added BUILTINS_H include guard + +examples/loadables/Makefile.in + - install loadables.h as sample include file, along with Makefile.inc + + 4/23 + ---- +bashline.c + - maybe_make_readline_line: don't try to do anything if the passed + NEW_LINE is NULL. Report from Jaren Stangret , + fix from Eduardo Bustamante + + 4/24 + ---- +parse.y + - xparse_dolparen: if the current token (the last thing read_token + returned to yylex) is shell_eof_token, assume that it is the new + bison lookahead token and clear it. Fixes bug reported by + Werner Fink + + 4/25 + ---- +doc/{bash.1,bashref.texi} + - cmdhist: clarify that this option only has an effect if history is + enabled. Suggested by Matthew Braun + + 4/26 + ---- +jobs.c + - wait_for: if a non-interactive shell with job control enabled (set -m) + detects that a foreground job died due to SIGINT, act as if the shell + also received the SIGINT. Prompted by an austin-group-l discussion + - waitchld: run SIGCHLD trap for each child exited even if job control + is not enabled when in Posix mode. Prompted by an austin-group-l + discussion + + 4/27 + ---- +lib/readline/histfile.c + - read_history_range: if the history file is empty, free the history + filename before returning. Report and fix from Eduardo Bustamante + + +lib/readline/bind.c + - rl_parse_and_bind: make sure there is something, even if it's a + quoted empty string, before the `:' in a key binding. Report from + Eduardo Bustamante + - rl_parse_and_bind: if the right side of a key binding starts with a + quote, make sure there's a matching close quote before treating it + as a macro definition + - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or + \C-\M-) make sure we break out of the loop if moving to the character + to be translated is a NUL. Old code did this only in the \C-\M- + case. Report from Eduardo Bustamante + + 4/28 + ---- +lib/glob/sm_loop.c + - GMATCH: implement a clever technique from glibc that avoids + backtracking past a `*' if we've already chosen to use it and need + matches beyond it. Look at https://research.swtch.com/glob for a + longer explanation. This results in a significant speedup for globs + with multiple instances of `*', especially with more than 4. + + 5/2 + --- +lib/readline/bind.c + - rl_translate_keyseq: make sure a trailing backslash in the key + sequence is preserved. Report from Eduardo Bustamante + + + 5/3 + --- +builtins/builtin.def + - builtin_builtin: make sure to set this_shell_builtin to the builtin + command being executed, overwriting `builtin'. Leave + last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros + de Luca + +jobs.c + - waitchld: modify change of 4/26 to run SIGCHLD traps even if job + control is not enabled + +lib/readline/misc.c + - rl_get_previous_history: if we didn't find a previous history entry + to use, call rl_maybe_unsave_line before returning because we + aren't going to use the saved line, and it has the same undo list + as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante + + - rl_get_{next,previous}_history: if there is no history list, don't + bother doing anything + + 5/4 + --- +expr.c + - popexp: if we error out due to stack underflow, make sure to zero out + expression and lasttp; they may contain undefined values we don't + want evalerror to print + - expr_unwind: handle expr_depth decrementing below zero + - evalexp: restore the old value of evalbuf even if we error and + longjmp; we may have called evalexp recursively + - evalerror: make sure expression is non-NULL before trying to print it. + These fix fuzzing bug reported by Eduardo Bustamante + , happens only in cases where we don't longjmp on + a fatal expansion error + + 5/5 + --- +parse.y + - read_token_word: when checking for a word that's a target of a + redirection, we can potentially call valid_array_reference, which + can end up calling the parser recursively. If it does that, we + need to make sure that yylval.word doesn't change, so we set it back + to the_word. Fixes another fuzzing bug + +parse.y + - arith_for_command: make syntax errors in the arithmetic for command + (signaled by make_arith_for_command returning NULL) more like + language syntax errors by calling YYERROR. Avoids complicated + attempts at error recovery and dealing with NULL returns from + command productions. Pointed out by Eduardo Bustamante + + +lib/readline/kill.c + - _rl_copy_to_kill_ring: make sure the current slot in the kill ring + has something in it, even if the last command was a kill, before + trying to modify it. Another fuzzing bug + + 5/6 + --- +builtins/read.def + - read_builtin: if we see a backslash when not in raw mode (not -r), + only back up `i' when we read the next character if we know we added + a CTLESC the last time through the loop (skip_ctlesc == 0), + especially if i == 0. Another fuzzing bug from Eduardo Bustamante + + + 5/8 + --- +builtins/read.def + - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle + of an incomplete multibyte sequence. Fixes another fuzzing bug + - read_builtin: use mb_cur_max instead of constant 4 when deciding + whether the next character can exceed the number of bytes available + in input_string + +lib/readline/input.c + - MinGW: include before . Fix from Eli Zaretskii + + +builtins/read.def + - read_builtin: if we get input from readline, we need to get the + remainder of a multibyte character from rlbuf instead of calling + read_mbchar. Bug reported by Eduardo Bustamante + + 5/9 + --- +parse.y + - token_is_assignment: use the allocated buffer approach in all cases, + not just if we're not using bash malloc. This avoids the assignment + to t[i+1] writing beyond the end of the allocated token if + i == token_buffer_size - 1. Another fuzzing bug + - xparse_dolparen: if parse_string returns < 0, we clear out the + current shell_input_line before performing a longjmp, since we're + abandoning parsing of this command. This is consistent with how + the parser resynchronizes after other syntax errors + - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error + that's immediately followed by an EOF after resynchronization. + Fixes another fuzzing bug + + 5/10 + ---- +lib/readline/text.c + - _rl_set_mark_at_pos: don't let the mark be set to a position < 0. + Fixes a fuzzing bug + - rl_exchange_point_and_mark: don't do anything if the mark is already + less than 0 + + 5/12 + ---- +lib/readline/rlmbutil.h + - wchar_t: make sure this is defined as int if multibyte characters + aren't supported + +lib/readline/text.c + - _rl_change_case: don't force use of ascii toupper and tolower if + isascii returns true; it's not defined to work on characters outside + the 0..255 (really 0..127) range. Bug reported by + Eduardo Bustamante + + 5/14 + ---- +lib/readline/text.c + - rl_change_case: handle case where the old and new characters (after + the case change) are not the same number of bytes. Pointed out in + http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html + +lib/readline/display.c + - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar + since that needs the base of the array. Bug from fuzzing reported by + Eduardo Bustamante + + 5/15 + ---- +execute_cmd.c + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: adjust the line number when executing a + function interactively so that the first command in the function is + line 1, not line 0, as Posix requires. Reported by Robert Elz + + - execute_simple_command, execute_arith_command, execute_cond_command, + execute_arith_for_command: ony adjust the line number when executing + a function interactively if we are not sourcing a file + (sourcelevel == 0), so this is consistent everywhere we adjust the + line number + + 5/16 + ---- +bashline.c + - bash_directory_completion_hook: when calling split_at_delims to see + whether a ${ or $( is closed, use the right value for `start' relative + to the substring beginning at `$'. Bug from fuzzing reported by + Eduardo Bustamante + +expr.c + - expassign: if the call to expcond generates a syntax error in a + context when the shell won't longjmp (like when evaluating $PS1), + it will end up NULL and we need to catch it before calling strlen. + Bug from fuzzing reported by Eduardo Bustamante + +examples/bash-completion/ + - new place to include a current or recent version of the + bash-completion package + + 5/19 + ---- +lib/readline/display.c + - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars, + so the multibyte version can check and increase the size of + line_state_invisible->wbsize and line_state_invisible->wrapped_line, + callers who call CHECK_INV_LBREAKS must update + wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug + reported by Eduardo Bustamante + + 5/24 + ---- +lib/readline/search.c + - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar + returning -1 (EOF or read error) by aborting the search. + Fuzzing bug reported by Eduardo Bustamante + + 5/25 + ---- +variables.c + - localvar_inherit: new variable, controlled by shopt localvar_inherit + option + - make_local_variable: if localvar_inherit is set, the new local + variable inherits a previous scope's variable's value, attributes + (except nameref), and dynamic variable information. If a local + variable inherits a value, the local is not invisible + +builtins/shopt.def + - localvar_inherit: new option + +doc/{bash.1,bashref.texi} + - localvar_inherit: document new shopt option + + 5/29 + ---- +lib/readline/readline.c + - _rl_subseq_result: only return -1 and back up the chain if we are + dealing with a result (r) that's already < 0 and we are at the end + of a multi-key sequence. Otherwise, a failing readline command (e.g., + delete-char at the end of a line) could cause this code to be + executed. Report from Nuzhna Pomoshch + +lib/readline/histfile.c + - read_history_range: if the file isn't a regular file, return an + error. Bug report from Eduardo Bustamante , + relaying from IRC + + 5/30 + ---- +variables.c + - set_pwd: if in Posix mode, and PWD appears in initial environment as + an absolute pathname to the current directory, set PWD to the result + of canonicalizing the environment value, or to the physical path if + canonicalization fails. From a suggestion by Eduardo Bustamante + + + 5/31 + ---- +builtins/read.def + - read_builtin: if -n or -N option is supplied with a 0 argument, + don't attempt to read any characters; bail out right away. Reported + by Eduardo Bustamante , relaying from IRC + + 6/3 + --- +config.h.in + - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h + to construct a timespec from struct stat. Report and fix from + Siteshwar Vashisht + +variables.h + - att_regenerate: new internal variable attribute: if set, regenerate + dynamic variable's value when it's exported and we are creating the + export environment + +variables.c + - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set + internal regenerate attribute for these dynamic variables + - make_env_array_from_var_list: if a dynamic variable has the + regenerate attribute set, call the dynamic value function to generate + an updated value before placing it in the environment. From a report + about exporting LINENO from Robert Elz + + 6/4 + --- +lib/glob/sm_loop.c + - BRACKMATCH: at the matched: label, make sure we get the bracket + character we're looking for (char class, collating symbol. etc.) + before we decrement the count of braces we're looking for. Eventually + we could do something about badly-formed bracket expressions + + 6/7 + --- +lib/readline/histlib.h + - strchr: only declare if __STDC__ is not defined, since we already + include . Report from Chi-Hsuan Yen + + 6/9 + --- +lib/readline/display.c + - update_line: when wrapping lines with multibyte chars at the end of + the new line being wrapped, make sure we copy the NULL byte in old + when moving the contents of old around. Fuzzing bug reported by + Eduardo Bustamante + +lib/readline/mbutil.c + - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no + need to look at the rest of the string when we're just interested in + the length of a single character + + 6/12 + ---- +jobs.c + - wait_for: when waiting for the next child to exit (ANY_PID), make + sure to restore the old SIGINT handler before returning. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649 + + 6/14 + ---- +lib/readline/display.c + - expand_prompt: make sure `ret' is NULL-terminated before calling + _rl_prev_mbchar_internal, since that calls strlen, which requires + the passed string to be NULL-terminated. Another fuzzing bug. + + 6/15 + ---- +lib/readline/isearch.c + - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end + gets set right + - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so + we don't set rl_point > rl_end. Fixes a fuzzing bug + +lib/readline/mbutil.c + - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0, + just punt, treat the value as a byte, and advance point by 1 + +lib/readline/util.c + - rl_tilde_expand: rearrange code in the whitespace loop so that + `start' gets tested first and we don't try to dereference + rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com + +bashline.c + - bash_dequote_filename: make sure that pointers that are used as + indices into sh_syntaxtab are cast to unsigned char first, to + avoid problems with signed chars > 128. Fixes a fuzzing bug. + +lib/readline/kill.c + - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to + allocate one more than the max number of kills so the loop that + copies the kill ring entries down runs right (and to mirror the + initial allocation). Fixes a fuzzing bug. + +lib/readline/isearch.c + - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0 + even when searching a line in reverse. Fixes a fuzzing bug + + 6/16 + ---- +parse.y + - xparse_dolparen: short-circuit immediately if passed a empty string + +lib/readline/display.c + - update_line: when wrapping multibyte characters, make sure we deal + with WCWIDTH returning -1. Fixes a fuzzing bug + + 6/17 + ---- +execute_cmd.c + - execute_coproc: make sure `invert' is set before trying to use it + when returning failure on invalid coproc name. Report and fix from + Eduardo Bustamante + - execute_command_internal: make sure execute_coproc sets + last_command_exit_value if it returns failure, so an invalid name + can set $? = 1. Report and fix from Eduardo Bustamante + + +lib/readline/display.c + - update_line: make sure all references to `wrapped_line' are wrapped + with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante + + +lib/readline/vi_mode.c + - _rl_vi_change_char: don't use rl_point++ when you mean to move + forward a character; use _rl_vi_append_forward to account for + multibyte characters and take vi end of line handling into account + - _rl_vi_last_replacement: now an array of chars whether we are + using multibyte chars or not. If we're not, the character we read + to use as the replacement is saved as the first element of the array + - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with + _rl_vi_last_replacement being an array. Fixes bug reported by + Eduardo Bustamante + +lib/readline/mbutil.c + - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe + fewer if the length of the string is less + +builtins/bind.def + - unbind_keyseq: new function for the -r option; checks whether the + key sequence is actually bound before trying to bind it to NULL. + Partial fix for https://savannah.gnu.org/support/?109329 + +parse.y + - augment `error yacc_EOF' production to call YYABORT in non-interactive + shells or calls to parse_and_execute (eval, command substitution, + etc.) Fixes bug reported by Martijn Dekker + + 6/19 + ---- +bashline.c + - edit_and_execute_command: don't add rl_line_buffer to the history + list if it's empty; consistent with how other code treats an empty + line + +execute_cmd.c + - execute_builtin: make sure to preserve the temporary env across the + execution of the `read' builtin or `fc' builtin if HISTORY is + defined, in case `read -e' calls edit-and-execute-command. Should + have no side effects. Reported by Eduardo Bustamante + + +general.c + - line_isblank: new function: returns true if passed string is composed + entirely of blanks + +general.h + - line_isblank: new extern declaration + +parse.y + - history_delimiting_chars: return "" for a blank line, since there's + nothing to delimit with `;' + + 6/21 + ---- +jobs.c + - wait_for: make sure to call restore_sigint_handler before returning + if we return out of the loop due to no children. Report from + Eduardo Bustamante + +subst.c + - expand_word_internal: if split_on_spaces is set, and the word is + unquoted, and IFS is null, split the results of the previous steps + on $' \t\n' instead of just ' '. This relies on the previous steps + quoting the portions of the word that should not be split. Fixes + bug reported by Kevin Brodsky + +expr.c + - evalexp: after running expr_unwind, make sure we reset expr_depth + to 0 for the next call + - expr_streval: if after a call to get_array_value (which can call + the expression evaluator recursively) we discover that expr_depth + is less than it was before we called it, we assume there has been + some kind of error and an expr_unwind, so we treat it as an + error and either longjmp back to the expression top level or return + 0 immediately. Fixes bug reported by Eduardo Bustamante + + + 6/23 + ---- +doc/{bash.1,bashref.texi} + - add text noting that $* and ${array[*]} (unquoted) can also expand + to multiple words + + 6/29 + ---- +general.[ch] + - default_columns: new function, returns the value of COLUMNS, or + refreshes it if check_window_size is set and COLUMNS is unset. By + default, it returns 80 + +execute_cmd.c + - select_query: use default_columns() instead of fetching value of + COLUMNS directly + +builtins/help.def + - show_builtin_command_help: use default_columns() instead of fetching + value of COLUMNS directly + + 6/30 + ---- +builtins/read.def + - read_builtin: call QUIT during the read loop, just in case we get a + signal we should act on that didn't cause read to be interrupted. + Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737 + - read_builtin: if -n or -N is supplied with a 0 argument, try a zero- + length read to detect errors and return failure if that read returns + a value < 0. Suggested by dualbus@gmail.com + + 7/4 + --- +bashhist.c + - maybe_add_history: keep track of whether the current line is a shell + comment, even if we're not adding it because it's in a multi-line + command, so we use appropriate delimiters between it and any + subsequent lines. Fixes bug reported by Grisha Levit + back on 2/28/2017 + +bashline.c + - operate_and_get_next: if given an explicit argument, use that to + choose which line in the history to use. + +lib/readline/doc/rluser.texi,doc/bash.1 + - operate-and-get-next: document new effect of explicit numeric arg + +lib/readline/complete.c + - fnprint: make sure print_len is initialized before using it on + systems without multibyte character support. Report and fix from + Juan Manuel Guerrero + + 7/6 + --- +builtins/printf.def + - PRETURN,printf_builtin: check variable returned by bind_printf_variable, + return failure if that indicates we can't perform an assignment + because the variable is marked readonly or noassign. Fixes bug + reported by Arnaud Gaillard + + 7/7 + --- +lib/readline/text.c + - rl_quoted_insert: new feature: a negative argument means to insert + the next -COUNT characters using quoted-insert. Original feature + from Jason Hood . Still needs work on + redisplay + - _rl_insert_next_callback: implement support for negative arguments + similar to rl_quoted_insert: we just insert one at a time and keep + increasing the count until it hits 0 + +lib/readline/misc.c + - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates + we should keep reading a numeric argument, update the message with + the new arg value + + 7/8 + --- +lib/readline/signals.c + - _rl_handle_signal: make sure all uses of any of the job control + signals are protected by a check for SIGTSTP being defined. Report + from Juan Manuel Guerrero + + 7/11 + ---- +lib/readline/vi_mode.c + - rl_vi_replace: when making the new keymap for vi replacement mode, + make sure that ANYOTHERKEY is set correctly, otherwise some input + will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing + bug reported by Ben Wong + + 7/19 + ---- +builtins/read.def + - struct ttsave: make the attrs member a struct, not a pointer, to force + a structure copy that will survive a longjmp to another context. + Leaving it as a pointer to a local struct is not portable + + 9/10 + ---- +execute_cmd.c + - execute_builtin: make sure that we set up the unwind-protect for + pop_scope (temporary_env is non-zero) so that the temporary env + is propagated to the current environment only for special builtins + (source/eval/unset) not run by the command builtin + (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by + Martijn Dekker + + 9/17 + ---- +builtins/printf.def + - asciicode: don't use mblen to check whether or not a character is a + valid multibyte character; use mbtowc right away and then inspect + the return value. Fixes bug reported by Stephane Chazelas + + + 9/27 + ---- +{jobs,subst}.h + - move declaration of last_command_subst_pid to subst.h, since it's + declared in subst.c and doesn't depend on job control. Reported by + Martijn Dekker + +builtins/read.def,variables.c + - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented + the minimal config from building + + 10/1 + ---- +parse.y + - special_case_tokens: if we are returning DO in a case where the last + two tokens read are `FOR' and `WORD' make sure we decrement + expecting_in_token. Fixes bug reported by Martijn Dekker + + + 10/4 + ---- +subst.c + - expand_string_for_rhs: now takes an additional PFLAGS argument from + its caller (one so far); passes that through to call_expand_word_internal + as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker + + - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if + b were the rhs of an assignment statement. This means that splitting + isn't done, but tilde expansion is performed as if the statement + were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker + + +command.h + - W_NOASSNTILDE: new word flag, means to not perform tilde expansion + following a `:' even if the word has the W_ASSIGNRHS flag enabled + +subst.c + - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag + set, just add the character and inhibit any subsequent tilde + expansion. Currently not set anywhere, but it could be set in + expand_string_for_rhs to satisfy its peculiar semantics + + 10/6 + ---- +lib/sh/casemod.c + - sh_modcase: convert even single-byte wide characters to wide upper + or lowercase equivalents to accommodate locales where single-byte + characters have multibyte upper and lower case conversions. Bug + reported by Stephane Chazelas + + 10/7 + ---- +doc/{bash.1,bashref.texi} + - slight changes to the description of command_not_found_handle to + clarify that it's executed in a separate execution environment, + just like if the command was found. Reported by Martijn Dekker + + + 10/8 + ---- +lib/readline/doc/{history.3,hstech.texi} + - history_get: clarify the range of valid values for the OFFSET + argument. From a report by Kevin Ryde + + 10/21 + ----- +subst.c + - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' + for backwards compatibility with bash-4.4 + +shell.c + - main: set positional parameters before running the startup files, + so the startup files can inspect $@. Often-requested feature, + most recently from Stephane Chazelas + + 10/27 + ----- +doc/{bash.1,bashref.texi} + - Arrays: add some clarifying language to make it clear that array + references that don't use the ${a[s]} syntax are subject to + globbing when passed as arguments to commands such as unset, and + should be quoted for safety. Change prompted by a report from + Eli Barzilay + +parse.y + - parse_comsub: make sure we don't run off the end of the `ret' + buffer when checking for the here doc delimiter. Report from + Jakub Wilk , the result of a fuzzing test. Pointer + to place for the fix from Eduardo Bustamante + + 10/30 + ----- +builtins/pushd.def + - get_directory_stack: make sure the current directory (element 0 of + the stack) is passed to polite_directory_format under the same + conditions as the rest of the stack entries (flags & 1). Otherwise + something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported + by Steve Jones + +builtins/declare.def + - declare_internal: when checking for a `[' to see whether or not this + is an array variable declaration (declare -a foo[12]), make sure + we don't do the check if we're just dealing with shell functions. + Bug and pointer to fix from PJ Eby + + 11/1 + ---- +parse.y + - parse_comsub: if we read a four-character word followed by a break + character, and that word is not one of the reserved words, set + lex_rwlen to 0 since we are no longer in a reserved word. It only + hurts if another break character immediately follows, so that test + succeeds again. Turn off the RESWDOK flag only if it's not a shell + metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme + + + 11/3 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are searching in reverse order, let + sline_index go to -1 to avoid searching the same line twice. It + gets reset right after that, so there's no danger of indexing into + the history line with a negative index. + + 11/7 + ---- +execute_cmd.c + - time_command: only restore command->flags if CODE indicates we didn't + perform a longjmp back to top_level. If we did, `command' has already + been freed. Fixes bug reported on savannah by + ukuvbu oibws + https://savannah.gnu.org/support/?109403 + + 11/10 + ----- +lib/sh/unicode.c + - u32cconv: make sure to initialize localconv to -1 (error) in case + we switch from a utf-8 locale to something else and call + iconv_close. Report from Egmont Koblinger ; fix + from Eduardo Bustamante + + 11/16 + ----- +subst.c + - parse_comsub: istring_index should be a size_t to avoid integer + overflow when allocating large pieces of memory. Report and fix + from Siteshwar Vashisht , originally based on + http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html + + 11/24 + ----- +lib/readline/bind.c + - rl_empty_keymap: new public function, returns non-zero if there are + no keys bound in the keymap passed as an argument + +lib/readline/readline.h + - rl_empty_keymap: new public extern declaration + +lib/readline/doc/rltech.texi + - rl_empty_keymap: document new function + +lib/readline/bind.c + - rl_generic_bind: keep track of the previous keymap and previous + index in a multi-key key sequence so we can remove an empty terminal + keymap and remove a previous override to ANYOTHERKEY. Right now, + this only works for one previous keymap level. Inspired by a report + from Clark Wang + + 11/25 + ----- +lib/readline/display.c + - _rl_update_final: make sure that computing the length of the visible + bottom line (botline_length) takes any invisible characters in the + prompt into account (woff). This value is used as part of the check + whether or not we want to remove the line-wrapping indicator on + terminals like xterm + - _rl_update_final: when removing the line-wrapping indicator on xterm, + make sure we take invisible characters in the prompt (woff) into + account when computing the character in the rightmost physical + screen position. Fixes cosmetic line-wrapping issue reported by + Egmont Koblinger + + 11/27 + ----- +lib/sh/ufuncs.c + - fsleep: if using select to implement sleep, use restart after + a signal interrupts the select and handle pending signals. If + pselect is available, use that instead and block SIGCHLD while + pselect is executing. + Fixes report from Thiruvadi Rajaraman + + 11/28 + ----- +lib/readline/signals.c + - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS + that can be used by applications that install a wrapper for + rl_getc (rl_getc_function) so they can respond to signals that + arrive while waiting for input in the same way as rl_getc. The app + can use rl_pending_signal() to get the most recently-received + signal. From a discussion about Gnuplot initiated by + Rin Okuyama + +lib/readline/readline.h + - rl_check_signals: new extern declaration + +lib/readline/doc/rltech.texi + - rl_check_signals: document new public function + +variables.c + - set_pwd: test for and force an inherited OLDPWD to be a directory + if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by + default). Issue raised by Mikulas Patocka + +config-top.h + - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default + + 11/29 + ----- +Makefile.in + - pathexp.o: add dependencies on libintl.h. Reported by + Ross Burton + + 12/1 + ---- +lib/sh/ufuncs.c + - fsleep: add blocking and releasing SIGCHLD using sigprocmask + around call to select(2) even if pselect(2) is not available + + 12/3 + ---- +execute_cmd.c + - coproc_setstatus: new utility function, take a pointer to a coproc + and a status and mark the coproc as dead and having been reaped + with that status. Used by child processes who want to invalidate + the coproc's pid + + 12/5 + ---- +subst.c + - process_substitute: instead of just having a flag to denote that a + file descriptor is connected to a process substitution, store the + pid of the child process (still needs work) + - find_procsub_child,set_procsub_status,reap_procsubs: utility + functions to allow the job control code to detect that a process + substitution child has died and deallocate the file descriptors + or pathname + +subst.h + - find_procsub_child,set_procsub_status,reap_procsubs: extern + declarations + +nojobs.c + - set_pid_status: if we are reaping a process substitution, call + set_procsub_status to record the fact + +jobs.c + - waitchld: if we are reaping a process substitution, call + set_procsub_status to record the fact. Doesn't really do anything + yet + + 12/6 + ---- +execute_cmd.c + - execute_command: don't call unlink_fifo_list if we're in the + middle of executing a list of commands (executing_list != 0). + Partial fix for bug reported by Stephane Chazelas + + - execute_simple_command: don't close process substitution file + descriptors in the parent after forking children in a pipeline; + defer until pipeline completes, since parent may have inherited + fds from a calling scope (e.g., via `.'). EXPERIMENTAL + - execute_disk_command: don't close process substitution file + descriptors in the parent after forking the child. EXPERIMENTAL + + 12/7 + ---- +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - show-mode-in-prompt: clarify that this must be enabled before the + vi and emacs mode strings are prefixed to the prompt. Report from + Rob Foehl + + 12/8 + ---- +execute_cmd.c + - execute_coproc: don't warn about an existing coproc if the write and + read file descriptors are unusable (-1), as they will be after a + call to coproc_closeall in a subshell. Fixes spurious warning + reported by Tobias Hoffmann + +jobs.c + - bgp_resize: avoid overflow when calculating the new size if the + child process limit is something ridiculously large. Report and + fix from Natanael Copa + +execute_cmd.c + - execute_builtin_or_function: if we return via the return builtin, we + don't get a chance to free the saved fifo list, so add an unwind- + protect to make sure it happens. Part of fix for leak reported by + Oyvind Hvidsten + - execute_command_internal: if we unwind via the return builtin (e.g., + we execute a function which then returns via the return builtin to + a previous function), we don't free the saved fifo list, so add an + unwind-protect to make sure the free happens. Rest of fix for leak + reported by Oyvind Hvidsten + +subst.c + - add_fifo_list: for the FIFO case (no /dev/fd), make sure we + initialize the new members of the fifo list after xrealloc + + 12/9 + ---- +subst.c + - dev_fd_list: now a list of type `pid_t' so we can store process + associated with the pipe fd into the right element; change all + necessary functions (copy_fifo_list, add_fifo_list) + - process_substitute: store pid of child process into the right + index in dev_fd_list after opening the pipe. Process ID of -1 means + process has been reaped and fd needs to be closed (or FIFO needs to + be unlinked); value of 0 means slot is unused + +jobs.c + - wait_for_background_pids: call reap_procsubs to make sure we clean + up all reaped process substitutions before trying to wait for + everything (still needs work) + +tests/{run-procsub,procsub.{tests,right}} + - new file, tests of process substitution that have failed in the past + + 12/10 + ----- +jobs.c + - wait_for_background_pids: warn if one of the jobs is stopped + +subst.c + - wait_procsubs: new function, call wait_for for every "live" process + substitution + +jobs.c + - wait_for_background_pids: call wait_procsubs to reap any living + process subsitutions + + 12/13 + ----- +lib/readline/bind.c + - parser_if: add support for testing the readline version, using the + full set of arithmetic comparison operators (and supporting both + = and ==), using version numbers of the form major[.[minor]] + + 12/14 + ----- +subst.[ch] + - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like + string_list_dollar_at, changed all callers. Not used yet. + + 12/16 + ----- +subst.c + - param_expand: broke out cases of expanding unquoted (quoted == 0) + $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS) + with various values of IFS (unset, null, set to non-null value) to + capture the expansion subtleties. From a report back on 11/24 by + Martijn Dekker + + 12/17 + ----- +array.h + - set_element_value: new define, sets array element AE to VALUE + +variables.c + - set_pipestatus_array: use set_element_value where appropriate + + 12/18 + ----- +subst.c + - parameter_brace_find_indir: when expanding the indirect parameter + to find the eventual variable name, we don't perform word splitting. + Make sure this does the right thing for * and @. Fixes bug + reported by isabella parakiss + + 12/19 + ----- +doc/{bash.1,bashref.texi} + - indirect expansion: make sure to note that the value of the indirect + variable does not undergo word splitting as one of its expansions, + as in fix from 12/18 + + 12/22 + ----- +subst.c + - parameter_brace_expand_rhs: make sure the value this function returns + when OP is `=' is quoted appropriately, as the callers expect. More + changes from Posix interp 221. Fixes report from Martijn Dekker + + +variables.c + - assign_hashcmd: if running in a restricted shell, make sure the + target of the hash assignment can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. Fixes issue raised by Drew Parker + + +builtins/hash.def + - hash_builtin: if running in a restricted shell, make sure the + pathname target of `hash -p' can be found via a $PATH search, to + prevent users assigning commands to the hash table they would not + ordinarily have access to. + + 12/27 + ----- +array.c,arrayfunc.c,... + - many changes to clean up unused variables and functions. From a + report from Siteshwar Vashisht + + 12/28 + ----- +lib/readline/terminal.c + - _rl_term_clrscroll: save the `E3' termcap capability, which clears + the scrollback buffer where supported. Unused right now + +lib/readline/rlprivate.h + - _rl_term_clrscroll: extern declaration + +lib/readline/bind.c + - parser_if: added simple variable comparison capability. Allowable + operators are `=', `==', and `!='; boolean variables must be + compared to either `on' or `off'; variable names must be separated + from the operator by whitespace + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `if variable comparison value' construct + + 1/2/2018 + -------- +lib/glob/sm_loop.c + - EXTMATCH: when matching against !(patlist), if a filename beginning + with a `.' does not match any of the patterns in patlist, don't + return it as a match if leading dots need to be matched explicitly + (flags & FNM_PERIOD). Report from Eric Cook + + 1/3 + --- +variables.[ch] + - bind_function_def: takes an additional flags argument. If FLAGS&1, + overwrite any existing function_def hash table entry; if FLAGS==0, + leave any existing function_def alone. + +make_cmd.c + - make_function_def: call bind_function_def with flags == 0 + +execute_cmd.c + - execute_intern_function: call bind_function_def with flags == 1 so + we have function_def information that's correct for where the + function is defined, not just where it's last parsed. Fixes report + from Bruno Vasselle ; final piece of + fix from 12/15/2011 + + 1/4 + --- +subst.c + - param_expand: deal with string_list_dollar_star returning NULL. + Fixes bug reported by Martijn Dekker + +builtins/history.def + - history_builtin: enabled code that performs range deletion + + 1/5 + --- +subst.c + - do_assignment_internal: if performing a compound assignment, make + sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the + assignment word has the W_CHKLOCAL flag set + - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an + existing local variable before creating or modifying a global + variable + +builtins/declare.def + - declare_internal: new (undocumented so far) option: -G. Means to + act on global variables (create, modify) if no local variable is + found with the specified name + - declare_find_variable: new declare-specific wrapper functon for + declare builtin; obeys -g and -G options in one place + - declare_internal: if no variable is found after following any nameref + chain, look up the variable using declare_find_variable to honor the + -G option. XXX - so far, this is the only place that function is used + +subst.c + - shell_expand_word_list: before calling make_internal_declare, add + 'G' to the options list if W_CHKLOCAL is set in the word's flags. + This makes builtins like `readonly' that modify local variables in + a function behave the same for scalar and array variables + + 1/11 + ---- +parse.y + - shell_getc: move code that decides whether to append a space to an + alias expansion here from mk_alexpansion, so we can inhibit adding + a space if we're currently parsing a single or double quoted string + + 1/12 + ---- + +parse.y + - clear_string_list_expander: take a pointer to an alias that's about + to be freed and make sure there aren't any pointers to it in the + list of pushed strings. If there are, zero it out in the pushed + string list to avoid referencing freed memory in pop_string() + +alias.c + - free_alias_data: if an alias being freed is currently being expanded, + call clear_string_list_expander to remove references to it from the + list of pushed strings + + 1/14 + ---- +pcomplib.c + - progcomp_search: add code to look up an alias for the CMD argument + and return the completions for the first word of that alias if one + is found. Just a start at completing aliases, a much-requested + feature + +pcomplete.h + - COPT_LASTUSER: last flag value used by user-settable completion + options + - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values + from programmable_completions in FOUNDP argument. Moved RETRYFAIL + define here from pcomplete.c to avoid collisions with user-settable + option values (COPT_*) + + 1/15 + ---- +pcomplete.c + - programmable_completions: if we don't find any completions for a + command, and RETRY is 0, see if the command is a defined alias, + expand it, and try to expand the first word of the value as a + command, and find any programmable completions for it. Here right + now, could be moved to attempt_shell_completion later if we need + to do more analysis of the expanded line. We'll see how it works + in practice. (Disabled for now.) + + 1/16 + ---- +parse.y + - grammar: when timing the null command, make sure to turn off the + flags in parser_state (PST_REDIRLIST) that make_simple_command sets + when given a NULL second argument, since it assumes that it's going + to turn those off when it gets the next word of the simple command + (which it never gets in this case). Fixes bug reported by + Anti Räis + + 1/19 + ---- +lib/readline/rltty.c + - prepare_terminal_settings (termios/termio): if there is a function + bound to the VDISCARD character in the current keymap, set VDISCARD + to _POSIX_VDISABLE while readline is active. From a report from + Rhialto + + 1/22 + ---- +builtins/history.def + - histtime: check whether or not localtime() returns NULL, and make + sure we only call strftime() with a valid struct tm. This can happen + when the timestamps in the history file overflow a time_t. Fixes bug + reported by Luke Dashjr + +bashline.c + - edit_and_execute_command: if we're in vi editing mode, make sure + we end up in insert mode after executing the commands from the + edited file. This seems to be what other shells do. Report from + Stan Marsh + + 1/26 + ---- +bashline.c + - command_word_completion_function: match alias and shell function + names case-insensitively if the readline completion-ignore-case + variable is set. Inspired by report from + +lib/readline/display.c + - update_line: when performing a dumb update after wrapping the line + (usually due to printing the prompt), make sure we adjust + _rl_last_c_pos if there are invisible characters in prompt lines + other than the first (we assume those invisible characters are in + the last line, which is nearly always the case). We adjust by the + total number of invisible chars less the number of invisible chars + in the first prompt line. From a report in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273 + +execute_cmd.c + - execute_command_internal: if redirections attached to a compound + command fail, make sure we discard the `internal_fifos' unwind- + protect frame after freeing the copied fifo_list and before returning + + 1/30 + ---- +lib/readline/rlprivate.h + - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems + with the tty driver thinking the cursor was in the wrong position. + Fixes issue reported by Egmont Koblinger + + 1/31 + ---- +lib/sh/zread.c + - zread,zreadintr: call check_signals() before calling read() to + minimize the race window between signal delivery, signal handling, + and a blocking read(2). Partial fix for FIFO read issue reported by + Oyvind Hvidsten + +doc/{bash.1,bashref.texi} + - shopt: document `assoc_expand_once' shell option + + 2/1 + --- +config-top.h + - DONT_REPORT_SIGPIPE: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM + + 2/6 + --- +lib/readline/text.c + - rl_insert: don't attempt to optimize typeahead if we are only reading + a fixed number of characters (rl_num_chars_to_read > 0) + +redir.c + - redir_special_open: if the shell is restricted, return a + RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp + sockets. Inspired by report from Blake Burkhart + - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, + return that right away (instead of errno) so we can print a better + error message + + 2/11 + ---- +jobs.c + - bgp_resize: fix problems with (pid_t) overflow when calculating new + size for table when js.c_childmax is near the limit of a pid_t + (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with + 32-bit pid_t). Fixes hang reported by Natanael Copa + based on his patch from 12/8. + - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) + +include/typemax.h + - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, + silences some compiler warnings + + 2/14 + ---- +Makefile.in + - maybe-clean: use cd and pwd -P to test whether or not two directory + names identical, since topdir = '.' and BUILD_DIR = full pathname + when you use something like `bash ./configure'. Problem reported by + Michael Felt + +subst.c + - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't + treat `'' and `"' as candidates for possible sequences of delimiters, + even if they're part of the delimiter set (the delims argument). + Fixes problem with completing lines like `foo --bar='quux baz' xx' + reported by Nick Patavalis + + 2/15 + ---- +copy_cmd.c + - copy_word_list: build the list in the right order, avoiding having + to reverse it at the end. Helps with long argument lists + +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 thta takes a + length parameter to accommodate NUL in the key sequence. Patch from + Koichi Murase + - rl_function_of_keyseq_len: new application-callable function that + takes a length parameter; otherwise equivalent to rl_function_of_keyseq. + +lib/readline/readline.h + - rl_function_of_keyseq_len: add extern declration 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/gm_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] diff --git a/CWRU/mh-folder-comp b/CWRU/mh-folder-comp deleted file mode 100644 index 905000c7a..000000000 --- a/CWRU/mh-folder-comp +++ /dev/null @@ -1,449 +0,0 @@ -From jwe@che.utexas.edu Wed Sep 21 17:23:40 1994 -Flags: 10 -Return-Path: jwe@che.utexas.edu -Received: from po.CWRU.Edu (root@po.CWRU.Edu [129.22.4.2]) by odin.INS.CWRU.Edu with ESMTP (8.6.8.1+cwru/CWRU-2.1-ins) - id RAA04010; Wed, 21 Sep 1994 17:23:39 -0400 (from jwe@che.utexas.edu for ) -Received: from life.ai.mit.edu (life.ai.mit.edu [128.52.32.80]) by po.CWRU.Edu with SMTP (8.6.8.1+cwru/CWRU-2.2) - id RAA02121; Wed, 21 Sep 1994 17:23:28 -0400 (from jwe@che.utexas.edu for ) -Received: from schoch.che.utexas.edu by life.ai.mit.edu (4.1/AI-4.10) for chet@po.cwru.edu id AA09989; Wed, 21 Sep 94 17:23:17 EDT -Received: from localhost (jwe@localhost) by schoch.che.utexas.edu (8.6.8.1/8.6) with SMTP id QAA05737; Wed, 21 Sep 1994 16:22:01 -0500 -Message-Id: <199409212122.QAA05737@schoch.che.utexas.edu> -To: march@tudor.com -Cc: bug-bash@prep.ai.mit.edu -Subject: Re: Completion feature possible? -In-Reply-To: Your message of 21 Sep 94 13:30:22 EDT -Date: Wed, 21 Sep 94 16:22:00 EDT -From: John Eaton - -Gregory F. March wrote: - -: I was having a discussion about MH with one of my friends the other -: day and I got to thinking that the +folder/subfolder scheme for naming -: mail folders is a real pain because completion doesn't work on -: them. Someone then mentioned that zsh (I think) has the ability to -: specify how to complete (I guess where to look for the files) for -: different prefixes. Bash right now knows about '@', '~', and '$' (any -: others?). It would be really helpful if one could define something -: like: -: -: completion '+' "$HOME/Mail" -: -: in a config file someplace. Would this be easy? Is there a list of -: TODO item that someone might want to add this to? - -It would be nice to have a general completion feature like this. - -Until that happens, maybe you will find the following patch useful. -It makes MH folder name completion work with bash. The diffs are -relative to version 1.14.2. - -I realize that changes to readline.c and and complete.c are not good -since they add some MH-specific stuff to the readline code and not to -bash, but when I first wrote this, I had no idea what else to do. - -Chet, would you consider adding this if it were cleaned up a bit? -Made optional with cpp conditionals? - -This feature has been very useful to me for the last several years -(since about 1.05 or 1.06, I think). - -Thanks, - --- -John W. Eaton | 4.3BSD is not perfect. -- Leffler, et al. (1989). -jwe@che.utexas.edu | - - --------------------------------cut here------------------------------- -diff -rc bash-1.14.2/bashline.c bash-1.14.2.local/bashline.c -*** bash-1.14.2/bashline.c Wed Aug 3 09:32:45 1994 ---- bash-1.14.2.local/bashline.c Wed Sep 21 15:39:04 1994 -*************** -*** 58,63 **** ---- 58,64 ---- - static char *hostname_completion_function (); - static char *command_word_completion_function (); - static char *command_subst_completion_function (); -+ static char *mh_folder_completion_function (); - - static void snarf_hosts_from_file (), add_host_name (); - static void sort_hostname_list (); -*************** -*** 90,95 **** ---- 91,98 ---- - bash_complete_username_internal (), - bash_complete_hostname (), bash_possible_hostname_completions (), - bash_complete_hostname_internal (), -+ bash_complete_mh_folder (), bash_possible_mh_folder_completions (), -+ bash_complete_mh_folder_internal (), - bash_complete_variable (), bash_possible_variable_completions (), - bash_complete_variable_internal (), - bash_complete_command (), bash_possible_command_completions (), -*************** -*** 134,140 **** - rl_terminal_name = get_string_value ("TERM"); - rl_instream = stdin; - rl_outstream = stderr; -! rl_special_prefixes = "$@"; - - /* Allow conditional parsing of the ~/.inputrc file. */ - rl_readline_name = "Bash"; ---- 137,143 ---- - rl_terminal_name = get_string_value ("TERM"); - rl_instream = stdin; - rl_outstream = stderr; -! rl_special_prefixes = "$@+"; - - /* Allow conditional parsing of the ~/.inputrc file. */ - rl_readline_name = "Bash"; -*************** -*** 193,198 **** ---- 196,207 ---- - rl_bind_key_in_map ('@', bash_possible_hostname_completions, - emacs_ctlx_keymap); - -+ rl_add_defun ("complete-mh-folder", bash_complete_mh_folder, META('+')); -+ rl_add_defun ("possible-mh-folder-completions", -+ bash_possible_mh_folder_completions, -1); -+ rl_bind_key_in_map ('+', bash_possible_mh_folder_completions, -+ emacs_ctlx_keymap); -+ - rl_add_defun ("complete-variable", bash_complete_variable, -1); - rl_bind_key_in_map ('$', bash_complete_variable, emacs_meta_keymap); - rl_add_defun ("possible-variable-completions", -*************** -*** 656,661 **** ---- 665,677 ---- - if (!matches && *text == '@') - matches = completion_matches (text, hostname_completion_function); - -+ /* Another one. Why not? If the word starts in '+', then look for -+ matching mh folders for completion first. */ -+ if (!matches && *text == '+') -+ { -+ matches = completion_matches (text, mh_folder_completion_function); -+ } -+ - /* And last, (but not least) if this word is in a command position, then - complete over possible command names, including aliases, functions, - and command names. */ -*************** -*** 1077,1082 **** ---- 1093,1185 ---- - return ((char *)NULL); - } - -+ /* How about a completion function for mh folders? */ -+ static char * -+ mh_folder_completion_function (text, state) -+ int state; -+ char *text; -+ { -+ extern int rl_filename_completion_desired; -+ -+ extern char *get_mh_path (); -+ -+ static char *mh_path = (char *)NULL; -+ static int len; -+ static int istate; -+ static char *val; -+ char *hint; -+ -+ static char *mh_folder_hint = (char *)NULL; -+ -+ /* If we don't have any state, make some. */ -+ if (!state) -+ { -+ val = (char *)NULL; -+ -+ if (mh_path) -+ free (mh_path); -+ -+ mh_path = get_mh_path (); -+ if (!mh_path && !(hint[1] == '/' || hint[1] == '.')) -+ return ((char *)NULL); -+ -+ len = strlen (mh_path); -+ } -+ -+ if (mh_folder_hint) -+ free (mh_folder_hint); -+ -+ hint = text; -+ if (*hint == '+') -+ hint++; -+ -+ mh_folder_hint = (char *)xmalloc (2 + len + strlen (hint)); -+ if (*hint == '/' || *hint == '.') { -+ len = -1; -+ sprintf (mh_folder_hint, "%s", hint); -+ } else -+ sprintf (mh_folder_hint, "%s/%s", mh_path, hint); -+ -+ istate = (val != (char *)NULL); -+ -+ again: -+ val = filename_completion_function (mh_folder_hint, istate); -+ istate = 1; -+ -+ if (!val) -+ { -+ return ((char *)NULL); -+ } -+ else -+ { -+ char *ptr = val + len + 1, *temp; -+ struct stat sb; -+ int status = stat (val, &sb); -+ -+ if (status != 0) -+ return ((char *)NULL); -+ -+ if ((sb.st_mode & S_IFDIR) == S_IFDIR) -+ { -+ temp = (char *)xmalloc (2 + strlen (ptr)); -+ *temp = '+'; -+ strcpy (temp + 1, ptr); -+ -+ free (val); -+ val = ""; -+ -+ rl_filename_completion_desired = 1; -+ -+ return (temp); -+ } -+ else -+ { -+ free (val); -+ } -+ goto again; -+ } -+ } -+ - /* History and alias expand the line. */ - static char * - history_expand_line_internal (line) -*************** -*** 1628,1633 **** ---- 1731,1773 ---- - { - bash_specific_completion - (what_to_do, (Function *)username_completion_function); -+ } -+ -+ static void -+ bash_complete_mh_folder (ignore, ignore2) -+ int ignore, ignore2; -+ { -+ bash_complete_mh_folder_internal (TAB); -+ } -+ -+ static void -+ bash_possible_mh_folder_completions (ignore, ignore2) -+ int ignore, ignore2; -+ { -+ bash_complete_mh_folder_internal ('?'); -+ } -+ -+ static void -+ bash_complete_mh_folder_internal (what_to_do) -+ int what_to_do; -+ { -+ Function *orig_func; -+ CPPFunction *orig_attempt_func; -+ char *orig_rl_completer_word_break_characters; -+ extern char *rl_completer_word_break_characters; -+ -+ orig_func = rl_completion_entry_function; -+ orig_attempt_func = rl_attempted_completion_function; -+ orig_rl_completer_word_break_characters = rl_completer_word_break_characters; -+ rl_completion_entry_function = (Function *)mh_folder_completion_function; -+ rl_attempted_completion_function = (CPPFunction *)NULL; -+ rl_completer_word_break_characters = " \t\n\"\'"; -+ -+ rl_complete_internal (what_to_do); -+ -+ rl_completion_entry_function = orig_func; -+ rl_attempted_completion_function = orig_attempt_func; -+ rl_completer_word_break_characters = orig_rl_completer_word_break_characters; - } - - static void -Only in bash-1.14.2.local: bashline.c.orig -diff -rc bash-1.14.2/lib/readline/complete.c bash-1.14.2.local/lib/readline/complete.c -*** bash-1.14.2/lib/readline/complete.c Tue Jul 26 12:59:57 1994 ---- bash-1.14.2.local/lib/readline/complete.c Wed Sep 21 15:41:19 1994 -*************** -*** 733,751 **** - if (rl_filename_completion_desired) - { - struct stat finfo; -! char *filename = tilde_expand (matches[0]); - -! if ((stat (filename, &finfo) == 0) && S_ISDIR (finfo.st_mode)) - { -! if (rl_line_buffer[rl_point] != '/') -! rl_insert_text ("/"); - } -! else - { -! if (rl_point == rl_end) -! rl_insert_text (temp_string); - } -- free (filename); - } - else - { ---- 733,768 ---- - if (rl_filename_completion_desired) - { - struct stat finfo; -! char *tilde_expand (); -! char *plus_expand (); -! char *filename = (char *) NULL; - -! switch (*matches[0]) - { -! case '+': -! filename = plus_expand (matches[0]); -! break; -! case '~': -! default: -! filename = tilde_expand (matches[0]); -! break; - } -! -! if (filename) - { -! if ((stat (filename, &finfo) == 0) -! && S_ISDIR (finfo.st_mode)) -! { -! if (rl_line_buffer[rl_point] != '/') -! rl_insert_text ("/"); -! } -! else -! { -! if (rl_point == rl_end) -! rl_insert_text (temp_string); -! } -! free (filename); - } - } - else - { -Only in bash-1.14.2.local/lib/readline: diffs -diff -rc bash-1.14.2/lib/readline/readline.c bash-1.14.2.local/lib/readline/readline.c -*** bash-1.14.2/lib/readline/readline.c Fri Aug 12 12:47:46 1994 ---- bash-1.14.2.local/lib/readline/readline.c Wed Sep 21 15:36:07 1994 -*************** -*** 23,28 **** ---- 23,29 ---- - #define READLINE_LIBRARY - - #include -+ #include - #include - #include - #if !defined (NO_SYS_FILE) -*************** -*** 3518,3523 **** ---- 3519,3616 ---- - } - - #endif /* TEST */ -+ -+ #define cr_whitespace(c) ((c) == '\r' || (c) == '\n' || whitespace(c)) -+ -+ char * -+ get_mh_path () -+ { -+ static FILE *fp = (FILE *)NULL; -+ char buf[512]; /* XXX */ -+ char profile[512]; /* XXX */ -+ char *bp; -+ char *temp_home; -+ char *temp_path; -+ -+ temp_home = (char *)getenv ("HOME"); -+ if (!temp_home) -+ return ((char *)NULL); -+ -+ strcpy (profile, temp_home); -+ strcat (profile, "/.mh_profile"); -+ -+ if (fp) -+ fclose (fp); -+ -+ fp = fopen (profile, "r"); -+ if (fp == (FILE *)NULL) -+ return ((char *)NULL); -+ -+ while (fgets (buf, 512, fp) != (char *)NULL) /* XXX */ -+ { -+ if ((bp = strstr (buf, "Path:")) != (char *)NULL) -+ { -+ bp += 5; -+ while (whitespace (*bp)) -+ bp++; -+ -+ if (*bp == '\0') -+ return ((char *)NULL); -+ -+ temp_path = (char *)xmalloc (3 + strlen (bp) + strlen (temp_home)); -+ -+ strcpy (temp_path, temp_home); -+ strcat (temp_path, "/"); -+ strcat (temp_path, bp); -+ -+ bp = temp_path; -+ -+ while (!(cr_whitespace (*bp))) -+ bp++; -+ -+ *bp = '\0'; -+ -+ return temp_path; -+ } -+ } -+ -+ return ((char *)NULL); -+ } -+ -+ /* Expand FILENAME if it begins with a plus. This always returns -+ a new string. */ -+ char * -+ plus_expand (filename) -+ char *filename; -+ { -+ static char *dirname = (char *)NULL; -+ -+ if (filename && *filename == '+') -+ { -+ char *mh_path = get_mh_path (); -+ -+ if (filename[1] == '/' || filename[1] == '.') -+ { -+ dirname = (char *)xmalloc (1 + strlen (filename)); -+ -+ strcpy(dirname, filename+1); -+ -+ return dirname; -+ } -+ -+ if (mh_path) -+ { -+ dirname = (char *)xmalloc (1 + strlen (filename) + strlen (mh_path)); -+ -+ strcpy (dirname, mh_path); -+ strcat (dirname, "/"); -+ strcat (dirname, filename+1); -+ -+ return dirname; -+ } -+ } -+ return (char *)NULL; -+ } - - - /* - diff --git a/INSTALL b/INSTALL index c60d59176..9d5dee0be 100644 --- a/INSTALL +++ b/INSTALL @@ -38,10 +38,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. +If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + +See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -57,8 +71,6 @@ code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile Bash for a different kind of computer), type 'make distclean'. -Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash - Compilers and Options ===================== @@ -76,8 +88,6 @@ On systems that have the 'env' program, you can do it like this: The configuration process uses GCC to build Bash if it is available. -Next: Installation Names, Prev: Compilers and Options, Up: Installing Bash - Compiling For Multiple Architectures ==================================== @@ -86,10 +96,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code @@ -108,8 +118,6 @@ The 'mkclone' script requires Bash, so you must have already built Bash for at least one architecture before you can create build directories for other architectures. -Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash - Installation Names ================== @@ -125,8 +133,6 @@ option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. -Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash - Specifying the System Type ========================== @@ -140,8 +146,6 @@ canonical name with three fields: 'CPU-COMPANY-SYSTEM' (e.g., See the file 'support/config.sub' for the possible values of each field. -Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash - Sharing Defaults ================ @@ -154,8 +158,6 @@ looks for 'PREFIX/share/config.site' if it exists, then A warning: the Bash 'configure' looks for a site script, but not all 'configure' scripts do. -Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash - Operation Controls ================== @@ -185,8 +187,6 @@ Operation Controls 'configure' also accepts some other, not widely used, boilerplate options. 'configure --help' prints the complete list. -Prev: Operation Controls, Up: Installing Bash - Optional Features ================= @@ -321,6 +321,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -391,7 +397,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. diff --git a/MANIFEST b/MANIFEST index a306b6ffc..56528b5bf 100644 --- a/MANIFEST +++ b/MANIFEST @@ -11,6 +11,7 @@ cross-build d doc d examples d #examples/obashdb d +examples/bash-completion d examples/complete d examples/functions d examples/scripts d @@ -209,6 +210,7 @@ builtins/bashgetopt.h f cross-build/cygwin32.cache f cross-build/x86-beos.cache f cross-build/opennt.cache f +cross-build/qnx.cache f include/ansi_stdlib.h f include/chartypes.h f include/filecntl.h f @@ -239,6 +241,7 @@ lib/glob/glob.c f lib/glob/glob.h f lib/glob/glob_loop.c f lib/glob/gmisc.c f +lib/glob/gm_loop.c f lib/glob/xmbsrtowcs.c f lib/glob/collsyms.h f lib/glob/doc/Makefile f @@ -534,6 +537,8 @@ po/nb.gmo f po/nl.po f po/pl.gmo f po/pl.po f +po/pt.gmo f +po/pt.po f po/pt_BR.gmo f po/pt_BR.po f po/ro.gmo f @@ -631,6 +636,7 @@ support/mkversion.sh f 755 support/mksignames.c f support/signames.c f support/bashbug.sh f +support/bashbug.sh.in f support/man2html.c f support/recho.c f support/zecho.c f @@ -649,6 +655,8 @@ examples/INDEX.html f #examples/obashdb/README f #examples/obashdb/bashdb f #examples/obashdb/bashdb.el f +examples/bash-completion/README f +examples/bash-completion/bash-completion-2.5.tar.xz f examples/complete/bash_completion f examples/complete/cdfunc f examples/complete/complete-examples f @@ -672,6 +680,7 @@ examples/loadables/strftime.c f examples/loadables/truefalse.c f #examples/loadables/getconf.h f #examples/loadables/getconf.c f +examples/loadables/fdflags.c f examples/loadables/finfo.c f examples/loadables/cat.c f #examples/loadables/cut.c f @@ -681,6 +690,7 @@ examples/loadables/dirname.c f examples/loadables/tty.c f examples/loadables/pathchk.c f examples/loadables/tee.c f +examples/loadables/rm.c f examples/loadables/rmdir.c f examples/loadables/head.c f examples/loadables/printenv.c f @@ -693,6 +703,7 @@ examples/loadables/mkdir.c f examples/loadables/ln.c f examples/loadables/mypid.c f examples/loadables/unlink.c f +examples/loadables/stat.c f examples/loadables/perl/Makefile.in f examples/loadables/perl/README f examples/loadables/perl/bperl.c f @@ -701,9 +712,12 @@ examples/loadables/perl/iperl.c f #examples/loadables/xtitle.c f examples/functions/array-stuff f examples/functions/array-to-string f +examples/functions/arrayops.bash f examples/functions/autoload f examples/functions/autoload.v2 f examples/functions/autoload.v3 f +examples/functions/autoload.v4 f +examples/functions/autoload.v4.t f examples/functions/basename f #examples/functions/basename2 f #examples/functions/coproc.bash f @@ -808,6 +822,8 @@ tests/test-glue-functions f tests/alias.tests f tests/alias1.sub f tests/alias2.sub f +tests/alias3.sub f +tests/alias4.sub f tests/alias.right f tests/appendop.tests f tests/appendop1.sub f @@ -824,6 +840,7 @@ tests/arith4.sub f tests/arith5.sub f tests/arith6.sub f tests/arith7.sub f +tests/arith8.sub f tests/array.tests f tests/array.right f tests/array1.sub f @@ -847,6 +864,10 @@ tests/array18.sub f tests/array19.sub f tests/array20.sub f tests/array21.sub f +tests/array22.sub f +tests/array23.sub f +tests/array24.sub f +tests/array25.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -859,6 +880,7 @@ tests/assoc5.sub f tests/assoc6.sub f tests/assoc7.sub f tests/assoc8.sub f +tests/assoc9.sub f tests/attr.tests f tests/attr.right f tests/attr1.sub f @@ -883,6 +905,8 @@ tests/source7.sub f tests/case.tests f tests/case.right f tests/case1.sub f +tests/case2.sub f +tests/case3.sub f tests/casemod.tests f tests/casemod.right f tests/comsub.tests f @@ -890,6 +914,7 @@ tests/comsub.right f tests/comsub1.sub f tests/comsub2.sub f tests/comsub3.sub f +tests/comsub4.sub f tests/comsub-eof.tests f tests/comsub-eof0.sub f tests/comsub-eof1.sub f @@ -910,6 +935,7 @@ tests/cond-regexp2.sub f tests/cond-regexp3.sub f tests/coproc.tests f tests/coproc.right f +tests/coproc1.sub f tests/cprint.tests f tests/cprint.right f tests/dbg-support.right f @@ -933,6 +959,7 @@ tests/dollar-at3.sub f tests/dollar-at4.sub f tests/dollar-at5.sub f tests/dollar-at6.sub f +tests/dollar-at7.sub f tests/dollar-star1.sub f tests/dollar-star2.sub f tests/dollar-star3.sub f @@ -940,11 +967,15 @@ tests/dollar-star4.sub f tests/dollar-star5.sub f tests/dollar-star6.sub f tests/dollar-star7.sub f +tests/dollar-star8.sub f +tests/dollar-star9.sub f tests/dollar.right f tests/dstack.tests f tests/dstack.right f tests/dstack2.tests f tests/dstack2.right f +tests/dynvar.tests f +tests/dynvar.right f tests/errors.tests f tests/errors.right f tests/errors1.sub f @@ -953,6 +984,7 @@ tests/errors3.sub f tests/errors4.sub f tests/errors5.sub f tests/errors6.sub f +tests/errors7.sub f tests/execscript f tests/exec.right f tests/exec1.sub f 755 @@ -979,6 +1011,9 @@ tests/exp6.sub f tests/exp7.sub f tests/exp8.sub f tests/exp9.sub f +tests/exp10.sub f +tests/exp11.sub f +tests/exp12.sub f tests/exportfunc.tests f tests/exportfunc.right f tests/exportfunc1.sub f @@ -995,6 +1030,7 @@ tests/extglob3.sub f tests/extglob3.tests f tests/extglob3.right f tests/extglob4.sub f +tests/extglob5.sub f tests/func.tests f tests/func.right f tests/func1.sub f @@ -1015,6 +1051,8 @@ tests/getopts9.sub f tests/getopts10.sub f tests/glob.tests f tests/glob1.sub f +tests/glob2.sub f +tests/glob3.sub f tests/glob.right f tests/globstar.tests f tests/globstar.right f @@ -1025,6 +1063,7 @@ tests/heredoc.right f tests/heredoc1.sub f tests/heredoc2.sub f tests/heredoc3.sub f +tests/heredoc4.sub f tests/herestr.tests f tests/herestr.right f tests/herestr1.sub f @@ -1039,8 +1078,10 @@ tests/history.right f tests/history.list f 444 tests/history1.sub f tests/history2.sub f +tests/history3.sub f tests/ifs.tests f tests/ifs.right f +tests/ifs1.sub f tests/ifs-posix.tests f tests/ifs-posix.right f tests/input-line.sh f @@ -1062,6 +1103,7 @@ tests/jobs2.sub f tests/jobs3.sub f tests/jobs4.sub f tests/jobs5.sub f +tests/jobs6.sub f tests/jobs.right f tests/lastpipe.right f tests/lastpipe.tests f @@ -1093,6 +1135,7 @@ tests/nameref15.sub f tests/nameref16.sub f tests/nameref17.sub f tests/nameref18.sub f +tests/nameref19.sub f tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f @@ -1105,6 +1148,7 @@ tests/new-exp7.sub f tests/new-exp8.sub f tests/new-exp9.sub f tests/new-exp10.sub f +tests/new-exp11.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f @@ -1126,10 +1170,15 @@ tests/parser.right f tests/parser1.sub f tests/posix2.tests f tests/posix2.right f +tests/posix2syntax.sub f tests/posixexp.tests f tests/posixexp.right f tests/posixexp1.sub f tests/posixexp2.sub f +tests/posixexp3.sub f +tests/posixexp4.sub f +tests/posixexp5.sub f +tests/posixexp6.sub f tests/posixexp2.tests f tests/posixexp2.right f tests/posixpat.tests f @@ -1144,6 +1193,9 @@ tests/printf1.sub f tests/printf2.sub f tests/printf3.sub f tests/printf4.sub f +tests/procsub.tests f +tests/procsub.right f +tests/procsub1.sub f tests/quote.tests f tests/quote.right f tests/quote1.sub f @@ -1171,12 +1223,13 @@ tests/redir8.sub f tests/redir9.sub f tests/redir10.sub f tests/redir11.sub f -tests/redir12.sub f tests/rhs-exp.tests f tests/rhs-exp.right f tests/rhs-exp1.sub f tests/rsh.tests f tests/rsh.right f +tests/rsh1.sub f +tests/rsh2.sub f tests/run-all f tests/run-minimal f tests/run-alias f @@ -1201,6 +1254,7 @@ tests/run-dbg-support f tests/run-dbg-support2 f tests/run-dirstack f tests/run-dollars f +tests/run-dynvar f tests/run-errors f tests/run-execscript f tests/run-exp-tests f @@ -1242,6 +1296,7 @@ tests/run-posixpat f tests/run-posixpipe f tests/run-precedence f tests/run-printf f +tests/run-procsub f tests/run-quote f tests/run-read f tests/run-redir f @@ -1272,6 +1327,7 @@ tests/shopt.right f tests/strip.tests f tests/strip.right f tests/test.tests f +tests/test1.sub f tests/test.right f tests/tilde.tests f tests/tilde.right f @@ -1285,6 +1341,7 @@ tests/trap2a.sub f 755 tests/trap3.sub f tests/trap4.sub f tests/trap5.sub f +tests/trap6.sub f tests/type.tests f tests/type.right f tests/type1.sub f @@ -1304,6 +1361,10 @@ tests/varenv5.sub f tests/varenv6.sub f tests/varenv7.sub f tests/varenv8.sub f +tests/varenv9.sub f +tests/varenv10.sub f +tests/varenv11.sub f +tests/varenv12.sub f tests/version f tests/version.mini f tests/vredir.tests f diff --git a/MANIFEST.doc b/MANIFEST.doc deleted file mode 100644 index 736ad5b5e..000000000 --- a/MANIFEST.doc +++ /dev/null @@ -1,24 +0,0 @@ -# -# Master Manifest file for documentation-only distribution -# -doc d -MANIFEST.doc f -doc/article.ps f -doc/rose94.ps f -doc/bash.ps f -doc/bashbug.ps f -doc/builtins.ps f -doc/rbash.ps f -doc/bashref.ps f -doc/bashref.dvi f -doc/bash.0 f -doc/bashbug.0 f -doc/builtins.0 f -doc/rbash.0 f -doc/article.txt f -doc/bash.html f -doc/bashref.html f -doc/article.pdf f -doc/bash.pdf f -doc/bashref.pdf f -doc/rose94.pdf f diff --git a/Makefile.in b/Makefile.in index c7b62bc05..0e6c948eb 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile for bash-4.4, version 4.18 +# Makefile for bash-5.0, version 4.25 # -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -77,6 +77,7 @@ AR = @AR@ ARFLAGS = @ARFLAGS@ RANLIB = @RANLIB@ SIZE = @SIZE@ +STRIP = strip INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -144,16 +145,23 @@ LOCAL_LDFLAGS = @LOCAL_LDFLAGS@ SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS) -BASE_CCFLAGS = $(PROFILE_FLAGS) $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ +BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \ $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) -CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) +CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS) CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -LDFLAGS = @LDFLAGS@ $(STATIC_LD) $(LOCAL_LDFLAGS) $(PROFILE_FLAGS) $(CFLAGS) +BASE_LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS) +LDFLAGS = ${ADDON_LDFLAGS} ${BASE_LDFLAGS} ${PROFILE_FLAGS} ${STATIC_LD} LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD) +ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer +ASAN_XLDFLAGS = -fsanitize=address + +GCOV_XCFLAGS = -fprofile-arcs -ftest-coverage +GCOV_XLDFLAGS = -fprofile-arcs -ftest-coverage + INCLUDES = -I. @RL_INCLUDE@ -I$(srcdir) -I$(BASHINCDIR) -I$(LIBSRC) $(INTL_INC) # Maybe add: -Wextra @@ -583,22 +591,38 @@ $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) @echo " ***********************************************************" @echo -bashbug: $(SUPPORT_SRC)bashbug.sh config.h Makefile $(VERSPROG) - @sed -e "s%!MACHINE!%$(Machine)%" -e "s%!OS!%$(OS)%" \ - -e "s%!CFLAGS!%$(CCFLAGS)%" -e "s%!CC!%$(CC)%" \ - -e "s%!RELEASE!%$(Version)%" -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ - -e "s%!MACHTYPE!%$(MACHTYPE)%" -e "s%!RELSTATUS!%$(RELSTATUS)%" \ - $(SUPPORT_SRC)bashbug.sh > $@ +bashbug: $(SDIR)/bashbug.sh config.h Makefile $(VERSPROG) + @sed -e "s%!PATCHLEVEL!%$(PatchLevel)%" \ + $(SDIR)/bashbug.sh > $@ @chmod a+rx bashbug strip: $(Program) .made - strip $(Program) + $(STRIP) $(Program) ls -l $(Program) -$(SIZE) $(Program) lint: ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made +asan: + ${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made + +# cheating +gcov: + ${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made + + +# have to make this separate because making tests depend on $(PROGRAM) +asan-tests: asan $(TESTS_SUPPORT) + @-test -d tests || mkdir tests + @cp $(TESTS_SUPPORT) tests + @( cd $(srcdir)/tests && \ + PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} ) + +profiling-tests: ${PROGRAM} + @test "X$$PROFILE_FLAGS" == "X" && { echo "profiling-tests: must be built with profiling enabled" >&2; exit 1; } + @${MAKE} ${MFLAGS} tests TESTSCRIPT=run-gprof + version.h: $(SOURCES) config.h Makefile patchlevel.h $(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \ && mv newversion.h version.h @@ -902,7 +926,7 @@ maintainer-clean: basic-clean $(RM) $(CREATED_SUPPORT) Makefile pathnames.h maybe-clean: - -if test "X$(topdir)" != "X$(BUILD_DIR)" ; then \ + -if test X"`cd $(topdir) && pwd -P`" != X"`cd $(BUILD_DIR) && pwd -P`" ; then \ $(RM) parser-built y.tab.c y.tab.h ; \ fi @@ -981,19 +1005,19 @@ error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -error.o: make_cmd.h subst.h sig.h pathnames.h externs.h +error.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h error.o: input.h execute_cmd.h eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h +eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h eval.o: input.h execute_cmd.h execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h execute_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +execute_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit.h siglist.h execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h @@ -1003,31 +1027,31 @@ expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h +expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h expr.o: ${BASHINCDIR}/chartypes.h findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h findcmd.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h -findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h +findcmd.o: flags.h hashlib.h pathexp.h hashcmd.h execute_cmd.h findcmd.o: ${BASHINCDIR}/chartypes.h flags.o: config.h flags.h flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.h flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -general.o: make_cmd.h subst.h sig.h pathnames.h externs.h +general.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h parser.h general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h general.o: ${BASHINCDIR}/chartypes.h hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h pathnames.h hashlib.h -hashcmd.o: quit.h sig.h +hashcmd.o: quit.h sig.h flags.h hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h @@ -1035,7 +1059,7 @@ hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h -input.o: quit.h +input.o: quit.h shell.h pathnames.h list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h @@ -1058,11 +1082,12 @@ make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h m make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h +make_cmd.o: shell.h execute_cmd.h pathnames.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h +y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h execute_cmd.o y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1089,7 +1114,7 @@ shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR} shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h +shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h @@ -1097,7 +1122,7 @@ sig.o: config.h bashtypes.h sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h sig.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h +sig.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h sig.o: jobs.h siglist.h trap.h $(DEFSRC)/common.h bashline.h bashhist.h sig.o: ${DEFDIR}/builtext.h siglist.o: config.h bashtypes.h siglist.h trap.h @@ -1127,8 +1152,8 @@ test.o: ${DEFSRC}/common.h trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h +trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h +trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h trap.o: signames.h $(DEFSRC)/common.h trap.o: ${DEFDIR}/builtext.h jobs.h unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h @@ -1137,7 +1162,7 @@ variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINC variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h variables.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h +variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h @@ -1152,14 +1177,14 @@ jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDI jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h -jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h +jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h jobs.o: execute_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h jobs.o: ${BASHINCDIR}/posixtime.h nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h -nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h +nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h parser.h nojobs.o: $(DEFDIR)/builtext.h # shell features that may be compiled in @@ -1175,6 +1200,7 @@ arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.h +arrayfunc.o: execute_cmd.h arrayfunc.o: $(DEFSRC)/common.h arrayfunc.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1217,14 +1243,14 @@ bashhist.o: ${BASHINCDIR}/filecntl.h bashhist.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h bashhist.o: $(GLOB_LIBSRC)/strmatch.h bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h @@ -1279,6 +1305,7 @@ mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h y.tab.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h +pathexp.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h pcomplete.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h pcomplib.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h print_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h @@ -1310,12 +1337,12 @@ builtins/common.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftypes.h builtins/common.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h builtins/common.o: dispose_cmd.h make_cmd.h subst.h externs.h bashhist.h builtins/common.o: execute_cmd.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h pathnames.h -builtins/common.o: ${DEFDIR}/builtext.h +builtins/common.o: ${DEFDIR}/builtext.h parser.h builtins/common.o: ${BASHINCDIR}/chartypes.h builtins/evalfile.o: bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins/evalfile.o: shell.h syntax.h config.h bashjmp.h command.h general.h xmalloc.h error.h builtins/evalfile.o: variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h -builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h +builtins/evalfile.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h builtins/evalfile.o: jobs.h builtins.h flags.h input.h execute_cmd.h builtins/evalfile.o: bashhist.h $(DEFSRC)/common.h builtins/evalstring.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h @@ -1345,12 +1372,12 @@ builtins/bind.o: $(DEFSRC)/bashgetopt.h pathnames.h builtins/break.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/break.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/break.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/break.o: pathnames.h +builtins/break.o: pathnames.h execute_cmd.h builtins/builtin.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/builtin.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/builtin.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/builtin.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/builtin.o: pathnames.h +builtins/builtin.o: pathnames.h execute_cmd.h builtins/caller.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/caller.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/caller.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1391,33 +1418,34 @@ builtins/exit.o: bashtypes.h builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/exit.o: pathnames.h +builtins/exit.o: pathnames.h execute_cmd.h builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/fc.o: flags.h unwind_prot.h variables.h arrayfunc.h conftypes.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/fc.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h quit.h -builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h +builtins/fc.o: $(DEFSRC)/bashgetopt.h bashhist.h pathnames.h parser.h builtins/fc.o: ${BASHINCDIR}/chartypes.h builtins/fg_bg.o: bashtypes.h $(DEFSRC)/bashgetopt.h builtins/fg_bg.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/fg_bg.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/fg_bg.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/fg_bg.o: pathnames.h +builtins/fg_bg.o: pathnames.h execute_cmd.h builtins/getopts.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/getopts.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/getopts.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/getopts.o: pathnames.h -builtins/hash.o: bashtypes.h +builtins/getopts.o: pathnames.h execute_cmd.h +builtins/hash.o: bashtypes.h execute_cmd.h builtins/hash.o: builtins.h command.h findcmd.h ${BASHINCDIR}/stdc.h $(DEFSRC)/common.h builtins/hash.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/hash.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/hash.o: pathnames.h builtins/help.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/help.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h +builtins/help.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h +builtins/help.o: conftypes.h quit.h execute_cmd.h builtins/help.o: $(GLOB_LIBSRC)/glob.h pathnames.h -builtins/history.o: bashtypes.h pathnames.h +builtins/history.o: bashtypes.h pathnames.h parser.h builtins/history.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/history.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/history.o: ${BASHINCDIR}/filecntl.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h @@ -1457,16 +1485,16 @@ builtins/read.o: pathnames.h builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/return.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/return.o: pathnames.h +builtins/return.o: pathnames.h execute_cmd.h builtins/set.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/set.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/set.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h flags.h -builtins/set.o: pathnames.h +builtins/set.o: pathnames.h parser.h builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/setattr.o: pathnames.h flags.h +builtins/setattr.o: pathnames.h flags.h execute_cmd.h builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1481,7 +1509,7 @@ builtins/source.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h builtins/source.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/source.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/source.o: findcmd.h $(DEFSRC)/bashgetopt.h flags.h trap.h -builtins/source.o: pathnames.h +builtins/source.o: pathnames.h execute_cmd.h builtins/suspend.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/suspend.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/suspend.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1489,7 +1517,7 @@ builtins/suspend.o: pathnames.h builtins/test.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/test.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/test.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h -builtins/test.o: test.h pathnames.h +builtins/test.o: execute_cmd.h test.h pathnames.h builtins/times.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/times.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/times.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1503,7 +1531,7 @@ builtins/type.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x builtins/type.o: quit.h $(DEFSRC)/common.h findcmd.h builtins/type.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/type.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/type.o: pathnames.h +builtins/type.o: pathnames.h execute_cmd.h parser.h builtins/ulimit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/ulimit.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/ulimit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1515,6 +1543,7 @@ builtins/umask.o: ${BASHINCDIR}/chartypes.h pathnames.h builtins/wait.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/wait.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/wait.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/wait.o: execute_cmd.h builtins/wait.o: ${BASHINCDIR}/chartypes.h pathnames.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h diff --git a/NEWS b/NEWS index 931dc846b..66cbf97dc 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,118 @@ +This is a terse description of the new features added to bash-5.0 since +the release of bash-4.4. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `wait' builtin can now wait for the last process substitution created. + +b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + +c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + +d. New loadable builtins: rm, stat, fdflags. + +e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + +f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + +g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + +h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + +i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + +j. The `wait' builtin now has a `-f' option, which signfies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + +k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + +l. Process substitution does not inherit the `v' option, like command + substitution. + +m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + +n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + +o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + +p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + +q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + +r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + +s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + +t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + +u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + +v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + +w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + +x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + +y. The `umask' builtin now allows modes and masks greater than octal 777. + +z. The `times' builtin now honors the current locale when printing a decimal + point. + +aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + +2. New Features in Readline + +a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as + Posix specifies (uses fnmatch(3) if available). + +b. There are new `next-screen-line' and `previous-screen-line' bindable + commands, which move the cursor to the same column in the next, or previous, + physical line, respectively. + +c. There are default key bindings for control-arrow-key key combinations. + +d. A negative argument (-N) to `quoted-insert' means to insert the next N + characters using quoted-insert. + +e. New public function: rl_check_signals(), which allows applications to + respond to signals that readline catches while waiting for input using + a custom read function. + +f. There is new support for conditionally testing the readline version in an + inputrc file, with a full set of arithmetic comparison operators available. + +g. There is a simple variable comparison facility available for use within an + inputrc file. Allowable operators are equality and inequality; string + variables may be compared to a value; boolean variables must be compared to + either `on' or `off'; variable names are separated from the operator by + whitespace. + +------------------------------------------------------------------------------- This is a terse description of the new features added to bash-4.4 since the release of bash-4.3. As always, the manual page (doc/bash.1) is the place to look for complete descriptions. diff --git a/POSIX b/POSIX index 84ab6bea6..17b41c6f3 100644 --- a/POSIX +++ b/POSIX @@ -58,158 +58,165 @@ The following list is what's changed when 'POSIX mode' is in effect: 14. POSIX special builtins are found before shell functions during command lookup. - 15. Literal tildes that appear as the first character in elements of + 15. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 16. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 16. The 'time' reserved word may be used by itself as a command. When + 17. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 17. When parsing and expanding a ${...} expansion that appears within + 18. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 18. The parser does not recognize 'time' as a reserved word if the + 19. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 19. The '!' character does not introduce history expansion within a + 20. The '!' character does not introduce history expansion within a double-quoted string, even if the 'histexpand' option is enabled. - 20. If a POSIX special builtin returns an error status, a + 21. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 21. A non-interactive shell exits with an error status if a variable + 22. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 22. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 23. A non-interactive shell exits with an error status if the + 24. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 24. Non-interactive shells exit if FILENAME in '.' FILENAME is not + 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not found. - 25. Non-interactive shells exit if a syntax error in an arithmetic + 26. Non-interactive shells exit if a syntax error in an arithmetic expansion results in an invalid expression. - 26. Non-interactive shells exit on word expansion errors. + 27. Non-interactive shells exit if a parameter expansion error occurs. - 27. Non-interactive shells exit if there is a syntax error in a script + 28. Non-interactive shells exit if there is a syntax error in a script read with the '.' or 'source' builtins, or in a string processed by the 'eval' builtin. - 28. Process substitution is not available. + 29. Process substitution is not available. - 29. While variable indirection is available, it may not be applied to + 30. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 30. Assignment statements preceding POSIX special builtins persist in + 31. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 32. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 31. Assignment statements preceding shell function calls persist in + 33. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 32. The 'command' builtin does not prevent builtins that take + 34. The 'command' builtin does not prevent builtins that take assignment statements as arguments from expanding them as assignment statements; when not in POSIX mode, assignment builtins lose their assignment statement expansion properties when preceded by 'command'. - 33. The 'bg' builtin uses the required format to describe each job + 35. The 'bg' builtin uses the required format to describe each job placed in the background, which does not include an indication of whether the job is the current or previous job. - 34. The output of 'kill -l' prints all the signal names on a single + 36. The output of 'kill -l' prints all the signal names on a single line, separated by spaces, without the 'SIG' prefix. - 35. The 'kill' builtin does not accept signal names with a 'SIG' + 37. The 'kill' builtin does not accept signal names with a 'SIG' prefix. - 36. The 'export' and 'readonly' builtin commands display their output + 38. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 37. The 'trap' builtin displays signal names without the leading + 39. The 'trap' builtin displays signal names without the leading 'SIG'. - 38. The 'trap' builtin doesn't check the first argument for a possible + 40. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 39. The '.' and 'source' builtins do not search the current directory + 41. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 40. Enabling POSIX mode has the effect of setting the + 42. Enabling POSIX mode has the effect of setting the 'inherit_errexit' option, so subshells spawned to execute command substitutions inherit the value of the '-e' option from the parent shell. When the 'inherit_errexit' option is not enabled, Bash clears the '-e' option in such subshells. - 41. When the 'alias' builtin displays alias definitions, it does not + 43. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 42. When the 'set' builtin is invoked without options, it does not + 44. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 43. When the 'set' builtin is invoked without options, it displays + 45. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 44. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 45. The 'pwd' builtin verifies that the value it prints is the same as + 47. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 46. When listing the history, the 'fc' builtin does not include an + 48. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 47. The default editor used by 'fc' is 'ed'. + 49. The default editor used by 'fc' is 'ed'. - 48. The 'type' and 'command' builtins will not report a non-executable + 50. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 49. The 'vi' editing mode will invoke the 'vi' editor directly when + 51. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 50. When the 'xpg_echo' option is enabled, Bash does not attempt to + 52. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 51. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 52. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 53. The 'read' builtin may be interrupted by a signal for which a trap + 55. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. - 54. Bash removes an exited background process's status from the list + 56. Bash removes an exited background process's status from the list of such statuses after the 'wait' builtin is used to obtain it. There is other POSIX behavior that Bash does not implement by default diff --git a/README b/README index ad87aa8a6..c28d63df8 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 4.4. Bash is the GNU Project's Bourne +This is GNU Bash, version 5.0. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history @@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ from the POSIX spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-4.2 and -bash-4.3. For details, see the file COMPAT. The NEWS file tersely +of Bash and previous widely-distributed versions, bash-4.3 and +bash-4.4. For details, see the file COMPAT. The NEWS file tersely lists features that are new in this release. Bash is free software, distributed under the terms of the [GNU] General @@ -88,6 +88,18 @@ to bash-maintainers@gnu.org. While the Bash maintainers do not promise to fix all bugs, we would like this shell to be the best that we can make it. +Other Packages +============== + +This distribution includes, in examples/bash-completion, a recent version +of the `bash-completion' package, which provides programmable completions +for a number of commands. It's available as a package in many distributions, +and that is the first place from which to obtain it. If it's not a package +from your vendor, you may install the included version. + +The latest version of bash-completion is always available from +https://github.com/scop/bash-completion. + Enjoy! Chet Ramey diff --git a/aclocal.m4 b/aclocal.m4 index d3bac077b..6ea6f40f9 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl +nl dnl Bash specific tests dnl dnl Some derived from PDKSH 5.1.3 autoconf tests @@ -1357,7 +1357,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING, [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) AC_MSG_CHECKING(for presence of necessary job control definitions) AC_CACHE_VAL(bash_cv_job_control_missing, -[AC_TRY_RUN([ +[AC_TRY_COMPILE([ #include #ifdef HAVE_SYS_WAIT_H #include @@ -1367,42 +1367,38 @@ AC_CACHE_VAL(bash_cv_job_control_missing, #endif #include -/* Add more tests in here as appropriate. */ -main() -{ +/* add more tests in here as appropriate */ + /* signal type */ #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) -exit(1); +#error #endif /* signals and tty control. */ #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) -exit (1); +#error #endif /* process control */ #if !defined (WNOHANG) || !defined (WUNTRACED) -exit(1); +#error #endif /* Posix systems have tcgetpgrp and waitpid. */ #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) -exit(1); +#error #endif #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) -exit(1); +#error #endif /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) -exit(1); +#error #endif -exit(0); -}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, - [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) - bash_cv_job_control_missing=missing] +], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing )]) AC_MSG_RESULT($bash_cv_job_control_missing) if test $bash_cv_job_control_missing = missing; then @@ -1585,9 +1581,7 @@ fi AC_DEFUN(BASH_CHECK_DEV_STDIN, [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) AC_CACHE_VAL(bash_cv_dev_stdin, -[if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then - bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then +[if (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -1798,6 +1792,8 @@ if test "$am_cv_func_iconv" = yes; then LIBS="$OLDLIBS" fi +AC_CHECK_SIZEOF(wchar_t, 4) + ]) dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB @@ -1856,7 +1852,7 @@ main() ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='6.3')]) +ac_cv_rl_version='7.0')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" @@ -4195,3 +4191,34 @@ fi AC_MSG_RESULT($bash_cv_wexitstatus_offset) AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word]) ]) + +AC_DEFUN([BASH_FUNC_SBRK], +[ + AC_CHECK_FUNCS_ONCE([sbrk]) + if test X$ac_cv_func_sbrk = Xyes; then + AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk], + [AC_TRY_RUN([ +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} +], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk, + [AC_MSG_WARN([cannot check working sbrk if cross-compiling]) + bash_cv_func_sbrk=yes] +)]) + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = no; then + AC_DEFINE(HAVE_SBRK, 0, + [Define if you have a working sbrk function.]) + fi +]) diff --git a/alias.c b/alias.c index 8b3f22898..74ae87009 100644 --- a/alias.c +++ b/alias.c @@ -158,6 +158,10 @@ free_alias_data (data) register alias_t *a; a = (alias_t *)data; + + if (a->flags & AL_BEINGEXPANDED) + clear_string_list_expander (a); /* call back to the parser */ + free (a->value); free (a->name); free (data); diff --git a/alias.h b/alias.h index 4d0075f85..87174a322 100644 --- a/alias.h +++ b/alias.h @@ -67,4 +67,7 @@ extern char *alias_expand_word __P((char *)); /* Return a new line, with any aliases expanded. */ extern char *alias_expand __P((char *)); +/* Helper definition for the parser */ +extern void clear_string_list_expander __P((alias_t *)); + #endif /* _ALIAS_H_ */ diff --git a/array.c b/array.c index 6a6db7763..5f7d72f13 100644 --- a/array.c +++ b/array.c @@ -9,7 +9,7 @@ * chet@ins.cwru.edu */ -/* Copyright (C) 1997-2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,40 +52,30 @@ ae->prev = new; \ new->next = ae; \ } while(0) + +#define ADD_AFTER(ae, new) \ + do { \ + ae->next->prev = new; \ + new->next = ae->next; \ + new->prev = ae; \ + ae->next = new; \ + } while (0) static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int)); -/* lastref should be moved into the array structure so each array can be - optimized separately */ +static char *spacesep = " "; -static ARRAY *lastarray = 0; -static ARRAY_ELEMENT *lastref = 0; - -#define IS_LASTREF(a) (lastarray && (a) == lastarray) +#define IS_LASTREF(a) (a->lastref) #define LASTREF_START(a, i) \ - (IS_LASTREF(a) && i >= element_index(lastref)) ? lastref \ - : element_forw(a->head) - -#define INVALIDATE_LASTREF(a) \ -do { \ - if ((a) == lastarray) { \ - lastarray = 0; \ - lastref = 0; \ - } \ -} while (0) - -#define SET_LASTREF(a, e) \ -do { \ - lastarray = (a); \ - lastref = (e); \ -} while (0) - -#define UNSET_LASTREF() \ -do { \ - lastarray = 0; \ - lastref = 0; \ -} while (0) + (IS_LASTREF(a) && i >= element_index(a->lastref)) ? a->lastref \ + : element_forw(a->head) + +#define LASTREF(a) (a->lastref ? a->lastref : element_forw(a->head)) + +#define INVALIDATE_LASTREF(a) a->lastref = 0 +#define SET_LASTREF(a, e) a->lastref = (e) +#define UNSET_LASTREF(a) a->lastref = 0; ARRAY * array_create() @@ -93,10 +83,11 @@ array_create() ARRAY *r; ARRAY_ELEMENT *head; - r =(ARRAY *)xmalloc(sizeof(ARRAY)); + r = (ARRAY *)xmalloc(sizeof(ARRAY)); r->type = array_indexed; r->max_index = -1; r->num_elements = 0; + r->lastref = (ARRAY_ELEMENT *)0; head = array_create_element(-1, (char *)NULL); /* dummy head */ head->prev = head->next = head; r->head = head; @@ -149,6 +140,8 @@ ARRAY *a; for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { new = array_create_element(element_index(ae), element_value(ae)); ADD_BEFORE(a1->head, new); + if (ae == LASTREF(a)) + SET_LASTREF(a1, new); } return(a1); } @@ -391,7 +384,6 @@ array_remove_quoted_nulls(array) ARRAY *array; { ARRAY_ELEMENT *a; - char *t; if (array == 0 || array_head(array) == 0 || array_empty(array)) return (ARRAY *)NULL; @@ -498,9 +490,13 @@ int mflags; if (mflags & MATCH_STARSUB) { array_remove_quoted_nulls (a2); - sifs = ifs_firstchar((int *)NULL); + if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) + sifs = spacesep; + else + sifs = ifs_firstchar((int *)NULL); t = array_to_string (a2, sifs, 0); - free(sifs); + if (sifs != spacesep) + free(sifs); } else if (mflags & MATCH_QUOTED) { /* ${array[@]} */ sifs = ifs_firstchar (&slen); @@ -549,9 +545,13 @@ int mflags; if (mflags & MATCH_STARSUB) { array_remove_quoted_nulls (a2); - sifs = ifs_firstchar((int *)NULL); + if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) + sifs = spacesep; + else + sifs = ifs_firstchar((int *)NULL); t = array_to_string (a2, sifs, 0); - free(sifs); + if (sifs != spacesep) + free(sifs); } else if (mflags & MATCH_QUOTED) { /* ${array[@]} */ sifs = ifs_firstchar (&slen); @@ -618,6 +618,8 @@ arrayind_t i; char *v; { register ARRAY_ELEMENT *new, *ae, *start; + arrayind_t startind; + int direction; if (a == 0) return(-1); @@ -633,6 +635,12 @@ char *v; a->num_elements++; SET_LASTREF(a, new); return(0); + } else if (i < array_first_index(a)) { + /* Hook at the beginning */ + ADD_AFTER(a->head, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); } #if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT /* @@ -640,26 +648,48 @@ char *v; * handle optimizes the case of sequential or almost-sequential * assignments that are not at the end of the array. */ - start = LASTREF_START(a, i); + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } #else start = element_forw(ae->head); + startind = element_index(start); + direction = 1; #endif - for (ae = start; ae != a->head; ae = element_forw(ae)) { + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { /* * Replacing an existing element. */ - array_dispose_element(new); free(element_value(ae)); - ae->value = v ? savestring(v) : (char *)NULL; + /* Just swap in the new value */ + ae->value = new->value; + new->value = 0; + array_dispose_element(new); SET_LASTREF(a, ae); return(0); - } else if (element_index(ae) > i) { + } else if (direction == 1 && element_index(ae) > i) { ADD_BEFORE(ae, new); a->num_elements++; SET_LASTREF(a, new); return(0); + } else if (direction == -1 && element_index(ae) < i) { + ADD_AFTER(ae, new); + a->num_elements++; + SET_LASTREF(a, new); + return(0); } + ae = direction == 1 ? element_forw(ae) : element_back(ae); } array_dispose_element(new); INVALIDATE_LASTREF(a); @@ -676,11 +706,27 @@ ARRAY *a; arrayind_t i; { register ARRAY_ELEMENT *ae, *start; + arrayind_t startind; + int direction; if (a == 0 || array_empty(a)) return((ARRAY_ELEMENT *) NULL); - start = LASTREF_START(a, i); - for (ae = start; ae != a->head; ae = element_forw(ae)) + if (i > array_max_index(a) || i < array_first_index(a)) + return((ARRAY_ELEMENT *)NULL); /* Keep roving pointer into array to optimize sequential access */ + start = LASTREF(a); + /* Use same strategy as array_reference to avoid paying large penalty + for semi-random assignment pattern. */ + startind = element_index(start); + if (i < startind/2) { + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { ae->next->prev = ae->prev; ae->prev->next = ae->next; @@ -699,6 +745,12 @@ arrayind_t i; #endif return(ae); } + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + if (direction == 1 && element_index(ae) > i) + break; + else if (direction == -1 && element_index(ae) < i) + break; + } return((ARRAY_ELEMENT *) NULL); } @@ -711,18 +763,48 @@ ARRAY *a; arrayind_t i; { register ARRAY_ELEMENT *ae, *start; + arrayind_t startind; + int direction; if (a == 0 || array_empty(a)) return((char *) NULL); - if (i > array_max_index(a)) + if (i > array_max_index(a) || i < array_first_index(a)) return((char *)NULL); /* Keep roving pointer into array to optimize sequential access */ - start = LASTREF_START(a, i); - for (ae = start; ae != a->head; ae = element_forw(ae)) + start = LASTREF(a); /* lastref pointer */ + startind = element_index(start); + if (i < startind/2) { /* XXX - guess */ + start = element_forw(a->head); + startind = element_index(start); + direction = 1; + } else if (i >= startind) { + direction = 1; + } else { + direction = -1; + } + for (ae = start; ae != a->head; ) { if (element_index(ae) == i) { SET_LASTREF(a, ae); return(element_value(ae)); } - UNSET_LASTREF(); /* XXX SET_LASTREF(a, start) ? */ + ae = (direction == 1) ? element_forw(ae) : element_back(ae); + /* Take advantage of index ordering to short-circuit */ + /* If we don't find it, set the lastref pointer to the element + that's `closest', assuming that the unsuccessful reference + will quickly be followed by an assignment. No worse than + not changing it from the previous value or resetting it. */ + if (direction == 1 && element_index(ae) > i) { + start = ae; /* use for SET_LASTREF below */ + break; + } else if (direction == -1 && element_index(ae) < i) { + start = ae; /* use for SET_LASTREF below */ + break; + } + } +#if 0 + UNSET_LASTREF(a); +#else + SET_LASTREF(a, start); +#endif return((char *) NULL); } diff --git a/array.h b/array.h index fb4f789f3..0c456507b 100644 --- a/array.h +++ b/array.h @@ -33,6 +33,7 @@ typedef struct array { enum atype type; arrayind_t max_index; int num_elements; + struct array_element *lastref; struct array_element *head; } ARRAY; @@ -94,6 +95,7 @@ extern ARRAY *array_from_string __P((char *, char *)); #define array_num_elements(a) ((a)->num_elements) #define array_max_index(a) ((a)->max_index) +#define array_first_index(a) ((a)->head->next->ind) #define array_head(a) ((a)->head) #define array_empty(a) ((a)->num_elements == 0) @@ -102,6 +104,8 @@ extern ARRAY *array_from_string __P((char *, char *)); #define element_forw(ae) ((ae)->next) #define element_back(ae) ((ae)->prev) +#define set_element_value(ae, val) ((ae)->value = (val)) + /* Convenience */ #define array_push(a,v) \ do { array_rshift ((a), 1, (v)); } while (0) diff --git a/arrayfunc.c b/arrayfunc.c index 47c595e0b..10b2b06a3 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -30,6 +30,7 @@ #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #include "pathexp.h" #include "shmbutil.h" @@ -39,9 +40,12 @@ #include "builtins/common.h" -extern char *this_command_name; -extern int last_command_exit_value; -extern int array_needs_making; +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +int assoc_expand_once = 0; + +/* Ditto for indexed array subscripts -- currently unused */ +int array_expand_once = 0; static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int)); static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int)); @@ -258,9 +262,6 @@ bind_assoc_variable (entry, name, key, value, flags) char *value; int flags; { - SHELL_VAR *dentry; - char *newval; - if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry)) { if (readonly_p (entry)) @@ -272,7 +273,8 @@ bind_assoc_variable (entry, name, key, value, flags) } /* Parse NAME, a lhs of an assignment statement of the form v[s], and - assign VALUE to that array element by calling bind_array_variable(). */ + assign VALUE to that array element by calling bind_array_variable(). + Flags are ASS_ assignment flags */ SHELL_VAR * assign_array_element (name, value, flags) char *name, *value; @@ -280,9 +282,9 @@ assign_array_element (name, value, flags) { char *sub, *vname; int sublen; - SHELL_VAR *entry, *nv; + SHELL_VAR *entry; - vname = array_variable_name (name, &sub, &sublen); + vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen); if (vname == 0) return ((SHELL_VAR *)NULL); @@ -317,7 +319,10 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) if (entry && assoc_p (entry)) { sub[sublen-1] = '\0'; - akey = expand_assignment_string_to_string (sub, 0); /* [ */ + if ((flags & ASS_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (sub, 0); /* [ */ + else + akey = savestring (sub); sub[sublen-1] = ']'; if (akey == 0 || *akey == 0) { @@ -329,7 +334,7 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags) } else { - ind = array_expand_index (entry, sub, sublen); + ind = array_expand_index (entry, sub, sublen, 0); /* negative subscripts to indexed arrays count back from end */ if (entry && ind < 0) ind = (array_p (entry) ? array_max_index (array_cell (entry)) : 0) + 1 + ind; @@ -450,7 +455,6 @@ expand_compound_array_assignment (var, value, flags) int flags; { WORD_LIST *list, *nlist; - WORD_LIST *hd, *tl, *t, *n; char *val; int ni; @@ -583,7 +587,7 @@ assign_compound_array_list (var, nlist, flags) if (array_p (var)) { - ind = array_expand_index (var, w + 1, len); + ind = array_expand_index (var, w + 1, len, 0); /* negative subscripts to indexed arrays count back from end */ if (ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -759,17 +763,19 @@ quote_array_assignment_chars (list) /* This function is called with SUB pointing to just after the beginning `[' of an array subscript and removes the array element to which SUB expands from array VAR. A subscript of `*' or `@' unsets the array. */ +/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */ int -unbind_array_element (var, sub) +unbind_array_element (var, sub, flags) SHELL_VAR *var; char *sub; + int flags; { int len; arrayind_t ind; char *akey; ARRAY_ELEMENT *ae; - len = skipsubscript (sub, 0, (var && assoc_p(var))); + len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); if (sub[len] != ']' || len == 0) { builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); @@ -790,7 +796,7 @@ unbind_array_element (var, sub) if (assoc_p (var)) { - akey = expand_assignment_string_to_string (sub, 0); /* [ */ + akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0); if (akey == 0 || *akey == 0) { builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg)); @@ -798,11 +804,12 @@ unbind_array_element (var, sub) return -1; } assoc_remove (assoc_cell (var), akey); - free (akey); + if (akey != sub) + free (akey); } else if (array_p (var)) { - ind = array_expand_index (var, sub, len+1); + ind = array_expand_index (var, sub, len+1, 0); /* negative subscripts to indexed arrays count back from end */ if (ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -818,7 +825,7 @@ unbind_array_element (var, sub) else /* array_p (var) == 0 && assoc_p (var) == 0 */ { akey = this_command_name; - ind = array_expand_index (var, sub, len+1); + ind = array_expand_index (var, sub, len+1, 0); this_command_name = akey; if (ind == 0) { @@ -895,26 +902,34 @@ valid_array_reference (name, flags) *t = '['; if (r == 0) return 0; - /* Check for a properly-terminated non-blank subscript. */ - len = skipsubscript (t, 0, 0); + /* Check for a properly-terminated non-null subscript. */ + len = skipsubscript (t, 0, flags); if (t[len] != ']' || len == 1) return 0; if (t[len+1] != '\0') return 0; +#if 1 + /* Could check and allow subscripts consisting only of whitespace for + existing associative arrays. */ for (r = 1; r < len; r++) if (whitespace (t[r]) == 0) return 1; return 0; +#else + /* This allows blank subscripts */ + return 1; +#endif } return 0; } /* Expand the array index beginning at S and extending LEN characters. */ arrayind_t -array_expand_index (var, s, len) +array_expand_index (var, s, len, flags) SHELL_VAR *var; char *s; int len; + int flags; { char *exp, *t, *savecmd; int expok; @@ -923,12 +938,19 @@ array_expand_index (var, s, len) exp = (char *)xmalloc (len); strncpy (exp, s, len - 1); exp[len - 1] = '\0'; +#if 0 /* XXX - not yet -- maybe bash-5.0 */ + if ((flags & AV_NOEXPAND) == 0) + t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ + else + t = exp; +#endif t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ savecmd = this_command_name; this_command_name = (char *)NULL; - val = evalexp (t, &expok); + val = evalexp (t, 0, &expok); this_command_name = savecmd; - free (t); + if (t != exp) + free (t); free (exp); if (expok == 0) { @@ -947,8 +969,9 @@ array_expand_index (var, s, len) in *SUBP. If LENP is non-null, the length of the subscript is returned in *LENP. This returns newly-allocated memory. */ char * -array_variable_name (s, subp, lenp) +array_variable_name (s, flags, subp, lenp) const char *s; + int flags; char **subp; int *lenp; { @@ -965,7 +988,7 @@ array_variable_name (s, subp, lenp) return ((char *)NULL); } ind = t - s; - ni = skipsubscript (s, ind, 0); + ni = skipsubscript (s, ind, flags); /* XXX - was 0 not flags */ if (ni <= ind + 1 || s[ni] != ']') { err_badarraysub (s); @@ -992,15 +1015,16 @@ array_variable_name (s, subp, lenp) non-null, return a pointer to the start of the subscript in *SUBP. If LENP is non-null, the length of the subscript is returned in *LENP. */ SHELL_VAR * -array_variable_part (s, subp, lenp) +array_variable_part (s, flags, subp, lenp) const char *s; + int flags; char **subp; int *lenp; { char *t; SHELL_VAR *var; - t = array_variable_name (s, subp, lenp); + t = array_variable_name (s, flags, subp, lenp); if (t == 0) return ((SHELL_VAR *)NULL); var = find_variable (t); /* XXX - handle namerefs here? */ @@ -1042,7 +1066,7 @@ array_value_internal (s, quoted, flags, rtype, indp) WORD_LIST *l; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len); /* XXX */ /* Expand the index, even if the variable doesn't exist, in case side effects are needed, like ${w[i++]} where w is unset. */ @@ -1082,15 +1106,17 @@ array_value_internal (s, quoted, flags, rtype, indp) return ((char *) NULL); } + /* Caller of array_value takes care of inspecting rtype and duplicating + retval if rtype == 0, so this is not a memory leak */ if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { - temp = string_list_dollar_star (l); - retval = quote_string (temp); /* XXX - leak here */ + temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); + retval = quote_string (temp); free (temp); } else /* ${name[@]} or unquoted ${name[*]} */ /* XXX - bash-4.4/bash-5.0 test AV_ASSIGNRHS and pass PF_ASSIGNRHS */ - retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); /* XXX - leak here */ + retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); dispose_words (l); } @@ -1102,7 +1128,7 @@ array_value_internal (s, quoted, flags, rtype, indp) { if ((flags & AV_USEIND) == 0 || indp == 0) { - ind = array_expand_index (var, t, len); + ind = array_expand_index (var, t, len, flags); if (ind < 0) { /* negative subscripts to indexed arrays count back from end */ @@ -1120,7 +1146,10 @@ array_value_internal (s, quoted, flags, rtype, indp) else if (assoc_p (var)) { t[len - 1] = '\0'; - akey = expand_assignment_string_to_string (t, 0); /* [ */ + if ((flags & AV_NOEXPAND) == 0) + akey = expand_assignment_string_to_string (t, 0); /* [ */ + else + akey = savestring (t); t[len - 1] = ']'; if (akey == 0 || *akey == 0) { @@ -1182,7 +1211,7 @@ array_keys (s, quoted) WORD_LIST *l; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, 0, &t, &len); /* [ */ if (var == 0 || ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != ']') @@ -1202,7 +1231,7 @@ array_keys (s, quoted) if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) { - temp = string_list_dollar_star (l); + temp = string_list_dollar_star (l, quoted, 0); retval = quote_string (temp); free (temp); } diff --git a/arrayfunc.h b/arrayfunc.h index 5ee275916..199c8127e 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -25,12 +25,20 @@ #if defined (ARRAY_VARS) +/* This variable means to not expand associative array subscripts more than + once, when performing variable expansion. */ +extern int assoc_expand_once; + +/* The analog for indexed array subscripts */ +extern int array_expand_once; + /* Flags for array_value_internal and callers array_value/get_array_value */ #define AV_ALLOWALL 0x001 #define AV_QUOTED 0x002 #define AV_USEIND 0x004 #define AV_USEVAL 0x008 /* XXX - should move this */ #define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */ +#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */ extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *)); @@ -52,21 +60,21 @@ extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int)); extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int)); -extern int unbind_array_element __P((SHELL_VAR *, char *)); +extern int unbind_array_element __P((SHELL_VAR *, char *, int)); extern int skipsubscript __P((const char *, int, int)); extern void print_array_assignment __P((SHELL_VAR *, int)); extern void print_assoc_assignment __P((SHELL_VAR *, int)); -extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int)); +extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int)); extern int valid_array_reference __P((const char *, int)); extern char *array_value __P((const char *, int, int, int *, arrayind_t *)); extern char *get_array_value __P((const char *, int, int *, arrayind_t *)); extern char *array_keys __P((char *, int)); -extern char *array_variable_name __P((const char *, char **, int *)); -extern SHELL_VAR *array_variable_part __P((const char *, char **, int *)); +extern char *array_variable_name __P((const char *, int, char **, int *)); +extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *)); #else diff --git a/bashhist.c b/bashhist.c index 9979f99ac..e0afe52ac 100644 --- a/bashhist.c +++ b/bashhist.c @@ -44,6 +44,7 @@ #include "shell.h" #include "flags.h" +#include "parser.h" #include "input.h" #include "parser.h" /* for the struct dstack stuff. */ #include "pathexp.h" /* for the struct ignorevar stuff */ @@ -140,6 +141,11 @@ int command_oriented_history = 1; the history-manipluating builtins can see it. */ int current_command_first_line_saved = 0; +/* Set to the number of the most recent line of a possibly-multi-line command + that contains a shell comment. Used by bash_add_history() to determine + whether to add a newline or a semicolon. */ +int current_command_line_comment = 0; + /* Non-zero means to store newlines in the history list when using command_oriented_history rather than trying to use semicolons. */ int literal_history; @@ -182,12 +188,6 @@ int hist_verify; /* Non-zero means to not save function definitions in the history list. */ int dont_save_function_defs; -/* Variables declared in other files used here. */ -extern int current_command_line_count; - -extern struct dstack dstack; -extern int parser_state; - #if defined (BANG_HISTORY) static int bash_history_inhibit_expansion __P((char *, int)); #endif @@ -267,8 +267,8 @@ bash_history_reinit (interact) int interact; { #if defined (BANG_HISTORY) - history_expansion = interact != 0; - history_expansion_inhibited = 1; /* XXX */ + history_expansion = (interact == 0) ? histexp_flag : HISTEXPAND_DEFAULT; + history_expansion_inhibited = (interact == 0) ? 1 - histexp_flag : 0; /* changed in bash_history_enable() */ history_inhibit_expansion_function = bash_history_inhibit_expansion; #endif remember_on_history = enable_history_list; @@ -350,6 +350,21 @@ bash_delete_histent (i) return 1; } +int +bash_delete_history_range (first, last) + int first, last; +{ + register int i; + HIST_ENTRY **discard_list; + + discard_list = remove_history_range (first, last); + for (i = 0; discard_list && discard_list[i]; i++) + free_history_entry (discard_list[i]); + history_lines_this_session -= i; + + return 1; +} + int bash_delete_last_history () { @@ -597,16 +612,24 @@ pre_process_line (line, print_changes, addit) } /* Return 1 if the first non-whitespace character in LINE is a `#', indicating - * that the line is a shell comment. */ + that the line is a shell comment. Return 2 if there is a comment after the + first non-whitespace character. Return 0 if the line does not contain a + comment. */ static int shell_comment (line) char *line; { char *p; + int n; + if (line == 0) + return 0; for (p = line; p && *p && whitespace (*p); p++) ; - return (p && *p == '#'); + if (p && *p == '#') + return 1; + n = skip_to_delim (line, p - line, "#", SD_NOJMP|SD_GLOB|SD_EXTGLOB|SD_COMPLETE); + return (line[n] == '#') ? 2 : 0; } #ifdef INCLUDE_UNUSED @@ -700,7 +723,10 @@ void maybe_add_history (line) char *line; { + int is_comment; + hist_last_line_added = 0; + is_comment = shell_comment (line); /* Don't use the value of history_control to affect the second and subsequent lines of a multi-line command (old code did @@ -708,13 +734,15 @@ maybe_add_history (line) if (current_command_line_count > 1) { if (current_command_first_line_saved && - ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || shell_comment (line) == 0)) + ((parser_state & PST_HEREDOC) || literal_history || dstack.delimiter_depth != 0 || is_comment != 1)) bash_add_history (line); + current_command_line_comment = is_comment ? current_command_line_count : -2; return; } /* This is the first line of a (possible multi-line) command. Note whether or not we should save the first line and remember it. */ + current_command_line_comment = is_comment ? current_command_line_count : -2; current_command_first_line_saved = check_add_history (line, 0); } @@ -748,12 +776,16 @@ check_add_history (line, force) #if defined (SYSLOG_HISTORY) #define SYSLOG_MAXLEN 600 -extern char *shell_name; - #ifndef OPENLOG_OPTS #define OPENLOG_OPTS 0 #endif +#if defined (SYSLOG_SHOPT) +int syslog_history = SYSLOG_SHOPT; +#else +int syslog_history = 1; +#endif + void bash_syslog_history (line) const char *line; @@ -803,12 +835,18 @@ bash_add_history (line) so we have to duplicate some of what that function does here. */ if ((parser_state & PST_HEREDOC) && literal_history && current_command_line_count > 2 && line[strlen (line) - 1] == '\n') chars_to_add = ""; + else if (current_command_line_count == current_command_line_comment+1) + chars_to_add = "\n"; + else if (literal_history) + chars_to_add = "\n"; else - chars_to_add = literal_history ? "\n" : history_delimiting_chars (line); + chars_to_add = history_delimiting_chars (line); using_history (); current = previous_history (); + current_command_line_comment = shell_comment (line) ? current_command_line_count : -2; + if (current) { /* If the previous line ended with an escaped newline (escaped @@ -851,7 +889,8 @@ bash_add_history (line) really_add_history (line); #if defined (SYSLOG_HISTORY) - bash_syslog_history (line); + if (syslog_history) + bash_syslog_history (line); #endif using_history (); diff --git a/bashhist.h b/bashhist.h index c44e7c607..128b36f95 100644 --- a/bashhist.h +++ b/bashhist.h @@ -30,6 +30,12 @@ #define HC_IGNBOTH (HC_IGNSPACE|HC_IGNDUPS) +#if defined (STRICT_POSIX) +# define HISTEXPAND_DEFAULT 0 +#else +# define HISTEXPAND_DEFAULT 1 +#endif + extern int remember_on_history; extern int enable_history_list; /* value for `set -o history' */ extern int literal_history; /* controlled by `shopt lithist' */ @@ -40,11 +46,19 @@ extern int history_expansion; extern int history_control; extern int command_oriented_history; extern int current_command_first_line_saved; +extern int current_command_first_line_comment; extern int hist_last_line_added; extern int hist_last_line_pushed; +extern int dont_save_function_defs; + +# if defined (READLINE) +extern int hist_verify; +# endif + # if defined (BANG_HISTORY) extern int history_expansion_inhibited; +extern int double_quotes_inhibit_history_expansion; # endif /* BANG_HISTORY */ extern void bash_initialize_history __P((void)); @@ -53,6 +67,7 @@ extern void bash_history_disable __P((void)); extern void bash_history_enable __P((void)); extern void bash_clear_history __P((void)); extern int bash_delete_histent __P((int)); +extern int bash_delete_history_range __P((int, int)); extern int bash_delete_last_history __P((void)); extern void load_history __P((void)); extern void save_history __P((void)); diff --git a/bashintl.h b/bashintl.h index 7e6b83fc0..dd3268331 100644 --- a/bashintl.h +++ b/bashintl.h @@ -47,4 +47,8 @@ # define setlocale(cat, loc) #endif +#if !defined (HAVE_LOCALE_H) || !defined (HAVE_LOCALECONV) +# define locale_decpoint() '.' +#endif + #endif /* !_BASHINTL_H_ */ diff --git a/bashjmp.h b/bashjmp.h index 79152fe52..8ed1ac472 100644 --- a/bashjmp.h +++ b/bashjmp.h @@ -26,6 +26,7 @@ extern procenv_t top_level; extern procenv_t subshell_top_level; extern procenv_t return_catch; /* used by `return' builtin */ +extern procenv_t wait_intr_buf; extern int no_longjmp_on_fatal_error; diff --git a/bashline.c b/bashline.c index 02758448b..ae8fe1ccc 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -46,6 +46,7 @@ #include "shell.h" #include "input.h" +#include "parser.h" #include "builtins.h" #include "bashhist.h" #include "bashline.h" @@ -65,6 +66,7 @@ #include #include #include +#include #include @@ -200,19 +202,8 @@ static char *prog_complete_return __P((const char *, int)); static char **prog_complete_matches; #endif -/* Variables used here but defined in other files. */ -#if defined (BANG_HISTORY) -extern int hist_verify; -#endif - -extern int current_command_line_count, saved_command_line_count; -extern int last_command_exit_value; -extern int array_needs_making; -extern int posixly_correct, no_symbolic_links; -extern int sigalrm_seen; -extern char *current_prompt_string, *ps1_prompt; +extern int no_symbolic_links; extern STRING_INT_ALIST word_token_alist[]; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; /* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual completion functions which indicate what type of completion should be @@ -919,9 +910,9 @@ operate_and_get_next (count, c) rl_newline (1, c); /* Find the current line, and find the next line to use. */ - where = where_history (); + where = rl_explicit_arg ? count : where_history (); - if (HISTORY_FULL () || (where >= history_length - 1)) + if (HISTORY_FULL () || (where >= history_length - 1) || rl_explicit_arg) saved_history_line_to_use = where; else saved_history_line_to_use = where + 1; @@ -969,8 +960,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command) /* This breaks down when using command-oriented history and are not finished with the command, so we should not ignore the last command */ using_history (); - current_command_line_count++; /* for rl_newline above */ - bash_add_history (rl_line_buffer); + if (rl_line_buffer[0]) + { + current_command_line_count++; /* for rl_newline above */ + bash_add_history (rl_line_buffer); + } current_command_line_count = 0; /* for dummy history entry */ bash_add_history (""); history_lines_this_session++; @@ -999,6 +993,11 @@ edit_and_execute_command (count, c, editing_mode, edit_command) rl_done = 0; rl_readline_state = rrs; +#if defined (VI_MODE) + if (editing_mode == VI_EDITING_MODE) + rl_vi_insertion_mode (1, c); +#endif + rl_forced_update_display (); return r; @@ -1056,7 +1055,7 @@ bash_forward_shellword (count, key) int count, key; { size_t slen; - int sindex, c, p; + int c, p; DECLARE_MBSTATE; if (count < 0) @@ -1165,15 +1164,18 @@ bash_backward_shellword (count, key) int count, key; { size_t slen; - int sindex, c, p; + int c, p; DECLARE_MBSTATE; - + if (count < 0) return (bash_forward_shellword (-count, key)); p = rl_point; slen = rl_end; - + + if (p == rl_end && p > 0) + p--; + while (count) { if (p == 0) @@ -1186,9 +1188,9 @@ bash_backward_shellword (count, key) while (p > 0) { c = rl_line_buffer[p]; - if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0) - BACKUP_CHAR (rl_line_buffer, slen, p); - break; + if (WORDDELIM (c) == 0 || char_is_quoted (rl_line_buffer, p)) + break; + BACKUP_CHAR (rl_line_buffer, slen, p); } if (p == 0) @@ -1420,7 +1422,7 @@ attempt_shell_completion (text, start, end) const char *text; int start, end; { - int in_command_position, ti, saveti, qc, dflags; + int in_command_position, ti, qc, dflags; char **matches, *command_separator_chars; #if defined (PROGRAMMABLE_COMPLETION) int have_progcomps, was_assignment; @@ -1442,7 +1444,7 @@ attempt_shell_completion (text, start, end) appears after a character that separates commands. It cannot be a command word if we aren't at the top-level prompt. */ ti = start - 1; - saveti = qc = -1; + qc = -1; while ((ti > -1) && (whitespace (rl_line_buffer[ti]))) ti--; @@ -1453,7 +1455,7 @@ attempt_shell_completion (text, start, end) if (ti >= 0 && (rl_line_buffer[ti] == '"' || rl_line_buffer[ti] == '\'')) { qc = rl_line_buffer[ti]; - saveti = ti--; + ti--; while (ti > -1 && (whitespace (rl_line_buffer[ti]))) ti--; } @@ -1639,7 +1641,7 @@ bash_default_completion (text, start, end, qc, compflags) matches = (char **)NULL; /* New posix-style command substitution or variable name? */ - if (!matches && *text == '$') + if (*text == '$') { if (qc != '\'' && text[1] == '(') /* ) */ matches = rl_completion_matches (text, command_subst_completion_function); @@ -1803,7 +1805,7 @@ command_word_completion_function (hint_text, state) static char *dequoted_hint = (char *)NULL; static char *directory_part = (char *)NULL; static char **glob_matches = (char **)NULL; - static int path_index, hint_len, dequoted_len, istate, igncase; + static int path_index, hint_len, istate, igncase; static int mapping_over, local_index, searching_path, hint_is_dir; static int old_glob_ignore_case, globpat; static SHELL_VAR **varlist = (SHELL_VAR **)NULL; @@ -1881,7 +1883,7 @@ command_word_completion_function (hint_text, state) free (hint); hint = dequoted_hint; } - dequoted_len = hint_len = strlen (hint); + hint_len = strlen (hint); if (filename_hint) free (filename_hint); @@ -1909,13 +1911,10 @@ command_word_completion_function (hint_text, state) } dequoted_hint = hint = savestring (hint_text); - dequoted_len = hint_len = strlen (hint); + hint_len = strlen (hint); if (rl_completion_found_quote && rl_completion_quote_character == 0) - { - dequoted_hint = bash_dequote_filename (hint, 0); - dequoted_len = strlen (dequoted_hint); - } + dequoted_hint = bash_dequote_filename (hint, 0); path = get_string_value ("PATH"); path_index = dot_in_path = 0; @@ -1949,7 +1948,9 @@ command_word_completion_function (hint_text, state) alias = alias_list[local_index++]->name; - if (STREQN (alias, hint, hint_len)) + if (igncase == 0 && (STREQN (alias, hint, hint_len))) + return (savestring (alias)); + else if (igncase && strncasecmp (alias, hint, hint_len) == 0) return (savestring (alias)); } #endif /* ALIAS */ @@ -1978,7 +1979,10 @@ command_word_completion_function (hint_text, state) varname = varlist[local_index++]->name; - if (STREQN (varname, hint, hint_len)) + /* Honor completion-ignore-case for shell function names. */ + if (igncase == 0 && (STREQN (varname, hint, hint_len))) + return (savestring (varname)); + else if (igncase && strncasecmp (varname, hint, hint_len) == 0) return (savestring (varname)); } local_index = 0; @@ -2304,7 +2308,6 @@ variable_completion_function (text, state) static char **varlist = (char **)NULL; static int varlist_index; static char *varname = (char *)NULL; - static int namelen; static int first_char, first_char_loc; if (!state) @@ -2323,7 +2326,6 @@ variable_completion_function (text, state) varname = savestring (text + first_char_loc); - namelen = strlen (varname); if (varlist) strvec_dispose (varlist); @@ -2411,7 +2413,7 @@ bash_servicename_completion_function (text, state) #else static char *sname = (char *)NULL; static struct servent *srvent; - static int snamelen, firstc; + static int snamelen; char *value; char **alist, *aentry; int afound; @@ -2419,7 +2421,6 @@ bash_servicename_completion_function (text, state) if (state == 0) { FREE (sname); - firstc = *text; sname = savestring (text); snamelen = strlen (sname); @@ -2552,7 +2553,7 @@ static void maybe_make_readline_line (new_line) char *new_line; { - if (strcmp (new_line, rl_line_buffer) != 0) + if (new_line && strcmp (new_line, rl_line_buffer) != 0) { rl_point = rl_end; @@ -2704,6 +2705,7 @@ shell_expand_line (count, ignore) { char *new_line; WORD_LIST *expanded_string; + WORD_DESC *w; new_line = 0; #if defined (BANG_HISTORY) @@ -2733,9 +2735,19 @@ shell_expand_line (count, ignore) /* If there is variable expansion to perform, do that as a separate operation to be undone. */ + +#if 1 + w = alloc_word_desc (); + w->word = savestring (rl_line_buffer); + w->flags = rl_explicit_arg ? (W_NOPROCSUB|W_NOCOMSUB) : 0; + expanded_string = expand_word (w, rl_explicit_arg ? Q_HERE_DOCUMENT : 0); + dispose_word (w); +#else new_line = savestring (rl_line_buffer); expanded_string = expand_string (new_line, 0); FREE (new_line); +#endif + if (expanded_string == 0) { new_line = (char *)xmalloc (1); @@ -3138,7 +3150,6 @@ bash_filename_stat_hook (dirname) int should_expand_dirname, return_value; int global_nounset; WORD_LIST *wl; - struct stat sb; local_dirname = *dirname; should_expand_dirname = return_value = 0; @@ -3216,10 +3227,8 @@ bash_directory_completion_hook (dirname) char **dirname; { char *local_dirname, *new_dirname, *t; - int return_value, should_expand_dirname, nextch, closer, changed; - size_t local_dirlen; + int return_value, should_expand_dirname, nextch, closer; WORD_LIST *wl; - struct stat sb; return_value = should_expand_dirname = nextch = closer = 0; local_dirname = *dirname; @@ -3236,6 +3245,17 @@ bash_directory_completion_hook (dirname) closer = '}'; else nextch = 0; + + if (closer) + { + int p; + char delims[2]; + + delims[0] = closer; delims[1] = 0; + p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE); + if (t[p] != closer) + should_expand_dirname = 0; + } } else if (local_dirname[0] == '~') should_expand_dirname = '~'; @@ -3450,6 +3470,7 @@ history_completion_generator (hint_text, state) while (history_completion_array && history_completion_array[local_index]) { + /* XXX - should this use completion-ignore-case? */ if (strncmp (text, history_completion_array[local_index++], len) == 0) return (savestring (history_completion_array[local_index - 1])); } @@ -3870,7 +3891,7 @@ bash_dequote_filename (text, quote_char) *r++ = *p; /* Backslashes are preserved within double quotes unless the character is one that is defined to be escaped */ - else if (quoted == '"' && ((sh_syntaxtab[p[1]] & CBSDQUOTE) == 0)) + else if (quoted == '"' && ((sh_syntaxtab[(unsigned char)p[1]] & CBSDQUOTE) == 0)) *r++ = *p; *r++ = *++p; @@ -4071,21 +4092,18 @@ bash_execute_unix_command (count, key) int count; /* ignored */ int key; { - Keymap ckmap; /* current keymap */ - Keymap xkmap; /* unix command executing keymap */ - rl_command_func_t *func; int type; register int i, r; intmax_t mi; sh_parser_state_t ps; - char *cmd, *value, *l, *l1, *ce; + char *cmd, *value, *ce, old_ch; SHELL_VAR *v; char ibuf[INT_STRLEN_BOUND(int) + 1]; /* First, we need to find the right command to execute. This is tricky, because we might have already indirected into another keymap, so we have to walk cmd_xmap using the entire key sequence. */ - cmd = (char *)rl_function_of_keyseq (rl_executing_keyseq, cmd_xmap, &type); + cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type); if (cmd == 0 || type != ISMACR) { @@ -4112,25 +4130,37 @@ bash_execute_unix_command (count, key) v = bind_variable ("READLINE_LINE", rl_line_buffer, 0); if (v) VSETATTR (v, att_exported); - l = v ? value_cell (v) : 0; - value = inttostr (rl_point, ibuf, sizeof (ibuf)); - v = bind_int_variable ("READLINE_POINT", value); + i = rl_point; +#if defined (HANDLE_MULTIBYTE) + if (MB_CUR_MAX > 1) + { + old_ch = rl_line_buffer[rl_point]; + rl_line_buffer[rl_point] = '\0'; + i = MB_STRLEN (rl_line_buffer); + rl_line_buffer[rl_point] = old_ch; + } +#endif + value = inttostr (i, ibuf, sizeof (ibuf)); + v = bind_int_variable ("READLINE_POINT", value, 0); if (v) VSETATTR (v, att_exported); array_needs_making = 1; save_parser_state (&ps); - r = parse_and_execute (cmd, "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); + r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE); restore_parser_state (&ps); v = find_variable ("READLINE_LINE"); - l1 = v ? value_cell (v) : 0; - if (l1 != l) - maybe_make_readline_line (value_cell (v)); + maybe_make_readline_line (v ? value_cell (v) : 0); + v = find_variable ("READLINE_POINT"); if (v && legal_number (value_cell (v), &mi)) { i = mi; +#if defined (HANDLE_MULTIBYTE) + if (i > 0 && MB_CUR_MAX > 1) + i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0); +#endif if (i != rl_point) { rl_point = i; diff --git a/bashline.h b/bashline.h index d52dfdfa9..2571e11fe 100644 --- a/bashline.h +++ b/bashline.h @@ -24,6 +24,16 @@ #include "stdc.h" extern int bash_readline_initialized; +extern int hostname_list_initialized; + +/* these are controlled via shopt */ +extern int perform_hostname_completion; +extern int no_empty_command_completion; +extern int force_fignore; +extern int dircomplete_spelling; +extern int dircomplete_expand; +extern int dircomplete_expand_relpath; +extern int complete_fullquote; extern void posix_readline_initialize __P((int)); extern void reset_completer_word_break_chars __P((void)); diff --git a/braces.c b/braces.c index 7f31dd5e7..315c62f1f 100644 --- a/braces.c +++ b/braces.c @@ -61,7 +61,9 @@ extern int errno; extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3))); +#if defined (NOTDEF) extern int last_command_exit_value; +#endif /* Basic idea: @@ -383,7 +385,7 @@ mkseq (start, end, incr, type, width) int type, width; { intmax_t n, prevn; - int i, j, nelem; + int i, nelem; char **result, *t; if (incr == 0) @@ -424,7 +426,7 @@ mkseq (start, end, incr, type, width) result = strvec_mcreate (nelem + 1); if (result == 0) { - internal_error (_("brace expansion: failed to allocate memory for %d elements"), nelem); + internal_error (_("brace expansion: failed to allocate memory for %u elements"), (unsigned int)nelem); return ((char **)NULL); } @@ -494,7 +496,7 @@ expand_seqterm (text, tlen) size_t tlen; { char *t, *lhs, *rhs; - int i, lhs_t, rhs_t, lhs_l, rhs_l, width; + int lhs_t, rhs_t, lhs_l, rhs_l, width; intmax_t lhs_v, rhs_v, incr; intmax_t tl, tr; char **result, *ep, *oep; @@ -743,20 +745,6 @@ comsub: return (c); } -/* Return 1 if ARR has any non-empty-string members. Used to short-circuit - in array_concat() below. */ -static int -degenerate_array (arr) - char **arr; -{ - register int i; - - for (i = 0; arr[i]; i++) - if (arr[i][0] != '\0') - return 0; - return 1; -} - /* Return a new array of strings which is the result of appending each string in ARR2 to each string in ARR1. The resultant array is len (arr1) * len (arr2) long. For convenience, ARR1 (and its contents) diff --git a/builtins.h b/builtins.h index 0cfea189d..dac95fdba 100644 --- a/builtins.h +++ b/builtins.h @@ -18,6 +18,9 @@ along with Bash. If not, see . */ +#ifndef BUILTINS_H +#define BUILTINS_H + #include "config.h" #if defined (HAVE_UNISTD_H) @@ -60,3 +63,5 @@ extern int num_shell_builtins; /* Number of shell builtins. */ extern struct builtin static_shell_builtins[]; extern struct builtin *shell_builtins; extern struct builtin *current_builtin; + +#endif /* BUILTINS_H */ diff --git a/builtins/Makefile.in b/builtins/Makefile.in index bbb96c379..388ca4eb0 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -1,6 +1,6 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2017 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -94,7 +94,7 @@ INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$ BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \ ${INCLUDES} $(LOCAL_CFLAGS) -CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) +CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS) CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) @@ -331,7 +331,7 @@ bashgetopt.o: ../pathnames.h $(topdir)/externs.h $(srcdir)/common.h bashgetopt.o: $(BASHINCDIR)/chartypes.h common.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h common.o: $(topdir)/shell.h $(topdir)/syntax.h ../config.h $(topdir)/bashjmp.h $(BASHINCDIR)/posixjmp.h -common.o: $(topdir)/sig.h $(topdir)/command.h +common.o: $(topdir)/sig.h $(topdir)/command.h $(topdir)/parser.h common.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/stdc.h $(BASHINCDIR)/memalloc.h common.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/input.h common.o: $(topdir)/siglist.h $(topdir)/bashhist.h $(topdir)/quit.h @@ -347,7 +347,7 @@ evalfile.o: $(topdir)/command.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir evalfile.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/quit.h $(BASHINCDIR)/maxpath.h evalfile.o: $(topdir)/unwind_prot.h $(topdir)/dispose_cmd.h evalfile.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/sig.h -evalfile.o: ../pathnames.h $(topdir)/externs.h +evalfile.o: ../pathnames.h $(topdir)/externs.h $(topdir)/parser.h evalfile.o: $(topdir)/jobs.h $(topdir)/builtins.h $(topdir)/flags.h evalfile.o: $(topdir)/input.h $(topdir)/execute_cmd.h evalfile.o: $(topdir)/bashhist.h $(srcdir)/common.h @@ -386,19 +386,18 @@ bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/ bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -bind.o: ../pathnames.h break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -break.o: ../pathnames.h +break.o: ../pathnames.h $(topdir)/execute_cmd.h builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h +builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h $(topdir)/execute_cmd.h caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h @@ -457,10 +456,11 @@ exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h exit.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/jobs.h exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +exit.o: $(topdir)/execute_cmd.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h ../pathnames.h fc.o: $(topdir)/bashtypes.h $(BASHINCDIR)/posixstat.h fc.o: $(topdir)/builtins.h $(topdir)/command.h $(srcdir)/bashgetopt.h -fc.o: $(topdir)/bashhist.h +fc.o: $(topdir)/bashhist.h $(topdir)/parser.h fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h @@ -474,30 +474,34 @@ fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +fg_bg.o: $(topdir)/execute_cmd.h fg_bg.o: $(topdir)/jobs.h ../pathnames.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +getopts.o: $(topdir)/execute_cmd.h getopts.o: ../pathnames.h hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h $(topdir)/sig.h hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +hash.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h hash.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ../pathnames.h help.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h -help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +help.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h help.o: ${srcdir}/common.h $(topdir)/sig.h ../pathnames.h history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h +history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h $(topdir)/parser.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h history.o: ../pathnames.h @@ -552,20 +556,22 @@ return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h -return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +return.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h return.o: ../pathnames.h set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h $(topdir)/sig.h -set.o: $(topdir)/arrayfunc.h ../pathnames.h +set.o: $(topdir)/arrayfunc.h ../pathnames.h $(topdir)/parser.h setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h setattr.o: $(topdir)/externs.h $(topdir)/flags.h $(topdir)/sig.h -setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h +setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h +setattr.o: $(topdir)/conftypes.h $(topdir)/execute_cmd.h setattr.o: $(topdir)/arrayfunc.h ../pathnames.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h @@ -586,6 +592,7 @@ source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h +source.o: $(topdir)/execute_cmd.h source.o: ../pathnames.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h @@ -598,7 +605,7 @@ test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -test.o: $(topdir)/test.h ../pathnames.h +test.o: $(topdir)/execute_cmd.h $(topdir)/test.h ../pathnames.h times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h @@ -615,6 +622,7 @@ type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h +type.o: $(topdir)/execute_cmd.h $(topdir)/parser.h type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ../pathnames.h type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h @@ -634,7 +642,7 @@ wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -wait.o: $(topdir)/jobs.h $(topdir)/sig.h +wait.o: $(topdir)/jobs.h $(topdir)/sig.h $(topdir)/execute_cmd.h wait.o: $(BASHINCDIR)/chartypes.h ../pathnames.h complete.o: ../config.h ../pathnames.h diff --git a/builtins/alias.def b/builtins/alias.def index 508002475..bf484f335 100644 --- a/builtins/alias.def +++ b/builtins/alias.def @@ -65,8 +65,6 @@ $END static void print_alias __P((alias_t *, int)); -extern int posixly_correct; - /* Hack the alias command in a Korn shell way. */ int alias_builtin (list) diff --git a/builtins/bind.def b/builtins/bind.def index 649d73f6f..2b18873c2 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -88,8 +88,7 @@ extern int errno; static int query_bindings __P((char *)); static int unbind_command __P((char *)); - -extern int no_line_editing; +static int unbind_keyseq __P((char *)); #define BIND_RETURN(x) do { return_code = x; goto bind_exit; } while (0) @@ -265,11 +264,8 @@ bind_builtin (list) if ((flags & RFLAG) && remove_seq) { - if (rl_bind_keyseq (remove_seq, (rl_command_func_t *)NULL) != 0) - { - builtin_error (_("`%s': cannot unbind"), remove_seq); - BIND_RETURN (EXECUTION_FAILURE); - } + opt = unbind_keyseq (remove_seq); + BIND_RETURN (opt); } if (flags & XFLAG) @@ -342,4 +338,38 @@ unbind_command (name) rl_unbind_function_in_map (function, rl_get_keymap ()); return EXECUTION_SUCCESS; } + +static int +unbind_keyseq (seq) + char *seq; +{ + char *kseq; + int kslen; + + kseq = (char *)xmalloc ((2 * strlen (seq)) + 1); + if (rl_translate_keyseq (seq, kseq, &kslen)) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return EXECUTION_FAILURE; + } + if (rl_function_of_keyseq (kseq, (Keymap)0, (int *)0) == 0) + { + free (kseq); + return (EXECUTION_SUCCESS); + } + + /* I wish this didn't have to translate the key sequence again, but readline + doesn't have a binding function that takes a translated key sequence as + an argument. */ + if (rl_bind_keyseq (seq, (rl_command_func_t *)NULL) != 0) + { + free (kseq); + builtin_error (_("`%s': cannot unbind"), seq); + return (EXECUTION_FAILURE); + } + + free (kseq); + return (EXECUTION_SUCCESS); +} #endif /* READLINE */ diff --git a/builtins/break.def b/builtins/break.def index bdc1182a8..876d0635d 100644 --- a/builtins/break.def +++ b/builtins/break.def @@ -43,11 +43,9 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" -extern char *this_command_name; -extern int posixly_correct; - static int check_loop_level __P((void)); /* The depth of while's and until's. */ diff --git a/builtins/builtin.def b/builtins/builtin.def index 3e765e410..74060ee09 100644 --- a/builtins/builtin.def +++ b/builtins/builtin.def @@ -1,7 +1,7 @@ This file is builtin.def, from which is created builtin.c. It implements the builtin "builtin" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,7 +31,7 @@ as a shell function, but need to execute the builtin within the function. Exit Status: Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is -not a shell builtin.. +not a shell builtin. $END #include @@ -43,11 +43,10 @@ $END #endif #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" -extern char *this_command_name; - /* Run the command mentioned in list directly, without going through the normal alias/function/builtin/filename lookup process. */ int @@ -71,7 +70,7 @@ builtin_builtin (list) function = find_shell_builtin (command); #endif /* !DISABLED_BUILTINS */ - if (!function) + if (function == 0) { sh_notbuiltin (command); return (EXECUTION_FAILURE); @@ -79,6 +78,7 @@ builtin_builtin (list) else { this_command_name = command; + this_shell_builtin = function; /* overwrite "builtin" as this builtin */ list = list->next; return ((*function) (list)); } diff --git a/builtins/cd.def b/builtins/cd.def index 421e819b2..8cc430863 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -54,8 +54,6 @@ $PRODUCES cd.c extern int errno; #endif /* !errno */ -extern int posixly_correct; -extern int array_needs_making; extern const char * const bash_getcwd_errstr; static int bindpwd __P((int)); @@ -547,7 +545,7 @@ change_to_directory (newdir, nolinks, xattr) int nolinks, xattr; { char *t, *tdir, *ndir; - int err, canon_failed, r, ndlen, dlen; + int err, canon_failed, r, ndlen; tdir = (char *)NULL; @@ -566,7 +564,6 @@ change_to_directory (newdir, nolinks, xattr) : sh_canonpath (t, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); ndlen = strlen (newdir); - dlen = strlen (t); /* Use the canonicalized version of NEWDIR, or, if canonicalization failed, use the non-canonical form. */ diff --git a/builtins/command.def b/builtins/command.def index dcb510d5b..d58c985bc 100644 --- a/builtins/command.def +++ b/builtins/command.def @@ -60,10 +60,6 @@ $END extern size_t confstr __P((int, char *, size_t)); #endif -extern int subshell_environment; - -static void restore_path __P((char *)); - /* Run the commands mentioned in LIST without paying attention to shell functions. */ int @@ -71,7 +67,6 @@ command_builtin (list) WORD_LIST *list; { int result, verbose, use_standard_path, opt; - char *old_path, *standard_path; COMMAND *command; verbose = use_standard_path = 0; @@ -144,20 +139,3 @@ command_builtin (list) return (result); } - -/* Restore the value of the $PATH variable after replacing it when - executing `command -p'. */ -static void -restore_path (var) - char *var; -{ - if (var) - { - bind_variable ("PATH", var, 0); - free (var); - } - else - unbind_variable ("PATH"); - - stupidly_hack_special_variables ("PATH"); -} diff --git a/builtins/common.c b/builtins/common.c index b100ebe1c..0752f0d6d 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -1,6 +1,6 @@ /* common.c - utility functions for all builtins */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -49,6 +49,7 @@ #include "../shell.h" #include "maxpath.h" #include "../flags.h" +#include "../parser.h" #include "../jobs.h" #include "../builtins.h" #include "../input.h" @@ -67,13 +68,6 @@ extern int errno; #endif /* !errno */ -extern int indirection_level, subshell_environment; -extern int line_number; -extern int last_command_exit_value; -extern int trap_saved_exit_value; -extern int running_trap; -extern int posixly_correct; -extern char *this_command_name, *shell_name; extern const char * const bash_getcwd_errstr; /* Used by some builtins and the mainline code. */ @@ -543,7 +537,7 @@ read_octal (string) { digits++; result = (result * 8) + (*string++ - '0'); - if (result > 0777) + if (result > 07777) return -1; } @@ -782,13 +776,9 @@ display_signal_list (list, forcecols) list = list->next; continue; } -#if defined (JOB_CONTROL) /* POSIX.2 says that `kill -l signum' prints the signal name without the `SIG' prefix. */ - printf ("%s\n", (this_shell_builtin == kill_builtin) ? name + 3 : name); -#else - printf ("%s\n", name); -#endif + printf ("%s\n", (this_shell_builtin == kill_builtin && signum > 0) ? name + 3 : name); } else { diff --git a/builtins/common.h b/builtins/common.h index ed852305d..049192a6c 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -23,7 +23,7 @@ #include "stdc.h" -#define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c) +#define ISOPTION(s, c) (s[0] == '-' && s[1] == c && !s[2]) #define ISHELP(s) (STREQ ((s), "--help")) #define CHECK_HELPOPT(l) \ @@ -200,10 +200,11 @@ extern WORD_LIST *get_directory_stack __P((int)); /* Functions from evalstring.c */ extern int parse_and_execute __P((char *, const char *, int)); extern int evalstring __P((char *, const char *, int)); -extern void parse_and_execute_cleanup __P((void)); +extern void parse_and_execute_cleanup __P((int)); extern int parse_string __P((char *, const char *, int, char **)); extern int should_suppress_fork __P((COMMAND *)); extern void optimize_fork __P((COMMAND *)); +extern void optimize_subshell_command __P((COMMAND *)); /* Functions from evalfile.c */ extern int maybe_execute_file __P((const char *, int)); @@ -211,4 +212,29 @@ extern int force_execute_file __P((const char *, int)); extern int source_file __P((const char *, int)); extern int fc_execute_file __P((const char *)); +/* variables from common.c */ +extern sh_builtin_func_t *this_shell_builtin; +extern sh_builtin_func_t *last_shell_builtin; + +/* variables from evalfile.c */ +extern int sourcelevel; + +/* variables from evalstring.c */ +extern int parse_and_execute_level; + +/* variables from break.def/continue.def */ +extern int breaking; +extern int continuing; +extern int loop_level; + +/* variables from read.def */ +extern int sigalrm_seen; + +/* variables from source.def */ +extern int source_searches_cwd; +extern int source_uses_path; + +/* variables from wait.def */ +extern int wait_intr_flag; + #endif /* !__COMMON_H */ diff --git a/builtins/complete.def b/builtins/complete.def index 6bdf88b47..3ca8c1fae 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -515,6 +515,8 @@ print_one_completion (cmd, cs) PRINTCOMPOPT (COPT_DEFAULT, "default"); PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + PRINTCOMPOPT (COPT_NOSORT, "nosort"); PRINTCOMPOPT (COPT_NOSPACE, "nospace"); PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); @@ -589,6 +591,8 @@ print_compopts (cmd, cs, full) XPRINTCOMPOPT (COPT_DEFAULT, "default"); XPRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); XPRINTCOMPOPT (COPT_FILENAMES, "filenames"); + XPRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + XPRINTCOMPOPT (COPT_NOSORT, "nosort"); XPRINTCOMPOPT (COPT_NOSPACE, "nospace"); XPRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); } @@ -598,6 +602,8 @@ print_compopts (cmd, cs, full) PRINTCOMPOPT (COPT_DEFAULT, "default"); PRINTCOMPOPT (COPT_DIRNAMES, "dirnames"); PRINTCOMPOPT (COPT_FILENAMES, "filenames"); + PRINTCOMPOPT (COPT_NOQUOTE, "noquote"); + PRINTCOMPOPT (COPT_NOSORT, "nosort"); PRINTCOMPOPT (COPT_NOSPACE, "nospace"); PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs"); } @@ -675,6 +681,8 @@ compgen_builtin (list) COMPSPEC *cs; STRINGLIST *sl; char *word, **matches; + char *old_line; + int old_ind; if (list == 0) return (EXECUTION_SUCCESS); @@ -715,7 +723,15 @@ compgen_builtin (list) cs->filterpat = STRDUP (Xarg); rval = EXECUTION_FAILURE; + + /* probably don't have to save these, just being safe */ + old_line = pcomp_line; + old_ind = pcomp_ind; + pcomp_line = (char *)NULL; + pcomp_ind = 0; sl = gen_compspec_completions (cs, "compgen", word, 0, 0, 0); + pcomp_line = old_line; + pcomp_ind = old_ind; /* If the compspec wants the bash default completions, temporarily turn off programmable completion and call the bash completion code. */ diff --git a/builtins/declare.def b/builtins/declare.def index f4819b423..2574eba4d 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -40,11 +40,11 @@ Options which set attributes: -a to make NAMEs indexed arrays (if supported) -A to make NAMEs associative arrays (if supported) -i to make NAMEs have the `integer' attribute - -l to convert NAMEs to lower case on assignment + -l to convert the value of each NAME to lower case on assignment -n make NAME a reference to the variable named by its value -r to make NAMEs readonly -t to make NAMEs have the `trace' attribute - -u to convert NAMEs to upper case on assignment + -u to convert the value of each NAME to upper case on assignment -x to make NAMEs export Using `+' instead of `-' turns off the given attribute. @@ -88,9 +88,7 @@ $END #include "builtext.h" #include "bashgetopt.h" -extern int array_needs_making; -extern int posixly_correct; - +static SHELL_VAR *declare_find_variable __P((const char *, int, int)); static int declare_internal __P((register WORD_LIST *, int)); /* Declare or change variable attributes. */ @@ -120,6 +118,13 @@ int local_builtin (list) register WORD_LIST *list; { + /* Catch a straight `local --help' before checking function context */ + if (list && list->word && STREQ (list->word->word, "--help")) + { + builtin_help (); + return (EX_USAGE); + } + if (variable_context) return (declare_internal (list, 1)); else @@ -130,11 +135,31 @@ local_builtin (list) } #if defined (ARRAY_VARS) -# define DECLARE_OPTS "+acfgilnprtuxAF" +# define DECLARE_OPTS "+acfgilnprtuxAFG" #else -# define DECLARE_OPTS "+cfgilnprtuxF" +# define DECLARE_OPTS "+cfgilnprtuxFG" #endif +static SHELL_VAR * +declare_find_variable (name, mkglobal, chklocal) + const char *name; + int mkglobal, chklocal; +{ + SHELL_VAR *var; + + if (mkglobal == 0) + return (find_variable (name)); + else if (chklocal) + { + var = find_variable (name); + if (var && local_p (var) && var->context == variable_context) + return var; + return (find_global_variable (name)); + } + else + return (find_global_variable (name)); +} + /* The workhorse function. */ static int declare_internal (list, local_var) @@ -142,12 +167,14 @@ declare_internal (list, local_var) int local_var; { int flags_on, flags_off, *flags; - int any_failed, assign_error, pflag, nodefs, opt, mkglobal, onref, offref; + int any_failed, assign_error, pflag, nodefs, opt, onref, offref; + int mkglobal, chklocal; char *t, *subscript_start; SHELL_VAR *var, *refvar, *v; FUNCTION_DEF *shell_fn; - flags_on = flags_off = any_failed = assign_error = pflag = nodefs = mkglobal = 0; + flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0; + mkglobal = chklocal = 0; refvar = (SHELL_VAR *)NULL; reset_internal_getopt (); while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1) @@ -185,6 +212,10 @@ declare_internal (list, local_var) case 'f': *flags |= att_function; break; + case 'G': + if (flags == &flags_on) + chklocal = 1; + /*FALLTHROUGH*/ case 'g': if (flags == &flags_on) mkglobal = 1; @@ -288,6 +319,7 @@ declare_internal (list, local_var) { char *value, *name, *oldname; int offset, aflags, wflags, created_var, namelen; + int assoc_noexpand; #if defined (ARRAY_VARS) int making_array_special, compound_array_assign, simple_array_assign; int var_exists, array_exists, creating_array, array_subscript_assignment; @@ -295,13 +327,18 @@ declare_internal (list, local_var) name = savestring (list->word->word); wflags = list->word->flags; - offset = assignment (name, 0); +#if defined (ARRAY_VARS) + assoc_noexpand = assoc_expand_once && (wflags & W_ASSIGNMENT); +#else + assoc_noexpand = 0; +#endif + offset = assignment (name, assoc_noexpand ? 2 : 0); aflags = 0; created_var = 0; if (local_var && variable_context && STREQ (name, "-")) { - var = make_local_variable ("-"); + var = make_local_variable ("-", 0); FREE (value_cell (var)); /* just in case */ value = get_current_options (); var_setvalue (var, value); @@ -363,7 +400,7 @@ restart_new_var_name: compound_array_assign = simple_array_assign = 0; array_subscript_assignment = 0; subscript_start = (char *)NULL; - if (t = strchr (name, '[')) /* ] */ + if ((t = strchr (name, '[')) && (flags_on & att_function) == 0) /* ] */ { /* If offset != 0 we have already validated any array reference because assignment() calls skipsubscript() */ @@ -423,18 +460,18 @@ restart_new_var_name: if (refvar && refvar->context != variable_context) { refvar = 0; - var = make_local_variable (name); + var = make_local_variable (name, 0); } else if (refvar && refvar->context == variable_context) var = refvar; /* Maybe we just want to create a new local variable */ else if (var == 0 || var->context != variable_context) - var = make_local_variable (name); + var = make_local_variable (name, 0); /* otherwise we have a var at the right context */ } else /* XXX - check name for validity here with valid_nameref_value */ - var = make_local_variable (name); /* sets att_invisible for new vars */ + var = make_local_variable (name, 0); /* sets att_invisible for new vars */ if (var == 0) { any_failed++; @@ -528,21 +565,17 @@ restart_new_var_name: #endif if (var == 0 && (flags_on & att_nameref)) { -#if 0 - /* See if we are trying to modify an existing nameref variable */ - var = mkglobal ? find_global_variable_last_nameref (name, 1) : find_variable_last_nameref (name, 1); -#else /* See if we are trying to modify an existing nameref variable, but don't follow the nameref chain. */ var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); -#endif if (var && nameref_p (var) == 0) var = 0; } /* However, if we're turning off the nameref attribute on an existing nameref variable, we first follow the nameref chain to the end, - modify the value of the variable this nameref variable references, - *CHANGING ITS VALUE AS A SIDE EFFECT* then turn off the nameref + modify the value of the variable this nameref variable references + if there is an assignment statement argument, + *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */ else if (var == 0 && (flags_off & att_nameref)) { @@ -560,7 +593,18 @@ restart_new_var_name: any_failed++; NEXT_VARIABLE (); } + + /* If all we're doing is turning off the nameref attribute, don't + bother with VAR at all, whether it exists or not. Just turn it + off and go on. */ + if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0) + { + VUNSETATTR (refvar, att_nameref); + NEXT_VARIABLE (); + } + if (refvar) + /* XXX - use declare_find_variable here? */ var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); } #if defined (ARRAY_VARS) @@ -592,6 +636,7 @@ restart_new_var_name: if (refvar && nameref_p (refvar) == 0) refvar = 0; if (refvar) + /* XXX - use declare_find_variable here? */ var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); if (refvar && var == 0) { @@ -637,12 +682,18 @@ restart_new_var_name: value = name + namelen; } free (oldname); + + /* OK, let's turn off the nameref attribute. + Now everything else applies to VAR. */ + if (flags_off & att_nameref) + VUNSETATTR (refvar, att_nameref); + goto restart_new_var_name; /* NOTREACHED */ } } if (var == 0) - var = mkglobal ? find_global_variable (name) : find_variable (name); + var = declare_find_variable (name, mkglobal, chklocal); #if defined (ARRAY_VARS) var_exists = var != 0; @@ -821,10 +872,13 @@ restart_new_var_name: assign_array_var_from_string (var, value, aflags|ASS_FORCE); else if (simple_array_assign && subscript_start) { + int local_aflags; /* declare [-aA] name[N]=value */ *subscript_start = '['; /* ] */ /* XXX - problem here with appending */ - var = assign_array_element (name, value, aflags&ASS_APPEND); /* XXX - not aflags */ + local_aflags = aflags&ASS_APPEND; + local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0; + var = assign_array_element (name, value, local_aflags); /* XXX - not aflags */ *subscript_start = '\0'; if (var == 0) /* some kind of assignment error */ { diff --git a/builtins/echo.def b/builtins/echo.def index 3f8b5a939..b0eda8499 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -99,8 +99,6 @@ int xpg_echo = 1; int xpg_echo = 0; #endif /* DEFAULT_ECHO_TO_XPG */ -extern int posixly_correct; - /* Print the words in LIST to standard output. If the first word is `-n', then don't print a trailing newline. We also support the echo syntax from Version 9 Unix systems. */ diff --git a/builtins/evalfile.c b/builtins/evalfile.c index 316b7940f..32a7c8d68 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -1,6 +1,6 @@ /* evalfile.c - read and evaluate commands from a file or file descriptor */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -36,6 +36,7 @@ #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../jobs.h" #include "../builtins.h" #include "../flags.h" @@ -68,13 +69,6 @@ extern int errno; #define FEVAL_REGFILE 0x080 #define FEVAL_NOPUSHARGS 0x100 -extern int posixly_correct; -extern int indirection_level, subshell_environment; -extern int return_catch_flag, return_catch_value; -extern int last_command_exit_value; -extern int executing_command_builtin; -extern int current_token; /* parse.y */ - /* How many `levels' of sourced files we have. */ int sourcelevel = 0; @@ -92,7 +86,7 @@ _evalfile (filename, flags) size_t file_size; sh_vmsg_func_t *errfunc; #if defined (ARRAY_VARS) - SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; struct func_array_state *fa; # if defined (DEBUGGER) @@ -260,7 +254,9 @@ file_error_and_exit: arguments */ if ((flags & FEVAL_NOPUSHARGS) == 0) { - array_push (bash_argv_a, (char *)filename); + if (shell_compatibility_level <= 44) + init_bash_argv (); + array_push (bash_argv_a, (char *)filename); /* XXX - unconditionally? */ tt[0] = '1'; tt[1] = '\0'; array_push (bash_argc_a, tt); if (flags & FEVAL_UNWINDPROT) @@ -282,7 +278,7 @@ file_error_and_exit: force parse_and_execute () to clean up. */ if (return_val) { - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); result = return_catch_value; } else diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 6dc756c27..5073ca49a 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -1,6 +1,6 @@ /* evalstring.c - evaluate a string as one or more shell commands. */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,6 +39,7 @@ #include "../jobs.h" #include "../builtins.h" #include "../flags.h" +#include "../parser.h" #include "../input.h" #include "../execute_cmd.h" #include "../redir.h" @@ -60,19 +61,6 @@ extern int errno; #define IS_BUILTIN(s) (builtin_address_internal(s, 0) != (struct builtin *)NULL) -extern int indirection_level, subshell_environment; -extern int line_number, line_number_for_err_trap; -extern int current_token, shell_eof_token; -extern int last_command_exit_value; -extern int running_trap; -extern int loop_level; -extern int executing_list; -extern int comsub_ignore_return; -extern int posixly_correct; -extern int return_catch_flag, return_catch_value; -extern sh_builtin_func_t *this_shell_builtin; -extern char *the_printed_command_except_trap; - int parse_and_execute_level = 0; static int cat_file __P((REDIRECT *)); @@ -124,14 +112,41 @@ optimize_fork (command) command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; } } + +void +optimize_subshell_command (command) + COMMAND *command; +{ + if (running_trap == 0 && + command->type == cm_simple && + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && + any_signals_trapped () < 0 && + command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)) + { + command->flags |= CMD_NO_FORK; + command->value.Simple->flags |= CMD_NO_FORK; + } + else if (command->type == cm_connection && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR)) + optimize_subshell_command (command->value.Connection->second); +} /* How to force parse_and_execute () to clean up after itself. */ void -parse_and_execute_cleanup () +parse_and_execute_cleanup (old_running_trap) + int old_running_trap; { - if (running_trap) + if (running_trap > 0) { - run_trap_cleanup (running_trap - 1); + /* We assume if we have a different value for running_trap than when + we started (the only caller that cares is evalstring()), the + original caller will perform the cleanup, and we should not step + on them. */ + if (running_trap != old_running_trap) + run_trap_cleanup (running_trap - 1); unfreeze_jobs_list (); } @@ -644,6 +659,10 @@ evalstring (string, from_file, flags) int flags; { volatile int r, rflag, rcatch; + volatile int was_trap; + + /* Are we running a trap when we execute this function? */ + was_trap = running_trap; rcatch = 0; rflag = return_catch_flag; @@ -663,7 +682,9 @@ evalstring (string, from_file, flags) if (rcatch) { - parse_and_execute_cleanup (); + /* We care about whether or not we are running the same trap we were + when we entered this function. */ + parse_and_execute_cleanup (was_trap); r = return_catch_value; } else diff --git a/builtins/exec.def b/builtins/exec.def index 7d7edce03..4bf51d9da 100644 --- a/builtins/exec.def +++ b/builtins/exec.def @@ -74,7 +74,6 @@ $END extern int errno; #endif /* !errno */ -extern int subshell_environment; extern REDIRECT *redirection_undo_list; extern char *exec_argv0; @@ -190,8 +189,11 @@ exec_builtin (list) /* Decrement SHLVL by 1 so a new shell started here has the same value, preserving the appearance. After we do that, we need to change the - exported environment to include the new value. */ - if (cleanenv == 0) + exported environment to include the new value. If we've already forked + and are in a subshell, we don't want to decrement the shell level, + since we are `increasing' the level */ + + if (cleanenv == 0 && (subshell_environment & SUBSHELL_PAREN) == 0) adjust_shell_level (-1); if (cleanenv) diff --git a/builtins/exit.def b/builtins/exit.def index f28c2342c..5167b2e0c 100644 --- a/builtins/exit.def +++ b/builtins/exit.def @@ -41,17 +41,14 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" +#include "../trap.h" #include "common.h" #include "builtext.h" /* for jobs_builtin */ extern int check_jobs_at_exit; -extern int last_command_exit_value; -extern int running_trap, trap_saved_exit_value; -extern int subshell_environment; -extern sh_builtin_func_t *this_shell_builtin; -extern sh_builtin_func_t *last_shell_builtin; static int exit_or_logout __P((WORD_LIST *)); static int sourced_logout; diff --git a/builtins/fc.def b/builtins/fc.def index fe164710e..da0f0bcb6 100644 --- a/builtins/fc.def +++ b/builtins/fc.def @@ -75,6 +75,7 @@ $END #include "../shell.h" #include "../builtins.h" #include "../flags.h" +#include "../parser.h" #include "../bashhist.h" #include "maxpath.h" #include @@ -85,11 +86,6 @@ $END extern int errno; #endif /* !errno */ -extern int current_command_line_count; -extern int literal_history; -extern int posixly_correct; -extern int subshell_environment, interactive_shell; - extern int unlink __P((const char *)); extern FILE *sh_mktmpfp __P((char *, int, char **)); @@ -463,7 +459,7 @@ fc_builtin (list) /* Turn on the `v' flag while fc_execute_file runs so the commands will be echoed as they are read by the parser. */ begin_unwind_frame ("fc builtin"); - add_unwind_protect ((Function *)xfree, fn); + add_unwind_protect (xfree, fn); add_unwind_protect (unlink, fn); add_unwind_protect (set_verbose_flag, (char *)NULL); echo_input_at_read = 1; diff --git a/builtins/fg_bg.def b/builtins/fg_bg.def index 1565e0a12..6a68d6ab0 100644 --- a/builtins/fg_bg.def +++ b/builtins/fg_bg.def @@ -46,13 +46,12 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" #include "common.h" #include "bashgetopt.h" #if defined (JOB_CONTROL) -extern char *this_command_name; - static int fg_bg __P((WORD_LIST *, int)); /* How to bring a job into the foreground. */ diff --git a/builtins/getopts.def b/builtins/getopts.def index 590b11035..f473ef01d 100644 --- a/builtins/getopts.def +++ b/builtins/getopts.def @@ -77,6 +77,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" #include "getopt.h" @@ -85,8 +86,6 @@ $END #define G_INVALID_OPT -2 #define G_ARG_MISSING -3 -extern char *this_command_name; - static int getopts_unbind_variable __P((char *)); static int getopts_bind_variable __P((char *, char *)); static int dogetopts __P((int, char **)); diff --git a/builtins/hash.def b/builtins/hash.def index bec4b073b..b30393081 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -61,15 +61,14 @@ $END #include "../shell.h" #include "../builtins.h" +#include "../execute_cmd.h" #include "../flags.h" #include "../findcmd.h" #include "../hashcmd.h" #include "common.h" #include "bashgetopt.h" -extern int posixly_correct; extern int dot_found_in_search; -extern char *this_command_name; static int add_hashed_command __P((char *, int)); static int print_hash_info __P((BUCKET_CONTENTS *)); @@ -149,10 +148,23 @@ hash_builtin (list) return (list_hashed_filename_targets (list, list_portably)); #if defined (RESTRICTED_SHELL) - if (restricted && pathname && strchr (pathname, '/')) + if (restricted && pathname) { - sh_restricted (pathname); - return (EXECUTION_FAILURE); + if (strchr (pathname, '/')) + { + sh_restricted (pathname); + return (EXECUTION_FAILURE); + } + /* If we are changing the hash table in a restricted shell, make sure the + target pathname can be found using a $PATH search. */ + w = find_user_command (pathname); + if (w == 0 || *w == 0 || executable_file (w) == 0) + { + sh_notfound (pathname); + free (w); + return (EXECUTION_FAILURE); + } + free (w); } #endif diff --git a/builtins/help.def b/builtins/help.def index 95a1a360b..006c4b5d1 100644 --- a/builtins/help.def +++ b/builtins/help.def @@ -37,7 +37,7 @@ Options: PATTERN Arguments: - PATTERN Pattern specifiying a help topic + PATTERN Pattern specifying a help topic Exit Status: Returns success unless PATTERN is not found or an invalid option is given. @@ -64,6 +64,7 @@ $END #include "../shell.h" #include "../builtins.h" +#include "../execute_cmd.h" #include "../pathexp.h" #include "common.h" #include "bashgetopt.h" @@ -78,9 +79,6 @@ extern int errno; extern const char * const bash_copyright; extern const char * const bash_license; -extern char *this_command_name; -extern struct builtin *current_builtin; - static void show_builtin_command_help __P((void)); static int open_helpfile __P((char *)); static void show_desc __P((char *, int)); @@ -132,7 +130,7 @@ help_builtin (list) if (glob_pattern_p (list->word->word)) { - printf (ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); + printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1))); print_word_list (list, ", "); printf ("'\n\n"); } @@ -260,7 +258,7 @@ show_desc (name, i) char *name; int i; { - register int j; + register int j, r; char **doc, *line; int fd, usefile; @@ -272,8 +270,9 @@ show_desc (name, i) fd = open_helpfile (doc[0]); if (fd < 0) return; - zmapfd (fd, &line, doc[0]); + r = zmapfd (fd, &line, doc[0]); close (fd); + /* XXX - handle errors if zmapfd returns < 0 */ } else line = doc ? doc[0] : (char *)NULL; @@ -421,7 +420,6 @@ wdispcolumn (i, buf, bufsize, width, height) char *helpdoc; wchar_t *wcstr; size_t slen, n; - int wclen; /* first column */ helpdoc = _(shell_builtins[i].short_doc); @@ -531,10 +529,7 @@ Use `man -k' or `info' to find out more about commands not in this list.\n\ A star (*) next to a name means that the command is disabled.\n\ \n")); - t = get_string_value ("COLUMNS"); - width = (t && *t) ? atoi (t) : 80; - if (width <= 0) - width = 80; + width = default_columns (); width /= 2; if (width > sizeof (blurb)) diff --git a/builtins/history.def b/builtins/history.def index 48b59aeb5..77093a455 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -1,7 +1,7 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2016 Free Software Foundation, Inc. +Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,7 +31,8 @@ entry with a `*'. An argument of N lists only the last N entries. Options: -c clear the history list by deleting all of the entries - -d offset delete the history entry at position OFFSET. + -d offset delete the history entry at position OFFSET. Negative + offsets count back from the end of the history list -a append history lines from this session to the history file -n read all history lines not already read from the history file @@ -74,6 +75,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../bashhist.h" #include #include "bashgetopt.h" @@ -83,9 +85,6 @@ $END extern int errno; #endif -extern int current_command_line_count; -extern int force_append_history; /* shopt -s histappend */ - static char *histtime __P((HIST_ENTRY *, const char *)); static int display_history __P((WORD_LIST *)); static void push_history __P((WORD_LIST *)); @@ -104,8 +103,8 @@ int history_builtin (list) WORD_LIST *list; { - int flags, opt, result, old_history_lines, obase; - char *filename, *delete_arg; + int flags, opt, result, old_history_lines, obase, ind; + char *filename, *delete_arg, *range; intmax_t delete_offset; flags = 0; @@ -178,16 +177,82 @@ history_builtin (list) return (sh_chkwrite (EXECUTION_SUCCESS)); } #endif + else if ((flags & DFLAG) && (range = strchr ((delete_arg[0] == '-') ? delete_arg + 1 : delete_arg, '-'))) + { + intmax_t delete_start, delete_end; + *range++ = '\0'; + if (legal_number (delete_arg, &delete_start) == 0 || legal_number (range, &delete_end) == 0) + { + range[-1] = '-'; + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + if (delete_arg[0] == '-' && delete_start < 0) + { + /* the_history[history_length] == 0x0, so this is correct */ + delete_start += history_length; + if (delete_start < history_base) + { +start_error: + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + } + /* numbers as displayed by display_history are offset by history_base */ + else if (delete_start > 0) + delete_start -= history_base; + if (delete_start < 0 || delete_start >= history_length) + goto start_error; + if (range[0] == '-' && delete_end < 0) + { + delete_end += history_length; + if (delete_end < history_base) + { +range_error: + sh_erange (range, _("history position")); + return (EXECUTION_FAILURE); + } + } + else if (delete_end > 0) + delete_end -= history_base; + if (delete_end < 0 || delete_end >= history_length) + goto range_error; + result = bash_delete_history_range (delete_start, delete_end); + if (where_history () > history_length) + history_set_pos (history_length); + return (result ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } else if (flags & DFLAG) { - if ((legal_number (delete_arg, &delete_offset) == 0) - || (delete_offset < history_base) - || (delete_offset > (history_base + history_length))) + if (legal_number (delete_arg, &delete_offset) == 0) { sh_erange (delete_arg, _("history position")); return (EXECUTION_FAILURE); } - opt = delete_offset; + /* check for negative offsets, count back from end of list */ + if (delete_arg[0] == '-' && delete_offset < 0) + { + /* since the_history[history_length] == 0x0, this calculation means + that history -d -1 will delete the last history entry, which at + this point is the history -d -1 we just added. */ + ind = history_length + delete_offset; + if (ind < history_base) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + opt = ind + history_base; /* compensate for opt - history_base below */ + } + else if ((delete_offset < history_base) || (delete_offset > (history_base + history_length))) + { + sh_erange (delete_arg, _("history position")); + return (EXECUTION_FAILURE); + } + else + opt = delete_offset; + + /* Positive arguments from numbers as displayed by display_history need + to be offset by history_base */ result = bash_delete_histent (opt - history_base); /* Since remove_history changes history_length, this can happen if we delete the last history entry. */ @@ -256,10 +321,12 @@ histtime (hlist, histtimefmt) { static char timestr[128]; time_t t; + struct tm *tm; t = history_get_time (hlist); - if (t) - strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t)); + tm = t ? localtime (&t) : 0; + if (t && tm) + strftime (timestr, sizeof (timestr), histtimefmt, tm); else if (hlist->timestamp && hlist->timestamp[0]) snprintf (timestr, sizeof (timestr), _("%s: invalid timestamp"), (hlist->timestamp[0] == '#') ? hlist->timestamp + 1: hlist->timestamp); diff --git a/builtins/kill.def b/builtins/kill.def index f05189dec..ad4e5bbb9 100644 --- a/builtins/kill.def +++ b/builtins/kill.def @@ -70,8 +70,6 @@ $END extern int errno; #endif /* !errno */ -extern int posixly_correct; - static void kill_error __P((pid_t, int)); #if !defined (CONTINUE_AFTER_KILL_ERROR) diff --git a/builtins/let.def b/builtins/let.def index 23e684fdc..d090a45bc 100644 --- a/builtins/let.def +++ b/builtins/let.def @@ -100,7 +100,7 @@ let_builtin (list) for (; list; list = list->next) { - ret = evalexp (list->word->word, &expok); + ret = evalexp (list->word->word, EXP_EXPANDED, &expok); if (expok == 0) return (EXECUTION_FAILURE); } @@ -124,7 +124,7 @@ exp_builtin (list) } exp = string_list (list); - ret = evalexp (exp, &expok); + ret = evalexp (exp, EXP_EXPANDED, &expok); (void)free (exp); return (((ret == 0) || (expok == 0)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } diff --git a/builtins/mapfile.def b/builtins/mapfile.def index 0d64f6189..995d34acd 100644 --- a/builtins/mapfile.def +++ b/builtins/mapfile.def @@ -59,7 +59,7 @@ $END $BUILTIN readarray $FUNCTION mapfile_builtin -$SHORT_DOC readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +$SHORT_DOC readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] Read lines from a file into an array variable. A synonym for `mapfile'. @@ -232,7 +232,7 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n break; } - xfree (line); + free (line); if (unbuffered_read == 0) zsyncfd (fd); @@ -244,12 +244,11 @@ int mapfile_builtin (list) WORD_LIST *list; { - int opt, code, fd, clear_array, flags; + int opt, code, fd, flags; intmax_t intval; long lines, origin, nskip, callback_quantum; char *array_name, *callback; - clear_array = 1; fd = 0; lines = origin = nskip = 0; flags = MAPF_CLEARARRAY; diff --git a/builtins/printf.def b/builtins/printf.def index d39a6d3f2..fc0892918 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1,7 +1,7 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2016 Free Software Foundation, Inc. +Copyright (C) 1997-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -148,8 +148,11 @@ extern int errno; QUIT; \ if (vflag) \ { \ - bind_printf_variable (vname, vbuf, 0); \ + SHELL_VAR *v; \ + v = bind_printf_variable (vname, vbuf, 0); \ stupidly_hack_special_variables (vname); \ + if (v == 0 || readonly_p (v) || noassign_p (v)) \ + return (EXECUTION_FAILURE); \ } \ if (conv_bufsize > 4096 ) \ { \ @@ -258,7 +261,7 @@ printf_builtin (list) case 'v': vname = list_optarg; #if defined (ARRAY_VARS) - if (legal_identifier (vname) || valid_array_reference (vname, 0)) + if (legal_identifier (vname) || valid_array_reference (vname, assoc_expand_once)) #else if (legal_identifier (vname)) #endif @@ -293,9 +296,10 @@ printf_builtin (list) /* Allow printf -v var "" to act like var="" */ if (vflag && list->word->word && list->word->word[0] == '\0') { - bind_printf_variable (vname, "", 0); + SHELL_VAR *v; + v = bind_printf_variable (vname, "", 0); stupidly_hack_special_variables (vname); - return (EXECUTION_SUCCESS); + return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS); } if (list->word->word == 0 || list->word->word[0] == '\0') @@ -577,7 +581,7 @@ printf_builtin (list) else if (ansic_shouldquote (p)) xp = ansic_quote (p, 0, (int *)0); else - xp = sh_backslash_quote (p, 0, 1); + xp = sh_backslash_quote (p, 0, 3); if (xp) { /* Use printstr to get fieldwidth and precision right. */ @@ -711,8 +715,8 @@ printstr (fmt, string, len, fieldwidth, precision) int fw, pr; /* fieldwidth and precision */ intmax_t mfw, mpr; - if (string == 0 || len == 0) - return 0; + if (string == 0) + string = ""; #if 0 s = fmt; @@ -955,7 +959,9 @@ bexpand (string, len, sawc, lenp) *sawc = 0; if (lenp) *lenp = 0; - return ((char *)NULL); + ret = (char *)xmalloc (1); + ret[0] = '\0'; + return (ret); } ret = (char *)xmalloc (len + 1); @@ -1239,18 +1245,17 @@ asciicode () register intmax_t ch; #if defined (HANDLE_MULTIBYTE) wchar_t wc; - size_t mblength, slen; + size_t slen; + int mblength; #endif DECLARE_MBSTATE; #if defined (HANDLE_MULTIBYTE) slen = strlen (garglist->word->word+1); - mblength = MBLEN (garglist->word->word+1, slen); - if (mblength > 1) - { - mblength = mbtowc (&wc, garglist->word->word+1, slen); - ch = wc; /* XXX */ - } + wc = 0; + mblength = mbtowc (&wc, garglist->word->word+1, slen); + if (mblength > 0) + ch = wc; /* XXX */ else #endif ch = (unsigned char)garglist->word->word[1]; @@ -1268,10 +1273,10 @@ bind_printf_variable (name, value, flags) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name, 0) == 0) + if (valid_array_reference (name, assoc_expand_once) == 0) v = bind_variable (name, value, flags); else - v = assign_array_element (name, value, flags); + v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0)); #else /* !ARRAY_VARS */ v = bind_variable (name, value, flags); #endif /* !ARRAY_VARS */ diff --git a/builtins/pushd.def b/builtins/pushd.def index 6579e4c8a..71e040979 100644 --- a/builtins/pushd.def +++ b/builtins/pushd.def @@ -678,7 +678,7 @@ get_directory_stack (flags) d = "."; else { - t = polite_directory_format (d); + t = (flags&1) ? polite_directory_format (d) : d; /* polite_directory_format sometimes returns its argument unchanged. If it does not, we can free d right away. If it does, we need to mark d to be deleted later. */ diff --git a/builtins/read.def b/builtins/read.def index b54b3af6c..584ff70a4 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -1,7 +1,7 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,7 +39,7 @@ Options: variable ARRAY, starting at zero -d delim continue until the first character of DELIM is read, rather than newline - -e use Readline to obtain the line in an interactive shell + -e use Readline to obtain the line -i text use TEXT as the initial text for Readline -n nchars return after reading NCHARS characters rather than waiting for a newline, but honor a delimiter if fewer than @@ -93,6 +93,7 @@ $END #include "../shell.h" #include "common.h" #include "bashgetopt.h" +#include "trap.h" #include @@ -111,15 +112,10 @@ $END extern int errno; #endif -extern void run_pending_traps __P((void)); - -extern int posixly_correct; -extern int trapped_signal_received; - struct ttsave { int fd; - TTYSTRUCT *attrs; + TTYSTRUCT attrs; }; #if defined (READLINE) @@ -152,9 +148,8 @@ static struct ttsave termsave; avoids problems with the semi-tricky stuff we do with the xfree of input_string at the top of the unwind-protect list (see below). */ -/* Set a flag that CHECK_ALRM can check. This relies on zread calling - trap.c:check_signals_and_traps(), which knows about sigalrm_seen and - alrmbuf. */ +/* Set a flag that CHECK_ALRM can check. This relies on zread or read_builtin + calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */ static sighandler sigalrm (s) int s; @@ -181,10 +176,11 @@ read_builtin (list) WORD_LIST *list; { register char *varname; - int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2; + int size, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2, nflag; volatile int i; int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul; int raw, edit, nchars, silent, have_timeout, ignore_delim, fd, lastsig, t_errno; + int mb_cur_max; unsigned int tmsec, tmusec; long ival, uval; intmax_t intval; @@ -239,10 +235,11 @@ read_builtin (list) rlind = 0; #endif + mb_cur_max = MB_CUR_MAX; tmsec = tmusec = 0; /* no timeout */ nr = nchars = input_is_tty = input_is_pipe = unbuffered_read = have_timeout = 0; delim = '\n'; /* read until newline */ - ignore_delim = 0; + ignore_delim = nflag = 0; reset_internal_getopt (); while ((opt = internal_getopt (list, "ersa:d:i:n:p:t:u:N:")) != -1) @@ -291,6 +288,7 @@ read_builtin (list) ignore_delim = 1; delim = -1; case 'n': + nflag = 1; code = legal_number (list_optarg, &intval); if (code == 0 || intval < 0 || intval != (int)intval) { @@ -338,7 +336,7 @@ read_builtin (list) /* Convenience: check early whether or not the first of possibly several variable names is a valid identifier, and bail early if so. */ #if defined (ARRAY_VARS) - if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) + if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, assoc_expand_once) == 0) #else if (list && legal_identifier (list->word->word) == 0) #endif @@ -364,6 +362,14 @@ read_builtin (list) input_string = (char *)xmalloc (size = 112); /* XXX was 128 */ input_string[0] = '\0'; + /* More input and options validation */ + if (nflag == 1 && nchars == 0) + { + retval = read (fd, &c, 0); + retval = (retval >= 0) ? EXECUTION_SUCCESS : EXECUTION_FAILURE; + goto assign_vars; /* bail early if asked to read 0 chars */ + } + /* $TMOUT, if set, is the default timeout for read. */ if (have_timeout == 0 && (e = get_string_value ("TMOUT"))) { @@ -384,7 +390,11 @@ read_builtin (list) sync_buffered_stream (default_buffered_input); #endif +#if 1 input_is_tty = isatty (fd); +#else + input_is_tty = 1; +#endif if (input_is_tty == 0) #ifndef __CYGWIN__ input_is_pipe = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE); @@ -484,7 +494,7 @@ read_builtin (list) /* ttsave() */ termsave.fd = fd; ttgetattr (fd, &ttattrs); - termsave.attrs = &ttattrs; + termsave.attrs = ttattrs; ttset = ttattrs; i = silent ? ttfd_cbreak (fd, &ttset) : ttfd_onechar (fd, &ttset); @@ -501,7 +511,7 @@ read_builtin (list) /* ttsave (); */ termsave.fd = fd; ttgetattr (fd, &ttattrs); - termsave.attrs = &ttattrs; + termsave.attrs = ttattrs; ttset = ttattrs; i = ttfd_noecho (fd, &ttset); /* ttnoecho (); */ @@ -544,7 +554,7 @@ read_builtin (list) { if (rlbuf && rlbuf[rlind] == '\0') { - xfree (rlbuf); + free (rlbuf); rlbuf = (char *)0; } if (rlbuf == 0) @@ -574,11 +584,8 @@ read_builtin (list) print_ps2 = 0; } -#if 0 - if (posixly_correct == 0) - interrupt_immediately++; -#endif reading = 1; + CHECK_ALRM; if (unbuffered_read == 2) retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); else if (unbuffered_read) @@ -586,15 +593,12 @@ read_builtin (list) else retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); reading = 0; -#if 0 - if (posixly_correct == 0) - interrupt_immediately--; -#endif if (retval <= 0) { if (retval < 0 && errno == EINTR) { + check_signals (); /* in case we didn't call zread via zreadc */ lastsig = LASTSIG(); if (lastsig == 0) lastsig = trapped_signal_received; @@ -609,14 +613,16 @@ read_builtin (list) break; } - CHECK_ALRM; QUIT; /* in case we didn't call check_signals() */ #if defined (READLINE) } #endif - CHECK_ALRM; - if (i + 4 >= size) /* XXX was i + 2; use i + 4 for multibyte/read_mbchar */ + if (retval <= 0) /* XXX shouldn't happen */ + CHECK_ALRM; + + /* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */ + if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size) { char *t; t = (char *)xrealloc (input_string, size += 128); @@ -637,7 +643,8 @@ read_builtin (list) pass_next = 0; if (c == '\n') { - i--; /* back up over the CTLESC */ + if (skip_ctlesc == 0 && i > 0) + i--; /* back up over the CTLESC */ if (interactive && input_is_tty && raw == 0) print_ps2 = 1; } @@ -675,10 +682,30 @@ add_char: CHECK_ALRM; #if defined (HANDLE_MULTIBYTE) - if (nchars > 0 && MB_CUR_MAX > 1 && is_basic (c) == 0) + /* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */ + if (mb_cur_max > 1 && is_basic (c) == 0) { input_string[i] = '\0'; /* for simplicity and debugging */ - i += read_mbchar (fd, input_string, i, c, unbuffered_read); + /* If we got input from readline, grab the next multibyte char from + rlbuf. */ +# if defined (READLINE) + if (edit) + { + size_t clen; + clen = mbrlen (rlbuf + rlind - 1, mb_cur_max, (mbstate_t *)NULL); + /* We only deal with valid multibyte sequences longer than one + byte. If we get anything else, we leave the one character + copied and move on to the next. */ + if ((int)clen > 1) + { + memcpy (input_string+i, rlbuf+rlind, clen-1); + i += clen - 1; + rlind += clen - 1; + } + } + else +# endif + i += read_mbchar (fd, input_string, i, c, unbuffered_read); } #endif @@ -742,20 +769,20 @@ assign_vars: if (legal_identifier (arrayname) == 0) { sh_invalidid (arrayname); - xfree (input_string); + free (input_string); return (EXECUTION_FAILURE); } var = find_or_make_array_variable (arrayname, 1); if (var == 0) { - xfree (input_string); + free (input_string); return EXECUTION_FAILURE; /* readonly or noassign */ } if (assoc_p (var)) { builtin_error (_("%s: cannot convert associative to indexed array"), arrayname); - xfree (input_string); + free (input_string); return EXECUTION_FAILURE; /* existing associative array */ } else if (invisible_p (var)) @@ -772,7 +799,7 @@ assign_vars: assign_array_var_from_word_list (var, alist, 0); dispose_words (alist); } - xfree (input_string); + free (input_string); return (retval); } #endif /* ARRAY_VARS */ @@ -808,7 +835,7 @@ assign_vars: else VUNSETATTR (var, att_invisible); - xfree (input_string); + free (input_string); return (retval); } @@ -825,13 +852,13 @@ assign_vars: { varname = list->word->word; #if defined (ARRAY_VARS) - if (legal_identifier (varname) == 0 && valid_array_reference (varname, 0) == 0) + if (legal_identifier (varname) == 0 && valid_array_reference (varname, assoc_expand_once) == 0) #else if (legal_identifier (varname) == 0) #endif { sh_invalidid (varname); - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -849,7 +876,7 @@ assign_vars: { t1 = dequote_string (t); var = bind_read_variable (varname, t1); - xfree (t1); + free (t1); } else var = bind_read_variable (varname, t ? t : ""); @@ -863,7 +890,7 @@ assign_vars: FREE (t); if (var == 0) { - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -873,13 +900,13 @@ assign_vars: /* Now assign the rest of the line to the last variable argument. */ #if defined (ARRAY_VARS) - if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) + if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, assoc_expand_once) == 0) #else if (legal_identifier (list->word->word) == 0) #endif { sh_invalidid (list->word->word); - xfree (orig_input_string); + free (orig_input_string); return (EXECUTION_FAILURE); } @@ -910,7 +937,7 @@ assign_vars: { t = dequote_string (input_string); var = bind_read_variable (list->word->word, t); - xfree (t); + free (t); } else var = bind_read_variable (list->word->word, input_string ? input_string : ""); @@ -924,7 +951,7 @@ assign_vars: retval = EXECUTION_FAILURE; FREE (tofree); - xfree (orig_input_string); + free (orig_input_string); return (retval); } @@ -936,10 +963,10 @@ bind_read_variable (name, value) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name, 0) == 0) + if (valid_array_reference (name, assoc_expand_once) == 0) v = bind_variable (name, value, 0); else - v = assign_array_element (name, value, 0); + v = assign_array_element (name, value, assoc_expand_once ? ASS_NOEXPAND : 0); #else /* !ARRAY_VARS */ v = bind_variable (name, value, 0); #endif /* !ARRAY_VARS */ @@ -973,12 +1000,15 @@ read_mbchar (fd, string, ind, ch, unbuffered) if (ret == (size_t)-2) { ps = ps_back; + /* We don't want to be interrupted during a multibyte char read */ - if (unbuffered) + if (unbuffered == 2) + r = zreadn (fd, &c, 1); + else if (unbuffered) r = zread (fd, &c, 1); else r = zreadc (fd, &c); - if (r < 0) + if (r <= 0) goto mbchar_return; mbchar[i++] = c; continue; @@ -1001,7 +1031,7 @@ static void ttyrestore (ttp) struct ttsave *ttp; { - ttsetattr (ttp->fd, ttp->attrs); + ttsetattr (ttp->fd, &(ttp->attrs)); tty_modified = 0; } diff --git a/builtins/return.def b/builtins/return.def index 4d9fef1d2..77e8d7c78 100644 --- a/builtins/return.def +++ b/builtins/return.def @@ -46,13 +46,10 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "common.h" #include "bashgetopt.h" -extern int last_command_exit_value; -extern int subshell_environment; -extern int return_catch_flag, return_catch_value; - /* If we are executing a user-defined function then exit with the value specified as an argument. if no argument is given, then the last exit status is used. */ diff --git a/builtins/set.def b/builtins/set.def index 8122361e3..3c25e3a25 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -35,6 +35,7 @@ $PRODUCES set.c #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" #include "../flags.h" #include "common.h" #include "bashgetopt.h" @@ -49,14 +50,6 @@ $PRODUCES set.c # include "../bashhist.h" #endif -extern int posixly_correct, ignoreeof, eof_encountered_limit; -#if defined (HISTORY) -extern int dont_save_function_defs; -#endif -#if defined (READLINE) -extern int no_line_editing; -#endif /* READLINE */ - $BUILTIN set $FUNCTION set_builtin $SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] @@ -859,7 +852,7 @@ unset_builtin (list) #if defined (ARRAY_VARS) unset_array = 0; - if (!unset_function && nameref == 0 && valid_array_reference (name, 0)) + if (!unset_function && nameref == 0 && valid_array_reference (name, assoc_expand_once)) /* XXX valid array reference second arg was 0 */ { t = strchr (name, '['); *t++ = '\0'; @@ -916,7 +909,7 @@ unset_builtin (list) if (var && unset_array) { /* Let unbind_array_element decide what to do with non-array vars */ - tem = unbind_array_element (var, t); + tem = unbind_array_element (var, t, assoc_expand_once); /* XXX new third arg */ if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0) { builtin_error (_("%s: not an array variable"), var->name); @@ -938,8 +931,8 @@ unset_builtin (list) if (valid_array_reference (nameref_cell (var), 0)) { tname = savestring (nameref_cell (var)); - if (var = array_variable_part (tname, &t, 0)) - tem = unbind_array_element (var, t); + if (var = array_variable_part (tname, 0, &t, (int *)0)) + tem = unbind_array_element (var, t, assoc_expand_once); /* XXX new third arg */ free (tname); } else diff --git a/builtins/setattr.def b/builtins/setattr.def index 8f29e11e8..916515f87 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -34,13 +34,11 @@ $PRODUCES setattr.c #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../flags.h" #include "common.h" #include "bashgetopt.h" -extern int posixly_correct; -extern int array_needs_making; -extern char *this_command_name; extern sh_builtin_func_t *this_shell_builtin; #ifdef ARRAY_VARS @@ -539,7 +537,7 @@ set_var_attribute (name, attribute, undo) int attribute, undo; { SHELL_VAR *var, *tv, *v, *refvar; - char *tvalue, *refname; + char *tvalue; if (undo) var = find_variable (name); diff --git a/builtins/shopt.def b/builtins/shopt.def index 2febb7eeb..9b88aa446 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -26,8 +26,8 @@ $SHORT_DOC shopt [-pqsu] [-o] [optname ...] Set and unset shell options. Change the setting of each shell option OPTNAME. Without any option -arguments, list all shell options with an indication of whether or not each -is set. +arguments, list each supplied OPTNAME, or all shell options if no +OPTNAMEs are given, with an indication of whether or not each is set. Options: -o restrict OPTNAMEs to those defined for use with `set -o' @@ -91,6 +91,8 @@ extern int glob_star; extern int glob_asciirange; extern int lastpipe_opt; extern int inherit_errexit; +extern int localvar_inherit; +extern int localvar_unset; #if defined (EXTENDED_GLOB) extern int extended_glob; @@ -110,18 +112,22 @@ extern int enable_hostname_completion __P((int)); extern int prog_completion_enabled; #endif -#if defined (RESTRICTED_SHELL) -extern char *shell_name; -#endif - #if defined (DEBUGGER) extern int debugging_mode; #endif +#if defined (ARRAY_VARS) +extern int assoc_expand_once; +extern int array_expand_once; +#endif + +#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) +extern int syslog_history; +#endif + static void shopt_error __P((char *)); static int set_shellopts_after_change __P((char *, int)); -static int shopt_enable_hostname_completion __P((char *, int)); static int set_compatibility_level __P((char *, int)); #if defined (RESTRICTED_SHELL) @@ -129,6 +135,7 @@ static int set_restricted_shell __P((char *, int)); #endif #if defined (READLINE) +static int shopt_enable_hostname_completion __P((char *, int)); static int shopt_set_complete_direxpand __P((char *, int)); #endif @@ -141,6 +148,7 @@ static int shopt_compat40; static int shopt_compat41; static int shopt_compat42; static int shopt_compat43; +static int shopt_compat44; typedef int shopt_set_func_t __P((char *, int)); @@ -153,6 +161,9 @@ static struct { shopt_set_func_t *set_func; } shopt_vars[] = { { "autocd", &autocd, (shopt_set_func_t *)NULL }, +#if defined (ARRAY_VARS) + { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL }, +#endif { "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL }, { "cdspell", &cdspelling, (shopt_set_func_t *)NULL }, { "checkhash", &check_hashed_filenames, (shopt_set_func_t *)NULL }, @@ -169,6 +180,7 @@ static struct { { "compat41", &shopt_compat41, set_compatibility_level }, { "compat42", &shopt_compat42, set_compatibility_level }, { "compat43", &shopt_compat43, set_compatibility_level }, + { "compat44", &shopt_compat44, set_compatibility_level }, #if defined (READLINE) { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, @@ -205,6 +217,10 @@ static struct { { "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL }, #if defined (HISTORY) { "lithist", &literal_history, (shopt_set_func_t *)NULL }, +#endif + { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL }, +#if 0 + { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL }, #endif { "login_shell", &shopt_login_shell, set_login_shell }, { "mailwarn", &mail_warning, (shopt_set_func_t *)NULL }, @@ -223,6 +239,9 @@ static struct { #endif { "shift_verbose", &print_shift_error, (shopt_set_func_t *)NULL }, { "sourcepath", &source_uses_path, (shopt_set_func_t *)NULL }, +#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT) + { "syslog_history", &syslog_history, (shopt_set_func_t *)NULL }, +#endif { "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL }, { (char *)0, (int *)0, (shopt_set_func_t *)NULL } }; @@ -345,6 +364,14 @@ reset_shopt_options () command_oriented_history = 1; #endif +#if defined (SYSLOG_HISTORY) +# if defined (SYSLOG_SHOPT) + syslog_history = SYSLOG_SHOPT; +# else + syslog_history = 1; +# endif /* SYSLOG_SHOPT */ +#endif + #if defined (READLINE) complete_fullquote = 1; force_fignore = 1; @@ -572,10 +599,13 @@ shopt_set_debug_mode (option_name, mode) #if defined (DEBUGGER) error_trace_mode = function_trace_mode = debugging_mode; set_shellopts (); + if (debugging_mode) + init_bash_argv (); #endif return (0); } +#if defined (READLINE) static int shopt_enable_hostname_completion (option_name, mode) char *option_name; @@ -583,6 +613,7 @@ shopt_enable_hostname_completion (option_name, mode) { return (enable_hostname_completion (mode)); } +#endif static int set_compatibility_level (option_name, mode) @@ -590,6 +621,7 @@ set_compatibility_level (option_name, mode) int mode; { int ind; + char *rhs; /* If we're setting something, redo some of the work we did above in toggle_shopt(). Unset everything and reset the appropriate option @@ -598,6 +630,7 @@ set_compatibility_level (option_name, mode) { shopt_compat31 = shopt_compat32 = 0; shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; ind = find_shopt (option_name); *shopt_vars[ind].value = mode; } @@ -615,9 +648,16 @@ set_compatibility_level (option_name, mode) shell_compatibility_level = 42; else if (shopt_compat43) shell_compatibility_level = 43; + else if (shopt_compat44) + shell_compatibility_level = 44; else shell_compatibility_level = DEFAULT_COMPAT_LEVEL; + /* Make sure the current compatibility level is reflected in BASH_COMPAT */ + rhs = itos (shell_compatibility_level); + bind_variable ("BASH_COMPAT", rhs, 0); + free (rhs); + return 0; } @@ -628,10 +668,13 @@ set_compatibility_opts () { shopt_compat31 = shopt_compat32 = 0; shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; + shopt_compat44 = 0; switch (shell_compatibility_level) { case DEFAULT_COMPAT_LEVEL: break; + case 44: + shopt_compat44 = 1; break; case 43: shopt_compat43 = 1; break; case 42: diff --git a/builtins/source.def b/builtins/source.def index b3df1f9fd..bdd197fd1 100644 --- a/builtins/source.def +++ b/builtins/source.def @@ -69,6 +69,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../flags.h" #include "../findcmd.h" #include "common.h" @@ -79,10 +80,6 @@ $END extern int errno; #endif /* !errno */ -extern int posixly_correct; -extern int last_command_exit_value; -extern int executing_command_builtin; - static void maybe_pop_dollar_vars __P((void)); /* If non-zero, `.' uses $PATH to look up the script to be sourced. */ @@ -169,12 +166,14 @@ source_builtin (list) } begin_unwind_frame ("source"); - add_unwind_protect ((Function *)xfree, filename); + add_unwind_protect (xfree, filename); if (list->next) { push_dollar_vars (); add_unwind_protect ((Function *)maybe_pop_dollar_vars, (char *)NULL); + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); /* Initialize BASH_ARGV and BASH_ARGC */ remember_args (list->next, 1); if (debugging_mode) push_args (list->next); /* Update BASH_ARGV and BASH_ARGC */ diff --git a/builtins/test.def b/builtins/test.def index d6c89bf9b..bd9a203b6 100644 --- a/builtins/test.def +++ b/builtins/test.def @@ -125,11 +125,10 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../test.h" #include "common.h" -extern char *this_command_name; - /* TEST/[ builtin. */ int test_builtin (list) diff --git a/builtins/trap.def b/builtins/trap.def index 57d9b5227..09846981f 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -97,8 +97,6 @@ static int display_traps __P((WORD_LIST *)); #define REVERT 1 /* Revert to this signals original value. */ #define IGNORE 2 /* Ignore this signal. */ -extern int posixly_correct, subshell_environment; - int trap_builtin (list) WORD_LIST *list; @@ -212,6 +210,9 @@ trap_builtin (list) was SIG_IGN? */ if (interactive) set_signal_handler (SIGINT, sigint_sighandler); + /* special cases for interactive == 0 */ + else if (interactive_shell && (sourcelevel||running_trap)) + set_signal_handler (SIGINT, sigint_sighandler); else set_signal_handler (SIGINT, termsig_sighandler); break; diff --git a/builtins/type.def b/builtins/type.def index 3187add22..699ecd200 100644 --- a/builtins/type.def +++ b/builtins/type.def @@ -64,6 +64,8 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../parser.h" +#include "../execute_cmd.h" #include "../findcmd.h" #include "../hashcmd.h" @@ -76,9 +78,6 @@ $END extern int find_reserved_word __P((char *)); -extern char *this_command_name; -extern int expand_aliases, posixly_correct; - /* For each word in LIST, find out what the shell is going to do with it as a simple command. i.e., which file would this shell use to execve, or if it is a builtin command, or an alias. Possible flag diff --git a/builtins/ulimit.def b/builtins/ulimit.def index 62def4f6f..9b88c8cb3 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -203,8 +203,6 @@ extern int errno; #define BLOCKSIZE(x) (((x) == POSIXBLK) ? (posixly_correct ? 512 : 1024) : (x)) -extern int posixly_correct; - static int _findlim __P((int)); static int ulimit_internal __P((int, char *, int, int)); diff --git a/builtins/wait.def b/builtins/wait.def index 974f959b7..5deb3735c 100644 --- a/builtins/wait.def +++ b/builtins/wait.def @@ -1,7 +1,7 @@ This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2015 Free Software Foundation, Inc. +Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -22,18 +22,21 @@ $BUILTIN wait $FUNCTION wait_builtin $DEPENDS_ON JOB_CONTROL $PRODUCES wait.c -$SHORT_DOC wait [-n] [id ...] +$SHORT_DOC wait [-fn] [id ...] Wait for job completion and return exit status. Waits for each process identified by an ID, which may be a process ID or a job specification, and reports its termination status. If ID is not given, waits for all currently active child processes, and the return -status is zero. If ID is a a job specification, waits for all processes +status is zero. If ID is a job specification, waits for all processes in that job's pipeline. If the -n option is supplied, waits for the next job to terminate and returns its exit status. +If the -f option is supplied, and job control is enabled, waits for the +specified ID to terminate, instead of waiting for it to change status. + Exit Status: Returns the status of the last ID; fails if ID is invalid or an invalid option is given. @@ -68,12 +71,12 @@ $END #include "../bashansi.h" #include "../shell.h" +#include "../execute_cmd.h" #include "../jobs.h" #include "common.h" #include "bashgetopt.h" extern int wait_signal_received; -extern int last_command_exit_signal; procenv_t wait_intr_buf; int wait_intr_flag; @@ -97,14 +100,14 @@ int wait_builtin (list) WORD_LIST *list; { - int status, code, opt, nflag; + int status, code, opt, nflag, wflags; volatile int old_interrupt_immediately; USE_VAR(list); - nflag = 0; + nflag = wflags = 0; reset_internal_getopt (); - while ((opt = internal_getopt (list, "n")) != -1) + while ((opt = internal_getopt (list, "nf")) != -1) { switch (opt) { @@ -112,6 +115,9 @@ wait_builtin (list) case 'n': nflag = 1; break; + case 'f': + wflags |= JWAIT_FORCE; + break; #endif CASE_HELPOPT; default: @@ -151,7 +157,7 @@ wait_builtin (list) #if defined (JOB_CONTROL) if (nflag) { - status = wait_for_any_job (); + status = wait_for_any_job (wflags); if (status < 0) status = 127; WAIT_RETURN (status); @@ -179,7 +185,7 @@ wait_builtin (list) if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value) { pid = (pid_t)pid_value; - status = wait_for_single_pid (pid, 1); + status = wait_for_single_pid (pid, wflags|JWAIT_PERROR); } else { @@ -209,7 +215,7 @@ wait_builtin (list) /* Job spec used. Wait for the last pid in the pipeline. */ UNBLOCK_CHILD (oset); - status = wait_for_job (job); + status = wait_for_job (job, wflags); } #endif /* JOB_CONTROL */ else diff --git a/command.h b/command.h index 3da5b77da..856264405 100644 --- a/command.h +++ b/command.h @@ -101,6 +101,8 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_ASSNGLOBAL 0x2000000 /* word is a global assignment to declare (declare/typeset -g) */ #define W_NOBRACE 0x4000000 /* Don't perform brace expansion */ #define W_COMPLETE 0x8000000 /* word is being expanded for completion */ +#define W_CHKLOCAL 0x10000000 /* check for local vars on assignment */ +#define W_NOASSNTILDE 0x20000000 /* don't do tilde expansion like an assignment statement */ /* Flags for the `pflags' argument to param_expand() and various parameter_brace_expand_xxx functions; also used for string_list_dollar_at */ @@ -352,6 +354,7 @@ typedef struct group_com { typedef struct subshell_com { int flags; + int line; COMMAND *command; } SUBSHELL_COM; diff --git a/config-top.h b/config-top.h index d89682e5b..a7008bcaf 100644 --- a/config-top.h +++ b/config-top.h @@ -53,7 +53,7 @@ /* Define DONT_REPORT_SIGTERM if you don't want to see `Terminates' message when a job exits due to SIGTERM, since that's the default signal sent by the kill builtin. */ -/* #define DONT_REPORT_SIGTERM */ +#define DONT_REPORT_SIGTERM /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins like `echo' and `printf' to report errors when output does not succeed @@ -66,6 +66,10 @@ "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." #endif +/* If you want to unconditionally set a value for PATH in every restricted + shell, set this. */ +/* #define RBASH_STATIC_PATH_VALUE "/rbin:/usr/rbin" */ + /* The value for PATH when invoking `command -p'. This is only used when the Posix.2 confstr () function, or CS_PATH define are not present. */ #ifndef STANDARD_UTILS_PATH @@ -120,10 +124,18 @@ # define OPENLOG_OPTS LOG_PID #endif +/* Define if you want syslogging history to be controllable at runtime via a + shell option; if defined, the value is the default for the syslog_history + shopt option */ +#if defined (SYSLOG_HISTORY) +/* #define SYSLOG_SHOPT 1 */ +#endif + /* Define if you want to include code in shell.c to support wordexp(3) */ /* #define WORDEXP_OPTION */ -/* Define as 1 if you want to enable code that implements multiple coprocs */ +/* Define as 1 if you want to enable code that implements multiple coprocs + executing simultaneously */ #ifndef MULTIPLE_COPROCS # define MULTIPLE_COPROCS 0 #endif @@ -160,3 +172,7 @@ /* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */ #define USE_MKTEMP #define USE_MKSTEMP + +/* Define to force the value of OLDPWD inherited from the environment to be a + directory */ +#define OLDPWD_CHECK_DIRECTORY 1 diff --git a/config.h.in b/config.h.in index a5ad9e729..1e4b71d1e 100644 --- a/config.h.in +++ b/config.h.in @@ -242,6 +242,9 @@ /* The number of bytes in a `long long', if we have one. */ #undef SIZEOF_LONG_LONG +/* The number of bytes in a `wchar_t', if supported */ +#undef SIZEOF_WCHAR_T + /* System paths */ #define DEFAULT_MAIL_DIRECTORY "/usr/spool/mail" @@ -449,6 +452,7 @@ #undef SYS_TIME_H_DEFINES_STRUCT_TIMESPEC #undef PTHREAD_H_DEFINES_STRUCT_TIMESPEC +#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC #undef TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC #undef HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC #undef HAVE_STRUCT_STAT_ST_ATIMENSEC @@ -605,6 +609,9 @@ /* Define if you have the fcntl function. */ #undef HAVE_FCNTL +/* Define if you have the fnmatch function. */ +#undef HAVE_FNMATCH + /* Define if you have the fpurge/__fpurge function. */ #undef HAVE_FPURGE #undef HAVE___FPURGE @@ -1126,6 +1133,8 @@ #undef GETCWD_BROKEN +#undef DEV_FD_STAT_BROKEN + /* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */ /* Define if you have the header file. */ diff --git a/configure b/configure index 60f86d649..f0db2db73 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 4.4, version 4.082. +# From configure.ac for Bash 5.0, version 4.091. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 4.4-release. +# Generated by GNU Autoconf 2.69 for bash 5.0-alpha. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.4-release' -PACKAGE_STRING='bash 4.4-release' +PACKAGE_VERSION='5.0-alpha' +PACKAGE_STRING='bash 5.0-alpha' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -802,6 +802,7 @@ enable_cond_command enable_cond_regexp enable_coprocesses enable_debugger +enable_dev_fd_stat_broken enable_direxpand_default enable_directory_stack enable_disabled_builtins @@ -1393,7 +1394,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 4.4-release to adapt to many kinds of systems. +\`configure' configures bash 5.0-alpha to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1458,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.4-release:";; + short | recursive ) echo "Configuration of bash 5.0-alpha:";; esac cat <<\_ACEOF @@ -1486,6 +1487,9 @@ Optional Features: --enable-coprocesses enable coprocess support and the coproc reserved word --enable-debugger enable support for bash debugger + --enable-dev-fd-stat-broken + enable this option if stat on /dev/fd/N and fstat on + file descriptor N don't return the same results --enable-direxpand-default enable the direxpand shell option by default --enable-directory-stack @@ -1562,7 +1566,7 @@ Some influential environment variables: CC_FOR_BUILD C compiler used when compiling binaries used only at build time CFLAGS_FOR_BUILD - Compliation options (CFLAGS) used when compiling binaries used + Compilation options (CFLAGS) used when compiling binaries used only at build time LDFLAGS_FOR_BUILD Linker options (LDFLAGS) used when compiling binaries used only @@ -1651,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.4-release +bash configure 5.0-alpha generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2360,7 +2364,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 4.4-release, which was +It was created by bash $as_me 5.0-alpha, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2645,6 +2649,7 @@ as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " sys/param.h" as_fn_append ac_header_list " sys/time.h" as_fn_append ac_func_list " alarm" +as_fn_append ac_func_list " sbrk" as_fn_append ac_func_list " fpurge" as_fn_append ac_func_list " __fpurge" as_fn_append ac_func_list " snprintf" @@ -2753,8 +2758,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" -BASHVERS=4.4 -RELSTATUS=release +BASHVERS=5.0 +RELSTATUS=alpha case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -2861,7 +2866,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) *-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins *-beos*) opt_bash_malloc=no ;; # they say it's suitable @@ -2978,6 +2983,7 @@ opt_extglob_default=no opt_dircomplete_expand_default=no opt_globascii_default=no opt_function_import=yes +opt_dev_fd_stat_broken=no opt_static_link=no opt_profiling=no @@ -3061,6 +3067,11 @@ if test "${enable_debugger+set}" = set; then : enableval=$enable_debugger; opt_debugger=$enableval fi +# Check whether --enable-dev-fd-stat-broken was given. +if test "${enable_dev_fd_stat_broken+set}" = set; then : + enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval +fi + # Check whether --enable-direxpand-default was given. if test "${enable_direxpand_default+set}" = set; then : enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval @@ -3326,6 +3337,10 @@ fi if test $opt_function_import = yes; then $as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h +fi +if test $opt_dev_fd_stat_broken = yes; then +$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h + fi if test $opt_memscramble = yes; then @@ -4896,6 +4911,9 @@ if test "x$cross_compiling" = "xyes"; then i[3456]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.cache + ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac @@ -4924,7 +4942,7 @@ fi if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -4940,7 +4958,7 @@ if test "$opt_static_link" = yes; then if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then STATIC_LD="-static" case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental esac fi @@ -4952,7 +4970,11 @@ fi if test "X$cross_compiling" = "Xno"; then CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi # CFLAGS set above to default value if not passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} @@ -5268,7 +5290,7 @@ if ${ac_cv_rl_version+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : - ac_cv_rl_version='6.3' + ac_cv_rl_version='7.0' else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5382,7 +5404,7 @@ fi case "$ac_cv_rl_version" in - 5*|6*|7*|8*|9*) ;; + 7*|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;} @@ -9804,7 +9826,7 @@ fi for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -10265,7 +10287,7 @@ else int main () { -int main() { long double r; char *foo, bar; r = strtold(foo, &bar);} +long double r; char *foo, bar; r = strtold(foo, &bar); ; return 0; } @@ -11445,6 +11467,40 @@ done LIBS="$OLDLIBS" fi +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 +$as_echo_n "checking size of wchar_t... " >&6; } +if ${ac_cv_sizeof_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_wchar_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (wchar_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_wchar_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 +$as_echo "$ac_cv_sizeof_wchar_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t +_ACEOF + + + if test "$opt_static_link" != yes; then @@ -14408,6 +14464,61 @@ fi + + + + + if test X$ac_cv_func_sbrk = Xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5 +$as_echo_n "checking for working sbrk... " >&6; } +if ${bash_cv_func_sbrk+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5 +$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;} + bash_cv_func_sbrk=yes + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main(int c, char **v) +{ + void *x; + + x = sbrk (4096); + exit ((x == (void *)-1) ? 1 : 0); +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + bash_cv_func_sbrk=yes +else + bash_cv_func_snprintf=sbrk +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5 +$as_echo "$bash_cv_func_sbrk" >&6; } + if test $bash_cv_func_sbrk = no; then + ac_cv_func_sbrk=no + fi + fi + if test $ac_cv_func_sbrk = no; then + +$as_echo "#define HAVE_SBRK 0" >>confdefs.h + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5 $as_echo_n "checking for the existence of strsignal... " >&6; } if ${bash_cv_have_strsignal+:} false; then : @@ -15201,12 +15312,6 @@ fi $as_echo_n "checking for presence of necessary job control definitions... " >&6; } if ${bash_cv_job_control_missing+:} false; then : $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&5 -$as_echo "$as_me: WARNING: cannot check job control if cross-compiling -- defaulting to missing" >&2;} - bash_cv_job_control_missing=missing - else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15220,51 +15325,54 @@ else #endif #include -/* Add more tests in here as appropriate. */ -main() -{ +/* add more tests in here as appropriate */ + /* signal type */ #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) -exit(1); +#error #endif /* signals and tty control. */ #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) -exit (1); +#error #endif /* process control */ #if !defined (WNOHANG) || !defined (WUNTRACED) -exit(1); +#error #endif /* Posix systems have tcgetpgrp and waitpid. */ #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) -exit(1); +#error #endif #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) -exit(1); +#error #endif /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) -exit(1); +#error #endif -exit(0); + +int +main () +{ + + ; + return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO"; then : bash_cv_job_control_missing=present else bash_cv_job_control_missing=missing -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5 $as_echo "$bash_cv_job_control_missing" >&6; } @@ -15976,9 +16084,7 @@ $as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; } if ${bash_cv_dev_stdin+:} false; then : $as_echo_n "(cached) " >&6 else - if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then - bash_cv_dev_stdin=present - elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then + if (exec test -r /dev/stdin < /dev/null) ; then bash_cv_dev_stdin=present else bash_cv_dev_stdin=absent @@ -16065,10 +16171,11 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[456789]*|[34]*) $as_echo "#define PGRP_PIPE 1" >>confdefs.h + 1.*|2.[0123]*) : ;; + *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; -*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; +*qnx[67]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; @@ -16124,6 +16231,9 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5 $as_echo "$SHOBJ_STATUS" >&6; } +else + SHOBJ_STATUS=unsupported + fi # try to create a directory tree if the source is elsewhere @@ -16194,7 +16304,7 @@ fi #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc" +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh" ac_config_commands="$ac_config_commands default" @@ -16705,7 +16815,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 4.4-release, which was +This file was extended by bash $as_me 5.0-alpha, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16771,7 +16881,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 4.4-release +bash config.status 5.0-alpha configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -16922,6 +17032,7 @@ do "examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;; "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;; + "support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff --git a/configure.ac b/configure.ac index ce4e9b607..d0ccffb46 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl -dnl Configure script for bash-4.4 +dnl Configure script for bash-5.0 dnl dnl report bugs to chet@po.cwru.edu dnl @@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 4.4, version 4.082])dnl +AC_REVISION([for Bash 5.0, version 4.091])dnl -define(bashvers, 4.4) -define(relstatus, release) +define(bashvers, 5.0) +define(relstatus, alpha) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) @@ -82,7 +82,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF *-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) *-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) *-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x +*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x *-machten4) opt_bash_malloc=no ;; # MachTen 4.x *-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins *-beos*) opt_bash_malloc=no ;; # they say it's suitable @@ -179,6 +179,7 @@ opt_extglob_default=no opt_dircomplete_expand_default=no opt_globascii_default=no opt_function_import=yes +opt_dev_fd_stat_broken=no dnl options that affect how bash is compiled and linked opt_static_link=no @@ -214,6 +215,7 @@ AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval) AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval) AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval) +AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval) AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval) AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval) AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval) @@ -246,7 +248,7 @@ AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash sta dnl So-called `precious' variables AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time]) -AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compliation options (CFLAGS) used when compiling binaries used only at build time]) +AC_ARG_VAR([CFLAGS_FOR_BUILD], [Compilation options (CFLAGS) used when compiling binaries used only at build time]) AC_ARG_VAR([LDFLAGS_FOR_BUILD], [Linker options (LDFLAGS) used when compiling binaries used only at build time]) AC_ARG_VAR([CPPFLAGS_FOR_BUILD], [C preprocessor options (CPPFLAGS) used when compiling binaries used only at build time]) @@ -347,6 +349,9 @@ fi if test $opt_function_import = yes; then AC_DEFINE(FUNCTION_IMPORT) fi +if test $opt_dev_fd_stat_broken = yes; then +AC_DEFINE(DEV_FD_STAT_BROKEN) +fi if test $opt_memscramble = yes; then AC_DEFINE(MEMSCRAMBLE) @@ -440,6 +445,9 @@ if test "x$cross_compiling" = "xyes"; then i[[3456]]86-*-beos*) cross_cache=${srcdir}/cross-build/x86-beos.cache ;; + *-qnx*) + cross_cache=${srcdir}/cross-build/qnx.cache + ;; *) echo "configure: cross-compiling for $host is not supported" >&2 ;; esac @@ -472,7 +480,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*) ;; + solaris2*|linux*) ;; *) opt_static_link=yes ;; esac DEBUG= MALLOC_DEBUG= @@ -488,7 +496,7 @@ if test "$opt_static_link" = yes; then if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then STATIC_LD="-static" case "$host_os" in - solaris2*) ;; + solaris2*|linux*) ;; *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental esac fi @@ -500,7 +508,11 @@ fi if test "X$cross_compiling" = "Xno"; then CC_FOR_BUILD=${CC_FOR_BUILD-'$(CC)'} CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} # XXX - should it be '$(CPPFLAGS)' - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + if test X"$opt_profiling" = Xyes; then + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(BASE_LDFLAGS)'} + else + LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} + fi # CFLAGS set above to default value if not passed in environment CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'} LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'} @@ -538,7 +550,7 @@ then RL_LIB_READLINE_VERSION case "$ac_cv_rl_version" in - 5*|6*|7*|8*|9*) ;; + 7*|8*|9*) ;; *) opt_with_installed_readline=no AC_MSG_WARN([installed readline library is too old to be linked with bash]) AC_MSG_WARN([using private bash version]) @@ -770,7 +782,7 @@ AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) dnl checks for system calls AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid) AC_REPLACE_FUNCS(rename) @@ -808,7 +820,7 @@ AC_CHECK_DECLS([strtold], [ AC_CACHE_VAL(bash_cv_strtold_broken, [AC_TRY_COMPILE( [#include ], - [int main() { long double r; char *foo, bar; r = strtold(foo, &bar);}], + [long double r; char *foo, bar; r = strtold(foo, &bar);], bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes, [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)]) ] @@ -980,6 +992,9 @@ BASH_STRUCT_WEXITSTATUS_OFFSET BASH_CHECK_TYPE_STRUCT_TIMESPEC BASH_STAT_TIME +dnl checks for system calls +BASH_FUNC_SBRK + dnl presence and behavior of C library functions BASH_FUNC_STRSIGNAL BASH_FUNC_OPENDIR_CHECK @@ -1093,9 +1108,10 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[[456789]]*|[[34]]*) AC_DEFINE(PGRP_PIPE) ;; + 1.*|2.[[0123]]*) : ;; + *) AC_DEFINE(PGRP_PIPE) ;; esac ;; -*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; +*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; powerux*) LOCAL_LIBS="-lgen" ;; cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; @@ -1151,6 +1167,9 @@ then AC_SUBST(SHOBJ_LIBS) AC_SUBST(SHOBJ_STATUS) AC_MSG_RESULT($SHOBJ_STATUS) +else + SHOBJ_STATUS=unsupported + AC_SUBST(SHOBJ_STATUS) fi # try to create a directory tree if the source is elsewhere @@ -1227,7 +1246,7 @@ AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ examples/loadables/Makefile examples/loadables/Makefile.inc \ examples/loadables/perl/Makefile \ - support/bash.pc], + support/bash.pc support/bashbug.sh], [ # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h diff --git a/configure.in b/configure.in deleted file mode 100644 index d7e09983c..000000000 --- a/configure.in +++ /dev/null @@ -1,1161 +0,0 @@ -dnl -dnl Configure script for bash-4.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-2011 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 . - -AC_REVISION([for Bash 4.2, version 4.037])dnl - -define(bashvers, 4.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.50) - -AC_CONFIG_SRCDIR(shell.h) -dnl where to find install.sh, config.sub, and config.guess -AC_CONFIG_AUX_DIR(./support) -AC_CONFIG_HEADERS(config.h) - -dnl checks for version info -BASHVERS=bashvers -RELSTATUS=relstatus - -dnl defaults for debug settings -case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; -*) DEBUG= MALLOC_DEBUG= ;; -esac - -dnl canonicalize the host and os so we can do some tricky things before -dnl parsing options -AC_CANONICAL_HOST - -dnl configure defaults -opt_bash_malloc=yes -opt_purify=no -opt_purecov=no -opt_afs=no -opt_curses=no -opt_with_installed_readline=no - -#htmldir= - -dnl some systems should be configured without the bash malloc by default -dnl and some need a special compiler or loader -dnl look in the NOTES file for more -case "${host_cpu}-${host_os}" in -alpha*-*) opt_bash_malloc=no ;; # alpha running osf/1 or linux -*[[Cc]]ray*-*) opt_bash_malloc=no ;; # Crays -*-osf1*) opt_bash_malloc=no ;; # other osf/1 machines -sparc-svr4*) opt_bash_malloc=no ;; # sparc SVR4, SVR4.2 -sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment -mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment -m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir -sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF -#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here -#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree -*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment -*-aix*) opt_bash_malloc=no ;; # AIX machines -*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep -*-macos*) opt_bash_malloc=no ;; # Apple MacOS X -*-rhapsody*) opt_bash_malloc=no ;; # Apple Rhapsody (MacOS X) -*-darwin*) opt_bash_malloc=no ;; # Apple Darwin (MacOS X) -*-dgux*) opt_bash_malloc=no ;; # DG/UX machines -*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX 6.x -*-machten4) opt_bash_malloc=no ;; # MachTen 4.x -*-bsdi2.1|*-bsdi3.?) opt_bash_malloc=no ; : ${CC:=shlicc2} ;; # for loadable builtins -*-beos*) opt_bash_malloc=no ;; # they say it's suitable -*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment -*-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft -esac - -# memory scrambling on free() -case "${host_os}" in -sco3.2v5*|sco3.2v4*) opt_memscramble=no ;; -*) opt_memscramble=yes ;; -esac - -dnl -dnl macros for the bash debugger -dnl -dnl AM_PATH_LISPDIR -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(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval) -AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval) - -if test "$opt_bash_malloc" = yes; then - MALLOC_TARGET=malloc - MALLOC_SRC=malloc.c - - MALLOC_LIB='-lmalloc' - MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' - MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' - MALLOC_DEP='$(MALLOC_LIBRARY)' - - AC_DEFINE(USING_BASH_MALLOC) -else - MALLOC_LIB= - MALLOC_LIBRARY= - MALLOC_LDFLAGS= - MALLOC_DEP= -fi - -if test "$opt_purify" = yes; then - PURIFY="purify " - AC_DEFINE(DISABLE_MALLOC_WRAPPERS) -else - PURIFY= -fi - -if test "$opt_purecov" = yes; then - PURIFY="${PURIFY}purecov" -fi - -if test "$opt_afs" = yes; then - AC_DEFINE(AFS) -fi - -if test "$opt_curses" = yes; then - prefer_curses=yes -fi - -if test -z "${DEBUGGER_START_FILE}"; then - DEBUGGER_START_FILE='${datadir}/bashdb/bashdb-main.inc' -fi - -dnl optional shell features in config.h.in -opt_minimal_config=no - -opt_job_control=yes -opt_alias=yes -opt_readline=yes -opt_history=yes -opt_bang_history=yes -opt_dirstack=yes -opt_restricted=yes -opt_process_subst=yes -opt_prompt_decoding=yes -opt_select=yes -opt_help=yes -opt_array_variables=yes -opt_dparen_arith=yes -opt_extended_glob=yes -opt_brace_expansion=yes -opt_disabled_builtins=no -opt_command_timing=yes -opt_xpg_echo=no -opt_strict_posix=no -opt_cond_command=yes -opt_cond_regexp=yes -opt_coproc=yes -opt_arith_for_command=yes -opt_net_redirs=yes -opt_progcomp=yes -opt_separate_help=no -opt_multibyte=yes -opt_debugger=yes -opt_single_longdoc_strings=yes -opt_casemod_attrs=yes -opt_casemod_expansions=yes -opt_extglob_default=no - -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) - -dnl a minimal configuration turns everything off, but features can be -dnl added individually -if test $opt_minimal_config = yes; then - opt_job_control=no opt_alias=no opt_readline=no - opt_history=no opt_bang_history=no opt_dirstack=no - opt_restricted=no opt_process_subst=no opt_prompt_decoding=no - opt_select=no opt_help=no opt_array_variables=no opt_dparen_arith=no - opt_brace_expansion=no opt_disabled_builtins=no opt_command_timing=no - opt_extended_glob=no opt_cond_command=no opt_arith_for_command=no - 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 -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(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(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) - -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) - -dnl opt_job_control is handled later, after BASH_JOB_CONTROL_MISSING runs - -dnl opt_readline and opt_history are handled later, because AC_PROG_CC needs -dnl to be run before we can check the version of an already-installed readline -dnl library - -if test $opt_alias = yes; then -AC_DEFINE(ALIAS) -fi -if test $opt_dirstack = yes; then -AC_DEFINE(PUSHD_AND_POPD) -fi -if test $opt_restricted = yes; then -AC_DEFINE(RESTRICTED_SHELL) -fi -if test $opt_process_subst = yes; then -AC_DEFINE(PROCESS_SUBSTITUTION) -fi -if test $opt_prompt_decoding = yes; then -AC_DEFINE(PROMPT_STRING_DECODE) -fi -if test $opt_select = yes; then -AC_DEFINE(SELECT_COMMAND) -fi -if test $opt_help = yes; then -AC_DEFINE(HELP_BUILTIN) -fi -if test $opt_array_variables = yes; then -AC_DEFINE(ARRAY_VARS) -fi -if test $opt_dparen_arith = yes; then -AC_DEFINE(DPAREN_ARITHMETIC) -fi -if test $opt_brace_expansion = yes; then -AC_DEFINE(BRACE_EXPANSION) -fi -if test $opt_disabled_builtins = yes; then -AC_DEFINE(DISABLED_BUILTINS) -fi -if test $opt_command_timing = yes; then -AC_DEFINE(COMMAND_TIMING) -fi -if test $opt_xpg_echo = yes ; then -AC_DEFINE(DEFAULT_ECHO_TO_XPG) -fi -if test $opt_strict_posix = yes; then -AC_DEFINE(STRICT_POSIX) -fi -if test $opt_extended_glob = yes ; then -AC_DEFINE(EXTENDED_GLOB) -fi -if test $opt_extglob_default = yes; then -AC_DEFINE(EXTGLOB_DEFAULT, 1) -else -AC_DEFINE(EXTGLOB_DEFAULT, 0) -fi -if test $opt_cond_command = yes ; then -AC_DEFINE(COND_COMMAND) -fi -if test $opt_cond_regexp = yes ; then -AC_DEFINE(COND_REGEXP) -fi -if test $opt_coproc = yes; then -AC_DEFINE(COPROCESS_SUPPORT) -fi -if test $opt_arith_for_command = yes; then -AC_DEFINE(ARITH_FOR_COMMAND) -fi -if test $opt_net_redirs = yes; then -AC_DEFINE(NETWORK_REDIRECTIONS) -fi -if test $opt_progcomp = yes; then -AC_DEFINE(PROGRAMMABLE_COMPLETION) -fi -if test $opt_multibyte = no; then -AC_DEFINE(NO_MULTIBYTE_SUPPORT) -fi -if test $opt_debugger = yes; then -AC_DEFINE(DEBUGGER) -fi -if test $opt_casemod_attrs = yes; then -AC_DEFINE(CASEMOD_ATTRS) -fi -if test $opt_casemod_expansions = yes; then -AC_DEFINE(CASEMOD_EXPANSIONS) -fi - -if test $opt_memscramble = yes; then -AC_DEFINE(MEMSCRAMBLE) -fi - -if test "$opt_minimal_config" = yes; then - TESTSCRIPT=run-minimal -else - TESTSCRIPT=run-all -fi - -HELPDIR= HELPDIRDEFINE= HELPINSTALL= -if test "$opt_separate_help" != no; then - if test "$opt_separate_help" = "yes" ; then - HELPDIR='${datadir}/bash' - else - HELPDIR=$opt_separate_help - fi - HELPDIRDEFINE='-H ${HELPDIR}' - HELPINSTALL='install-help' -fi -HELPSTRINGS= -if test "$opt_single_longdoc_strings" != "yes"; then - HELPSTRINGS='-S' -fi - -dnl now substitute in the values generated by arguments -AC_SUBST(TESTSCRIPT) -AC_SUBST(PURIFY) -AC_SUBST(MALLOC_TARGET) -AC_SUBST(MALLOC_SRC) - -AC_SUBST(MALLOC_LIB) -AC_SUBST(MALLOC_LIBRARY) -AC_SUBST(MALLOC_LDFLAGS) -AC_SUBST(MALLOC_DEP) - -AC_SUBST(htmldir) - -AC_SUBST(HELPDIR) -AC_SUBST(HELPDIRDEFINE) -AC_SUBST(HELPINSTALL) -AC_SUBST(HELPSTRINGS) - -echo "" -echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" -echo "" - -dnl compilation checks -dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a -dnl different environment -AC_PROG_CC - -dnl test for Unix variants -AC_ISC_POSIX -AC_MINIX - -AC_SYS_LARGEFILE - -dnl BEGIN changes for cross-building (currently cygwin, minGW, and -dnl (obsolete) BeOS) - -SIGNAMES_O= -SIGNAMES_H=lsignames.h - -dnl load up the cross-building cache file -- add more cases and cache -dnl files as necessary - -dnl Note that host and target machine are the same, and different than the -dnl build machine. -dnl Set SIGNAMES_H based on whether or not we're cross-compiling. - -CROSS_COMPILE= -if test "x$cross_compiling" = "xyes"; then - case "${host}" in - *-cygwin*) - cross_cache=${srcdir}/cross-build/cygwin32.cache - ;; - *-mingw*) - cross_cache=${srcdir}/cross-build/cygwin32.cache - ;; - i[[3456]]86-*-beos*) - cross_cache=${srcdir}/cross-build/x86-beos.cache - ;; - *) echo "configure: cross-compiling for $host is not supported" >&2 - ;; - esac - if test -n "${cross_cache}" && test -r "${cross_cache}"; then - echo "loading cross-build cache file ${cross_cache}" - . ${cross_cache} - fi - unset cross_cache - SIGNAMES_O='signames.o' - CROSS_COMPILE='-DCROSS_COMPILING' - AC_SUBST(CROSS_COMPILE) -fi -AC_SUBST(SIGNAMES_H) -AC_SUBST(SIGNAMES_O) - -if test -z "$CC_FOR_BUILD"; then - if test "x$cross_compiling" = "xno"; then - CC_FOR_BUILD='$(CC)' - else - CC_FOR_BUILD=gcc - fi -fi -AC_SUBST(CC_FOR_BUILD) - -dnl END changes for cross-building - -dnl We want these before the checks, so the checks can modify their values. -test -z "$CFLAGS" && CFLAGS=-g auto_cflags=1 - -dnl If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS. -test -n "$GCC" && test -n "$auto_cflags" && CFLAGS="$CFLAGS -O2" - -dnl handle options that alter how bash is compiled and linked -dnl these must come after the test for cc/gcc -if test "$opt_profiling" = "yes"; then - PROFILE_FLAGS=-pg - case "$host_os" in - solaris2*) ;; - *) opt_static_link=yes ;; - esac - DEBUG= MALLOC_DEBUG= -fi - -if test "$opt_static_link" = yes; then - # if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2 - if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then - STATIC_LD="-static" - case "$host_os" in - solaris2*) ;; - *) LDFLAGS="$LDFLAGS -static" ;; # XXX experimental - esac - fi -fi - -if test "X$cross_compiling" = "Xno"; then - CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"$CPPFLAGS"} - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'} -else - CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""} - LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""} -fi - -test -z "$CFLAGS_FOR_BUILD" && CFLAGS_FOR_BUILD="-g" - -AC_SUBST(CFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(LDFLAGS) -AC_SUBST(STATIC_LD) - -AC_SUBST(CFLAGS_FOR_BUILD) -AC_SUBST(CPPFLAGS_FOR_BUILD) -AC_SUBST(LDFLAGS_FOR_BUILD) - -AC_PROG_GCC_TRADITIONAL - -dnl BEGIN READLINE and HISTORY LIBRARY SECTION -dnl prepare to allow bash to be linked against an already-installed readline - -dnl first test that the readline version is new enough to link bash against -if test "$opt_readline" = yes && test "$opt_with_installed_readline" != "no" -then - # If the user specified --with-installed-readline=PREFIX and PREFIX - # is not `yes', set ac_cv_rl_prefix to PREFIX - test $opt_with_installed_readline != "yes" && ac_cv_rl_prefix=$opt_with_installed_readline - - RL_LIB_READLINE_VERSION - - case "$ac_cv_rl_version" in - 5*|6*|7*|8*|9*) ;; - *) opt_with_installed_readline=no - AC_MSG_WARN([installed readline library is too old to be linked with bash]) - AC_MSG_WARN([using private bash version]) - ;; - esac -fi - -TILDE_LIB=-ltilde -if test $opt_readline = yes; then - AC_DEFINE(READLINE) - if test "$opt_with_installed_readline" != "no" ; then - case "$opt_with_installed_readline" in - yes) RL_INCLUDE= ;; - *) case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; - esac - ;; - esac - READLINE_DEP= - READLINE_LIB=-lreadline - # section for OS versions that don't allow unresolved symbols - # to be compiled into dynamic libraries. - case "$host_os" in - cygwin*) TILDE_LIB= ;; - esac - else - RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' - READLINE_DEP='$(READLINE_LIBRARY)' - # section for OS versions that ship an older/broken version of - # readline as a standard dynamic library and don't allow a - # static version specified as -llibname to override the - # dynamic version - case "${host_os}" in - darwin[[89]]*|darwin10*) READLINE_LIB='${READLINE_LIBRARY}' ;; - *) READLINE_LIB=-lreadline ;; - esac - fi -else - RL_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' - READLINE_LIB= READLINE_DEP= -fi -if test $opt_history = yes || test $opt_bang_history = yes; then - if test $opt_history = yes; then - AC_DEFINE(HISTORY) - fi - if test $opt_bang_history = yes; then - AC_DEFINE(BANG_HISTORY) - fi - if test "$opt_with_installed_readline" != "no"; then - HIST_LIBDIR=$RL_LIBDIR - HISTORY_DEP= - HISTORY_LIB=-lhistory - case "$opt_with_installed_readline" in - yes) RL_INCLUDE= ;; - *) case "$RL_INCLUDEDIR" in - /usr/include) ;; - *) RL_INCLUDE='-I${RL_INCLUDEDIR}' ;; - esac - ;; - esac - else - HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' - HISTORY_DEP='$(HISTORY_LIBRARY)' - # section for OS versions that ship an older version of - # readline as a standard dynamic library and don't allow a - # static version specified as -llibname to override the - # dynamic version - case "${host_os}" in - darwin[[89]]*|darwin10*) HISTORY_LIB='${HISTORY_LIBRARY}' ;; - *) HISTORY_LIB=-lhistory ;; - esac - fi -else - HIST_LIBDIR='$(dot)/$(LIBSUBDIR)/readline' - HISTORY_LIB= HISTORY_DEP= -fi -AC_SUBST(READLINE_LIB) -AC_SUBST(READLINE_DEP) -AC_SUBST(RL_LIBDIR) -AC_SUBST(RL_INCLUDEDIR) -AC_SUBST(RL_INCLUDE) -AC_SUBST(HISTORY_LIB) -AC_SUBST(HISTORY_DEP) -AC_SUBST(HIST_LIBDIR) -AC_SUBST(TILDE_LIB) - -dnl END READLINE and HISTORY LIBRARY SECTION - -dnl programs needed by the build and install process -AC_PROG_INSTALL -AC_CHECK_PROG(AR, ar, , ar) -dnl Set default for ARFLAGS, since autoconf does not have a macro for it. -dnl This allows people to set it when running configure or make -test -n "$ARFLAGS" || ARFLAGS="cr" -AC_PROG_RANLIB -AC_PROG_YACC -AC_PROG_MAKE_SET - -case "$host_os" in -opennt*|interix*) MAKE_SHELL="$INTERIX_ROOT/bin/sh" ;; -*) MAKE_SHELL=/bin/sh ;; -esac -AC_SUBST(MAKE_SHELL) - -dnl this is similar to the expanded AC_PROG_RANLIB -if test x$SIZE = x; then - if test x$ac_tool_prefix = x; then - SIZE=size - else - SIZE=${ac_tool_prefix}size - save_IFS=$IFS ; IFS=: - size_found=0 - for dir in $PATH; do - if test -x $dir/$SIZE ; then - size_found=1 - break - fi - done - if test $size_found -eq 0; then - SIZE=: - fi - IFS=$save_IFS - fi -fi -AC_SUBST(SIZE) - -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_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]) - -dnl header files -AC_HEADER_DIRENT -AC_HEADER_TIME - -BASH_HEADER_INTTYPES - -AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stddef.h stdint.h netdb.h pwd.h grp.h strings.h regex.h \ - syslog.h ulimit.h) -AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \ - sys/resource.h sys/param.h sys/socket.h sys/stat.h \ - sys/time.h sys/times.h sys/types.h sys/wait.h) -AC_CHECK_HEADERS(netinet/in.h arpa/inet.h) - -dnl sys/ptem.h requires definitions from sys/stream.h on systems where it -dnl exists -AC_CHECK_HEADER(sys/ptem.h, , ,[[ -#if HAVE_SYS_STREAM_H -# include -#endif -]]) - -dnl special checks for libc functions -AC_FUNC_ALLOCA -AC_FUNC_GETPGRP -AC_FUNC_SETVBUF_REVERSED -AC_FUNC_VPRINTF -AC_FUNC_STRCOLL - -dnl if we're not using the bash malloc but require the C alloca, set things -dnl up to build a libmalloc.a containing only alloca.o - -if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; then - MALLOC_TARGET=alloca - MALLOC_SRC=alloca.c - - MALLOC_LIB='-lmalloc' - MALLOC_LIBRARY='$(ALLOC_LIBDIR)/libmalloc.a' - MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)' - MALLOC_DEP='$(MALLOC_LIBRARY)' -fi - -dnl if vprintf is not in libc, see if it's defined in stdio.h -if test "$ac_cv_func_vprintf" = no; then - AC_MSG_CHECKING(for declaration of vprintf in stdio.h) - AC_EGREP_HEADER([[int[ ]*vprintf[^a-zA-Z0-9]]],stdio.h,ac_cv_func_vprintf=yes) - AC_MSG_RESULT($ac_cv_func_vprintf) - if test $ac_cv_func_vprintf = yes; then - AC_DEFINE(HAVE_VPRINTF) - fi -fi - -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)) -AC_CHECK_FUNC(isinf, AC_DEFINE(HAVE_ISINF_IN_LIBC)) -AC_CHECK_FUNC(isnan, AC_DEFINE(HAVE_ISNAN_IN_LIBC)) - -dnl checks for missing libc functions -AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) - -dnl checks for system calls -AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ - setitimer tcgetpgrp uname ulimit waitpid) -AC_REPLACE_FUNCS(rename) - -dnl checks for c library functions -AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \ - getaddrinfo gethostbyname getservbyname getservent inet_aton \ - memmove pathconf putenv raise regcomp regexec \ - setenv setlinebuf setlocale setvbuf siginterrupt strchr \ - sysconf syslog tcgetattr times ttyname tzset unsetenv) - -AC_CHECK_FUNCS(vasprintf asprintf) -AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) -AC_CHECK_FUNCS(getpwent getpwnam getpwuid) -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(dprintf) -AC_REPLACE_FUNCS(strchrnul) - -AC_CHECK_DECLS([confstr]) -AC_CHECK_DECLS([printf]) -AC_CHECK_DECLS([sbrk]) -AC_CHECK_DECLS([setregid]) -AC_CHECK_DECLS([strcpy]) -AC_CHECK_DECLS([strsignal]) - -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 ], - [int main() { 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_MSG_RESULT($bash_cv_strtold_broken) - if test "$bash_cv_strtold_broken" = "yes" ; then - AC_DEFINE(STRTOLD_BROKEN) - 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_FUNC_MKTIME - -dnl -dnl Checks for lib/intl and related code (uses some of the output from -dnl AM_GNU_GETTEXT) -dnl - -AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h]) - -dnl AC_FUNC_MALLOC -AC_FUNC_MMAP -AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify dcgettext mempcpy \ - munmap stpcpy strcspn strdup]) - -INTL_DEP= INTL_INC= LIBINTL_H= -if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then - INTL_DEP='${INTL_LIBDIR}/libintl.a' - INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}' - LIBINTL_H='${INTL_BUILDDIR}/libintl.h' -fi -AC_SUBST(INTL_DEP) -AC_SUBST(INTL_INC) -AC_SUBST(LIBINTL_H) - -dnl -dnl End of checks needed by files in lib/intl -dnl - -BASH_CHECK_MULTIBYTE - -dnl checks for the dynamic loading library functions in libc and libdl -if test "$opt_static_link" != yes; then -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 -fi - -dnl libraries -dnl this is reportedly no longer necessary for irix[56].? -case "$host_os" in -irix4*) AC_CHECK_LIB(sun, getpwent) ;; -esac - -dnl check for getpeername in the socket library only if it's not in libc -if test "$ac_cv_func_getpeername" = no; then - BASH_CHECK_LIB_SOCKET -fi -dnl check for gethostbyname in socket libraries if it's not in libc -if test "$ac_cv_func_gethostbyname" = no; then - BASH_FUNC_GETHOSTBYNAME -fi - -dnl system types -AC_TYPE_GETGROUPS -AC_TYPE_OFF_T -AC_TYPE_MODE_T -AC_TYPE_UID_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_CHECK_TYPE(ssize_t, int) -AC_CHECK_TYPE(time_t, long) - -BASH_TYPE_LONG_LONG -BASH_TYPE_UNSIGNED_LONG_LONG - -AC_TYPE_SIGNAL -BASH_TYPE_SIG_ATOMIC_T - -AC_CHECK_SIZEOF(char, 1) -AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(int, 4) -AC_CHECK_SIZEOF(long, 4) -AC_CHECK_SIZEOF(char *, 4) -AC_CHECK_SIZEOF(double, 8) -AC_CHECK_SIZEOF([long long], 8) - -AC_CHECK_TYPE(u_int, [unsigned int]) -AC_CHECK_TYPE(u_long, [unsigned long]) - -BASH_TYPE_BITS16_T -BASH_TYPE_U_BITS16_T -BASH_TYPE_BITS32_T -BASH_TYPE_U_BITS32_T -BASH_TYPE_BITS64_T - -BASH_TYPE_PTRDIFF_T - -dnl structures -AC_HEADER_STAT - -dnl system services -AC_SYS_INTERPRETER -if test $ac_cv_sys_interpreter = yes; then -AC_DEFINE(HAVE_HASH_BANG_EXEC) -fi - -dnl Miscellaneous Bash tests -if test "$ac_cv_func_lstat" = "no"; then -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 - -dnl checking for the presence of certain library symbols -BASH_SYS_ERRLIST -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(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 ], int, HAVE_SOCKLEN_T) -fi -BASH_TYPE_RLIMIT - -AC_CHECK_SIZEOF(intmax_t, 8) - -dnl presence and contents of structures used by system calls -BASH_STRUCT_TERMIOS_LDISC -BASH_STRUCT_TERMIO_LDISC -BASH_STRUCT_DIRENT_D_INO -BASH_STRUCT_DIRENT_D_FILENO -BASH_STRUCT_DIRENT_D_NAMLEN -BASH_STRUCT_WINSIZE -BASH_STRUCT_TIMEVAL -AC_CHECK_MEMBERS([struct stat.st_blocks]) -AC_STRUCT_TM -AC_STRUCT_TIMEZONE -BASH_STRUCT_TIMEZONE - -BASH_STRUCT_WEXITSTATUS_OFFSET - -dnl presence and behavior of C library functions -BASH_FUNC_STRSIGNAL -BASH_FUNC_OPENDIR_CHECK -BASH_FUNC_ULIMIT_MAXFDS -BASH_FUNC_FPURGE -BASH_FUNC_GETENV -if test "$ac_cv_func_getcwd" = "yes"; then -BASH_FUNC_GETCWD -fi -BASH_FUNC_POSIX_SETJMP -BASH_FUNC_STRCOLL -BASH_FUNC_SNPRINTF -BASH_FUNC_VSNPRINTF - -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 - -if test "$ac_cv_func_putenv" = "yes"; then -BASH_FUNC_STD_PUTENV -else -AC_DEFINE(HAVE_STD_PUTENV) -fi -if test "$ac_cv_func_unsetenv" = "yes"; then -BASH_FUNC_STD_UNSETENV -else -AC_DEFINE(HAVE_STD_UNSETENV) -fi - -BASH_FUNC_PRINTF_A_FORMAT - -dnl presence and behavior of OS functions -BASH_SYS_REINSTALL_SIGHANDLERS -BASH_SYS_JOB_CONTROL_MISSING -BASH_SYS_NAMED_PIPES - -dnl presence of certain CPP defines -AC_HEADER_TIOCGWINSZ -BASH_HAVE_TIOCSTAT -BASH_HAVE_FIONREAD - -BASH_CHECK_WCONTINUED - -dnl miscellaneous -BASH_CHECK_SPEED_T -BASH_CHECK_GETPW_FUNCS -BASH_CHECK_RTSIGS -BASH_CHECK_SYS_SIGLIST - -dnl special checks -case "$host_os" in -hpux*) BASH_CHECK_KERNEL_RLIMIT ;; -esac - -if test "$opt_readline" = yes; then -dnl yuck -case "$host_os" in -aix*) prefer_curses=yes ;; -esac -BASH_CHECK_LIB_TERMCAP -fi -AC_SUBST(TERMCAP_LIB) -AC_SUBST(TERMCAP_DEP) - -BASH_CHECK_DEV_FD -BASH_CHECK_DEV_STDIN -BASH_SYS_DEFAULT_MAIL_DIR - -if test "$bash_cv_job_control_missing" = missing; then - opt_job_control=no -fi - -if test "$opt_job_control" = yes; then -AC_DEFINE(JOB_CONTROL) -JOBS_O=jobs.o -else -JOBS_O=nojobs.o -fi - -AC_SUBST(JOBS_O) - -dnl Defines that we want to propagate to the Makefiles in subdirectories, -dnl like glob and readline - -LOCAL_DEFS=-DSHELL - -dnl use this section to possibly define more cpp variables, specify local -dnl libraries, and specify any additional local cc or ld flags -dnl -dnl this should really go away someday - -case "${host_os}" in -sysv4.2*) AC_DEFINE(SVR4_2) - AC_DEFINE(SVR4) ;; -sysv4*) AC_DEFINE(SVR4) ;; -sysv5*) AC_DEFINE(SVR5) ;; -hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;; -hpux*) LOCAL_CFLAGS=-DHPUX ;; -dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;; -isc*) LOCAL_CFLAGS=-Disc386 ;; -rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;; -darwin*) LOCAL_CFLAGS=-DMACOSX ;; -sco3.2v5*) LOCAL_CFLAGS="-b elf -DWAITPID_BROKEN -DPATH_MAX=1024" ;; -sco3.2v4*) LOCAL_CFLAGS="-DMUST_UNBLOCK_CHLD -DPATH_MAX=1024" ;; -sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;; -sunos4*) LOCAL_CFLAGS=-DSunOS4 ;; -solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;; -solaris2.8*) LOCAL_CFLAGS=-DSOLARIS ;; -solaris2.9*) LOCAL_CFLAGS=-DSOLARIS ;; -solaris2.10*) LOCAL_CFLAGS=-DSOLARIS ;; -solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; -lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; -linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading - case "`uname -r`" in - 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;; - esac ;; -*qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; -*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; -powerux*) LOCAL_LIBS="-lgen" ;; -cygwin*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; -opennt*|interix*) LOCAL_CFLAGS="-DNO_MAIN_ENV_ARG -DBROKEN_DIRENT_D_INO -D_POSIX_SOURCE -D_ALL_SOURCE" ;; -esac - -dnl Stanza for OS/compiler pair-specific flags -case "${host_os}-${CC}" in -aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;; -aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;; -bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux -esac - -dnl FreeBSD-3.x can have either a.out or ELF -case "${host_os}" in -freebsd[[3-9]]*) - if test -x /usr/bin/objformat && test "`/usr/bin/objformat`" = "elf" ; then - LOCAL_LDFLAGS=-rdynamic # allow dynamic loading - fi ;; -freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading -dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading -esac - -case "$host_cpu" in -*cray*) LOCAL_CFLAGS="-DCRAY" ;; # shell var so config.h can use it -esac - -case "$host_cpu-$host_os" in -ibmrt-*bsd4*) LOCAL_CFLAGS="-ma -U__STDC__" ;; -esac - -case "$host_cpu-$host_vendor-$host_os" in -m88k-motorola-sysv3) LOCAL_CFLAGS=-DWAITPID_BROKEN ;; -mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;; -esac - -# -# Shared object configuration section. These values are generated by -# ${srcdir}/support/shobj-conf -# -if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf -then - AC_MSG_CHECKING(shared object configuration for loadable builtins) - eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"` - AC_SUBST(SHOBJ_CC) - AC_SUBST(SHOBJ_CFLAGS) - AC_SUBST(SHOBJ_LD) - AC_SUBST(SHOBJ_LDFLAGS) - AC_SUBST(SHOBJ_XLDFLAGS) - AC_SUBST(SHOBJ_LIBS) - AC_SUBST(SHOBJ_STATUS) - AC_MSG_RESULT($SHOBJ_STATUS) -fi - -# try to create a directory tree if the source is elsewhere -# this should be packaged into a script accessible via ${srcdir}/support -case "$srcdir" in -.) ;; -*) for d in doc tests support lib examples; do # dirs - test -d $d || mkdir $d - done - for ld in readline glob tilde malloc sh termcap; do # libdirs - test -d lib/$ld || mkdir lib/$ld - done - test -d examples/loadables || mkdir examples/loadables # loadable builtins - test -d examples/loadables/perl || mkdir examples/loadables/perl - ;; -esac - -BUILD_DIR=`pwd` -case "$BUILD_DIR" in -*\ *) BUILD_DIR=`echo "$BUILD_DIR" | sed 's: :\\\\ :g'` ;; -*) ;; -esac - -if test -z "$localedir"; then - localedir='${datarootdir}/locale' -fi -if test -z "$datarootdir"; then - datarootdir='${prefix}/share' -fi - -AC_SUBST(PROFILE_FLAGS) - -AC_SUBST(incdir) -AC_SUBST(BUILD_DIR) - -# Some versions of autoconf don't substitute these automatically -AC_SUBST(datarootdir) -AC_SUBST(localedir) - -AC_SUBST(YACC) -AC_SUBST(AR) -AC_SUBST(ARFLAGS) - -AC_SUBST(BASHVERS) -AC_SUBST(RELSTATUS) -AC_SUBST(DEBUG) -AC_SUBST(MALLOC_DEBUG) - -AC_SUBST(host_cpu) -AC_SUBST(host_vendor) -AC_SUBST(host_os) - -AC_SUBST(LOCAL_LIBS) -AC_SUBST(LOCAL_CFLAGS) -AC_SUBST(LOCAL_LDFLAGS) -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/perl/Makefile], -[ -# Makefile uses this timestamp file to record whether config.h is up to date. -echo timestamp > stamp-h -]) diff --git a/copy_cmd.c b/copy_cmd.c index 826e0c3a4..d2b5bc9c1 100644 --- a/copy_cmd.c +++ b/copy_cmd.c @@ -69,12 +69,20 @@ WORD_LIST * copy_word_list (list) WORD_LIST *list; { - WORD_LIST *new_list; + WORD_LIST *new_list, *tl; - for (new_list = (WORD_LIST *)NULL; list; list = list->next) - new_list = make_word_list (copy_word (list->word), new_list); + for (new_list = tl = (WORD_LIST *)NULL; list; list = list->next) + { + if (new_list == 0) + new_list = tl = make_word_list (copy_word (list->word), new_list); + else + { + tl->next = make_word_list (copy_word (list->word), (WORD_LIST *)NULL); + tl = tl->next; + } + } - return (REVERSE_LIST (new_list, WORD_LIST *)); + return (new_list); } static PATTERN_LIST * @@ -221,6 +229,7 @@ copy_subshell_command (com) new_subshell = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); new_subshell->command = copy_command (com->command); new_subshell->flags = com->flags; + new_subshell->line = com->line; return (new_subshell); } diff --git a/cross-build/qnx.cache b/cross-build/qnx.cache new file mode 100644 index 000000000..3f630fd85 --- /dev/null +++ b/cross-build/qnx.cache @@ -0,0 +1,66 @@ +bash_cv_decl_strtoimax=${bash_cv_decl_strtoimax=yes} +bash_cv_decl_strtol=${bash_cv_decl_strtol=yes} +bash_cv_decl_strtoll=${bash_cv_decl_strtoll=yes} +bash_cv_decl_strtoul=${bash_cv_decl_strtoul=yes} +bash_cv_decl_strtoull=${bash_cv_decl_strtoull=yes} +bash_cv_decl_strtoumax=${bash_cv_decl_strtoumax=yes} +bash_cv_decl_under_sys_siglist=${bash_cv_decl_under_sys_siglist=no} +bash_cv_dev_fd=${bash_cv_dev_fd=absent} +bash_cv_dev_stdin=${bash_cv_dev_stdin=present} +bash_cv_dirent_has_d_fileno=${bash_cv_dirent_has_d_fileno=no} +bash_cv_dirent_has_d_namlen=${bash_cv_dirent_has_d_namlen=no} +bash_cv_dirent_has_dino=${bash_cv_dirent_has_dino=yes} +bash_cv_dup2_broken=${bash_cv_dup2_broken=no} +bash_cv_fionread_in_ioctl=${bash_cv_fionread_in_ioctl=yes} +bash_cv_func_ctype_nonascii=${bash_cv_func_ctype_nonascii=no} +bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present} +bash_cv_func_snprintf=${bash_cv_func_snprintf=yes} +bash_cv_func_strcoll_broken=${bash_cv_func_strcoll_broken=no} +bash_cv_func_vsnprintf=${bash_cv_func_vsnprintf=yes} +bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes} +bash_cv_getenv_redef=${bash_cv_getenv_redef=yes} +bash_cv_getpw_declared=${bash_cv_getpw_declared=yes} +bash_cv_have_gethostbyname=${bash_cv_have_gethostbyname=no} +bash_cv_have_socklib=${bash_cv_have_socklib=no} +bash_cv_have_strsignal=${bash_cv_have_strsignal=yes} +bash_cv_job_control_missing=${bash_cv_job_control_missing=present} +bash_cv_langinfo_codeset=${bash_cv_langinfo_codeset=no} +bash_cv_mail_dir=${bash_cv_mail_dir=unknown} +bash_cv_must_reinstall_sighandlers=${bash_cv_must_reinstall_sighandlers=no} +bash_cv_opendir_not_robust=${bash_cv_opendir_not_robust=no} +bash_cv_pgrp_pipe=${bash_cv_pgrp_pipe=no} +bash_cv_printf_a_format=${bash_cv_printf_a_format=yes} +bash_cv_signal_vintage=${bash_cv_signal_vintage=posix} +bash_cv_speed_t_in_sys_types=${bash_cv_speed_t_in_sys_types=no} +bash_cv_std_putenv=${bash_cv_std_putenv=yes} +bash_cv_std_unsetenv=${bash_cv_std_unsetenv=yes} +bash_cv_strtold_broken=${bash_cv_strtold_broken=no} +bash_cv_struct_timeval=${bash_cv_struct_timeval=yes} +bash_cv_struct_timezone=${bash_cv_struct_timezone=yes} +bash_cv_struct_winsize_header=${bash_cv_struct_winsize_header=ioctl_h} +bash_cv_sys_errlist=${bash_cv_sys_errlist=no} +bash_cv_sys_named_pipes=${bash_cv_sys_named_pipes=present} +bash_cv_sys_siglist=${bash_cv_sys_siglist=yes} +bash_cv_sys_struct_timespec_in_time_h=${bash_cv_sys_struct_timespec_in_time_h=yes} +bash_cv_termcap_lib=${bash_cv_termcap_lib=libtermcap} +bash_cv_tiocstat_in_ioctl=${bash_cv_tiocstat_in_ioctl=no} +bash_cv_type_clock_t=${bash_cv_type_clock_t=yes} +bash_cv_type_intmax_t=${bash_cv_type_intmax_t=yes} +bash_cv_type_long_long=${bash_cv_type_long_long='long long'} +bash_cv_type_quad_t=${bash_cv_type_quad_t=no} +bash_cv_type_rlimit=${bash_cv_type_rlimit=rlim_t} +bash_cv_type_sig_atomic_t=${bash_cv_type_sig_atomic_t=yes} +bash_cv_type_sigset_t=${bash_cv_type_sigset_t=yes} +bash_cv_type_socklen_t=${bash_cv_type_socklen_t=yes} +bash_cv_type_uintmax_t=${bash_cv_type_uintmax_t=yes} +bash_cv_type_unsigned_long_long=${bash_cv_type_unsigned_long_long='unsigned long long'} +bash_cv_type_wchar_t=${bash_cv_type_wchar_t=yes} +bash_cv_type_wctype_t=${bash_cv_type_wctype_t=yes} +bash_cv_type_wint_t=${bash_cv_type_wint_t=yes} +bash_cv_ulimit_maxfds=${bash_cv_ulimit_maxfds=no} +bash_cv_under_sys_siglist=${bash_cv_under_sys_siglist=no} +bash_cv_unusable_rtsigs=${bash_cv_unusable_rtsigs=no} +bash_cv_void_sighandler=${bash_cv_void_sighandler=yes} +bash_cv_wcontinued_broken=${bash_cv_wcontinued_broken=no} +bash_cv_wcwidth_broken=${bash_cv_wcwidth_broken=no} +bash_cv_wexitstatus_offset=${bash_cv_wexitstatus_offset=8} diff --git a/doc/FAQ b/doc/FAQ index 87dbb2d02..e330270a9 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,7 +1,5 @@ This is the Bash FAQ, version 4.14, for Bash version 4.4. -[THIS FAQ 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 interpreter with advanced features for both interactive use and shell @@ -962,7 +960,7 @@ o `complete' and `compgen' now take a `-o value' option, which controls some directory names and suppress trailing spaces o A new loadable builtin, realpath, which canonicalizes and expands symlinks in pathname arguments. -o When `set' is called without options, it prints function defintions in a +o When `set' is called without options, it prints function definitions in a way that allows them to be reused as input. This affects `declare' and `declare -p' as well. This only happens when the shell is not in POSIX mode, since POSIX.2 forbids this behavior. @@ -2171,17 +2169,11 @@ You may also need Finally, you need to tell readline that you will be inputting and displaying eight-bit characters. You use readline variables to do -this. convert-meta says what to do if you read a character with its -eighth bit set. input-meta says whether to permit characters with the -eighth bit at all. output-meta determines how to display characters -with the eighth bit set: if on, they are output directly; if it is off, -such characters are displayed as a meta-prefixed escape sequence. - -These variables can be set in your .inputrc or using the bash +this. These variables can be set in your .inputrc or using the bash `bind' builtin. Here's an example using `bind': bash$ bind 'set convert-meta off' - bash$ bind 'set input-meta on' + bash$ bind 'set meta-flag on' bash$ bind 'set output-meta on' The `set' commands between the single quotes may also be placed @@ -2287,7 +2279,7 @@ The \w expansion gives the full pathname of the current directory, with a tilde (`~') substituted for the current value of $HOME. The \W expansion gives the basename of the current directory. To put the full pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: +substitution, use $PWD. Here are some examples: PS1='\w$ ' # current directory with tilde PS1='\W$ ' # basename of current directory @@ -2404,7 +2396,7 @@ a bash programmer's guide with a chapter on creating loadable builtins a better loadable interface to perl with access to the shell builtins and variables (contributions gratefully accepted) ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions + associated discipline functions Some of the new ksh93 pattern matching operators, like backreferencing H5) When will the next release appear? diff --git a/doc/bash.0 b/doc/bash.0 index 031be8a4f..bb2f7429a 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS bbaasshh [options] [command_string | file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN BBaasshh is an sshh-compatible command language interpreter that executes @@ -22,9 +22,9 @@ DDEESSCCRRIIPPTTIIOONN OOPPTTIIOONNSS All of the single-character shell options documented in the description - of the sseett builtin command can be used as options when the shell is - invoked. In addition, bbaasshh interprets the following options when it is - invoked: + of the sseett builtin command, including --oo, can be used as options when + the shell is invoked. In addition, bbaasshh interprets the following + options when it is invoked: --cc If the --cc option is present, then commands are read from the first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu- @@ -41,67 +41,68 @@ OOPPTTIIOONNSS --ss If the --ss option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be - set when invoking an interactive shell. - --DD A list of all double-quoted strings preceded by $$ is printed - on the standard output. These are the strings that are sub- + set when invoking an interactive shell or when reading input + through a pipe. + --DD A list of all double-quoted strings preceded by $$ is printed + on the standard output. These are the strings that are sub- ject to language translation when the current locale is not CC - or PPOOSSIIXX. This implies the --nn option; no commands will be + or PPOOSSIIXX. This implies the --nn option; no commands will be executed. [[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]] - _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the - sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If + _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the + sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If _s_h_o_p_t___o_p_t_i_o_n is present, --OO sets the value of that option; ++OO - unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and - values of the shell options accepted by sshhoopptt are printed on - the standard output. If the invocation option is ++OO, the + unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and + values of the shell options accepted by sshhoopptt are printed on + the standard output. If the invocation option is ++OO, the output is displayed in a format that may be reused as input. - ---- A ---- signals the end of options and disables further option - processing. Any arguments after the ---- are treated as file- + ---- A ---- signals the end of options and disables further option + processing. Any arguments after the ---- are treated as file- names and arguments. An argument of -- is equivalent to ----. - BBaasshh also interprets a number of multi-character options. These - options must appear on the command line before the single-character + BBaasshh also interprets a number of multi-character options. These + options must appear on the command line before the single-character options to be recognized. ----ddeebbuuggggeerr Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see the description + starts. Turns on extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). ----dduummpp--ppoo--ssttrriinnggss - Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- + Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por- table object) file format. ----dduummpp--ssttrriinnggss Equivalent to --DD. - ----hheellpp Display a usage message on standard output and exit success- + ----hheellpp Display a usage message on standard output and exit success- fully. ----iinniitt--ffiillee _f_i_l_e ----rrccffiillee _f_i_l_e Execute commands from _f_i_l_e instead of the standard personal ini- - tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see + tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINNVVOOCCAATTIIOONN below). ----llooggiinn Equivalent to --ll. ----nnooeeddiittiinngg - Do not use the GNU rreeaaddlliinnee library to read command lines when + Do not use the GNU rreeaaddlliinnee library to read command lines when the shell is interactive. ----nnoopprrooffiillee - Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or - any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, - _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these - files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN + Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or + any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e, + _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these + files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN below). ----nnoorrcc Do not read and execute the personal initialization file - _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by + _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by default if the shell is invoked as sshh. ----ppoossiixx - Change the behavior of bbaasshh where the default operation differs + Change the behavior of bbaasshh where the default operation differs from the POSIX standard to match the standard (_p_o_s_i_x _m_o_d_e). See - SSEEEE AALLSSOO below for a reference to a document that details how + SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. ----rreessttrriicctteedd @@ -111,115 +112,115 @@ OOPPTTIIOONNSS Equivalent to --vv. ----vveerrssiioonn - Show version information for this instance of bbaasshh on the stan- + Show version information for this instance of bbaasshh on the stan- dard output and exit successfully. AARRGGUUMMEENNTTSS If arguments remain after option processing, and neither the --cc nor the - --ss option has been supplied, the first argument is assumed to be the - name of a file containing shell commands. If bbaasshh is invoked in this - fashion, $$00 is set to the name of the file, and the positional parame- - ters are set to the remaining arguments. BBaasshh reads and executes com- - mands from this file, then exits. BBaasshh's exit status is the exit sta- - tus of the last command executed in the script. If no commands are - executed, the exit status is 0. An attempt is first made to open the + --ss option has been supplied, the first argument is assumed to be the + name of a file containing shell commands. If bbaasshh is invoked in this + fashion, $$00 is set to the name of the file, and the positional parame- + ters are set to the remaining arguments. BBaasshh reads and executes com- + mands from this file, then exits. BBaasshh's exit status is the exit sta- + tus of the last command executed in the script. If no commands are + executed, the exit status is 0. An attempt is first made to open the file in the current directory, and, if no file is found, then the shell searches the directories in PPAATTHH for the script. IINNVVOOCCAATTIIOONN - A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or + A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or one started with the ----llooggiinn option. - An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments + An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments (unless --ss is specified) and without the --cc option whose standard input and error are both connected to terminals (as determined by _i_s_a_t_t_y(3)), - or one started with the --ii option. PPSS11 is set and $$-- includes ii if - bbaasshh is interactive, allowing a shell script or a startup file to test + or one started with the --ii option. PPSS11 is set and $$-- includes ii if + bbaasshh is interactive, allowing a shell script or a startup file to test this state. - The following paragraphs describe how bbaasshh executes its startup files. - If any of the files exist but cannot be read, bbaasshh reports an error. - Tildes are expanded in filenames as described below under TTiillddee EExxppaann-- + The following paragraphs describe how bbaasshh executes its startup files. + If any of the files exist but cannot be read, bbaasshh reports an error. + Tildes are expanded in filenames as described below under TTiillddee EExxppaann-- ssiioonn in the EEXXPPAANNSSIIOONN section. - When bbaasshh is invoked as an interactive login shell, or as a non-inter- - active shell with the ----llooggiinn option, it first reads and executes com- - mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading + When bbaasshh is invoked as an interactive login shell, or as a non-inter- + active shell with the ----llooggiinn option, it first reads and executes com- + mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e, - in that order, and reads and executes commands from the first one that - exists and is readable. The ----nnoopprrooffiillee option may be used when the + in that order, and reads and executes commands from the first one that + exists and is readable. The ----nnoopprrooffiillee option may be used when the shell is started to inhibit this behavior. When an interactive login shell exits, or a non-interactive login shell - executes the eexxiitt builtin command, bbaasshh reads and executes commands + executes the eexxiitt builtin command, bbaasshh reads and executes commands from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists. - When an interactive shell that is not a login shell is started, bbaasshh - reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This - may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option - will force bbaasshh to read and execute commands from _f_i_l_e instead of + When an interactive shell that is not a login shell is started, bbaasshh + reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This + may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option + will force bbaasshh to read and execute commands from _f_i_l_e instead of _~_/_._b_a_s_h_r_c. - When bbaasshh is started non-interactively, to run a shell script, for + When bbaasshh is started non-interactively, to run a shell script, for example, it looks for the variable BBAASSHH__EENNVV in the environment, expands - its value if it appears there, and uses the expanded value as the name - of a file to read and execute. BBaasshh behaves as if the following com- + its value if it appears there, and uses the expanded value as the name + of a file to read and execute. BBaasshh behaves as if the following com- mand were executed: if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi - but the value of the PPAATTHH variable is not used to search for the file- + but the value of the PPAATTHH variable is not used to search for the file- name. - If bbaasshh is invoked with the name sshh, it tries to mimic the startup - behavior of historical versions of sshh as closely as possible, while - conforming to the POSIX standard as well. When invoked as an interac- - tive login shell, or a non-interactive shell with the ----llooggiinn option, - it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and - _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to - inhibit this behavior. When invoked as an interactive shell with the - name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is - defined, and uses the expanded value as the name of a file to read and + If bbaasshh is invoked with the name sshh, it tries to mimic the startup + behavior of historical versions of sshh as closely as possible, while + conforming to the POSIX standard as well. When invoked as an interac- + tive login shell, or a non-interactive shell with the ----llooggiinn option, + it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and + _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to + inhibit this behavior. When invoked as an interactive shell with the + name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is + defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as sshh does not attempt to read and exe- - cute commands from any other startup files, the ----rrccffiillee option has no - effect. A non-interactive shell invoked with the name sshh does not - attempt to read any other startup files. When invoked as sshh, bbaasshh + cute commands from any other startup files, the ----rrccffiillee option has no + effect. A non-interactive shell invoked with the name sshh does not + attempt to read any other startup files. When invoked as sshh, bbaasshh enters _p_o_s_i_x mode after the startup files are read. - When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line + When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line option, it follows the POSIX standard for startup files. In this mode, - interactive shells expand the EENNVV variable and commands are read and - executed from the file whose name is the expanded value. No other + interactive shells expand the EENNVV variable and commands are read and + executed from the file whose name is the expanded value. No other startup files are read. BBaasshh attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell - daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- - mines it is being run in this fashion, it reads and executes commands - from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do - this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this - behavior, and the ----rrccffiillee option may be used to force another file to - be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with + daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter- + mines it is being run in this fashion, it reads and executes commands + from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do + this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this + behavior, and the ----rrccffiillee option may be used to force another file to + be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with those options or allow them to be specified. If the shell is started with the effective user (group) id not equal to the real user (group) id, and the --pp option is not supplied, no startup files are read, shell functions are not inherited from the environment, - the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they - appear in the environment, are ignored, and the effective user id is - set to the real user id. If the --pp option is supplied at invocation, - the startup behavior is the same, but the effective user id is not + the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + appear in the environment, are ignored, and the effective user id is + set to the real user id. If the --pp option is supplied at invocation, + the startup behavior is the same, but the effective user id is not reset. DDEEFFIINNIITTIIOONNSS - The following definitions are used throughout the rest of this docu- + The following definitions are used throughout the rest of this docu- ment. bbllaannkk A space or tab. - wwoorrdd A sequence of characters considered as a single unit by the + wwoorrdd A sequence of characters considered as a single unit by the shell. Also known as a ttookkeenn. - nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- - scores, and beginning with an alphabetic character or an under- + nnaammee A _w_o_r_d consisting only of alphanumeric characters and under- + scores, and beginning with an alphabetic character or an under- score. Also referred to as an iiddeennttiiffiieerr. mmeettaacchhaarraacctteerr - A character that, when unquoted, separates words. One of the + A character that, when unquoted, separates words. One of the following: || && ;; (( )) << >> ssppaaccee ttaabb nneewwlliinnee ccoonnttrrooll ooppeerraattoorr @@ -230,63 +231,66 @@ DDEEFFIINNIITTIIOONNSS RREESSEERRVVEEDD WWOORRDDSS _R_e_s_e_r_v_e_d _w_o_r_d_s are words that have a special meaning to the shell. The following words are recognized as reserved when unquoted and either the - first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third + first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third word of a ccaassee or ffoorr command: - !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt + !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] SSHHEELLLL GGRRAAMMMMAARR SSiimmppllee CCoommmmaannddss - A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- - lowed by bbllaannkk-separated words and redirections, and terminated by a + A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- + lowed by bbllaannkk-separated words and redirections, and terminated by a _c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed, - and is passed as argument zero. The remaining words are passed as + and is passed as argument zero. The remaining words are passed as arguments to the invoked command. - The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if + The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if the command is terminated by signal _n. PPiippeelliinneess - A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of + A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of the control operators || or ||&&. The format for a pipeline is: [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] - The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard - input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- + The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard + input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, - _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- - nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand - for 22>>&&11 ||. This implicit redirection of the standard error to the - standard output is performed after any redirections specified by the + _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con- + nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the + standard output is performed after any redirections specified by the command. The return status of a pipeline is the exit status of the last command, - unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the - pipeline's return status is the value of the last (rightmost) command - to exit with a non-zero status, or zero if all commands exit success- + unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the + pipeline's return status is the value of the last (rightmost) command + to exit with a non-zero status, or zero if all commands exit success- fully. If the reserved word !! precedes a pipeline, the exit status of - that pipeline is the logical negation of the exit status as described - above. The shell waits for all commands in the pipeline to terminate + that pipeline is the logical negation of the exit status as described + above. The shell waits for all commands in the pipeline to terminate before returning a value. - If the ttiimmee reserved word precedes a pipeline, the elapsed as well as - user and system time consumed by its execution are reported when the - pipeline terminates. The --pp option changes the output format to that - specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- - ognize ttiimmee as a reserved word if the next token begins with a `-'. - The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies - how the timing information should be displayed; see the description of + If the ttiimmee reserved word precedes a pipeline, the elapsed as well as + user and system time consumed by its execution are reported when the + pipeline terminates. The --pp option changes the output format to that + specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec- + ognize ttiimmee as a reserved word if the next token begins with a `-'. + The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies + how the timing information should be displayed; see the description of TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below. When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In - this case, the shell displays the total user and system time consumed - by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to + this case, the shell displays the total user and system time consumed + by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to specify the format of the time information. - Each command in a pipeline is executed as a separate process (i.e., in - a subshell). + Each command in a pipeline is executed as a separate process (i.e., in + a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a + subshell environment. If the llaassttppiippee option is enabled using the + sshhoopptt builtin (see the description of sshhoopptt below), the last element of + a pipeline may be run by the shell process. LLiissttss A _l_i_s_t is a sequence of one or more pipelines separated by one of the @@ -313,13 +317,13 @@ SSHHEELLLL GGRRAAMMMMAARR _c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2 _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status - of zero. + of zero (success). An OR list has the form _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 - _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d_1 returns a non-zero exit + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns a non-zero exit status. The return status of AND and OR lists is the exit status of the last command executed in the list. @@ -453,24 +457,24 @@ SSHHEELLLL GGRRAAMMMMAARR ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc A ccaassee command first expands _w_o_r_d, and tries to match it against - each _p_a_t_t_e_r_n in turn, using the same matching rules as for path- - name expansion (see PPaatthhnnaammee EExxppaannssiioonn below). The _w_o_r_d is - expanded using tilde expansion, parameter and variable expan- - sion, arithmetic expansion, command substitution, process sub- - stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded - using tilde expansion, parameter and variable expansion, arith- - metic expansion, command substitution, and process substitution. - If the nnooccaasseemmaattcchh shell option is enabled, the match is per- - formed without regard to the case of alphabetic characters. - When a match is found, the corresponding _l_i_s_t is executed. If - the ;;;; operator is used, no subsequent matches are attempted - after the first pattern match. Using ;;&& in place of ;;;; causes - execution to continue with the _l_i_s_t associated with the next set - of patterns. Using ;;;;&& in place of ;;;; causes the shell to test - the next pattern list in the statement, if any, and execute any - associated _l_i_s_t on a successful match. The exit status is zero - if no pattern matches. Otherwise, it is the exit status of the - last command executed in _l_i_s_t. + each _p_a_t_t_e_r_n in turn, using the matching rules described under + PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is expanded using tilde expan- + sion, parameter and variable expansion, arithmetic expansion, + command substitution, process substitution and quote removal. + Each _p_a_t_t_e_r_n examined is expanded using tilde expansion, parame- + ter and variable expansion, arithmetic expansion, command sub- + stitution, and process substitution. If the nnooccaasseemmaattcchh shell + option is enabled, the match is performed without regard to the + case of alphabetic characters. When a match is found, the cor- + responding _l_i_s_t is executed. If the ;;;; operator is used, no + subsequent matches are attempted after the first pattern match. + Using ;;&& in place of ;;;; causes execution to continue with the + _l_i_s_t associated with the next set of patterns. Using ;;;;&& in + place of ;;;; causes the shell to test the next pattern list in + the statement, if any, and execute any associated _l_i_s_t on a suc- + cessful match. The exit status is zero if no pattern matches. + Otherwise, it is the exit status of the last command executed in + _l_i_s_t. iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn @@ -514,94 +518,95 @@ SSHHEELLLL GGRRAAMMMMAARR that file descriptor is assigned to _N_A_M_E[1]. This pipe is established before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below). The file descriptors can be utilized as arguments to shell - commands and redirections using standard word expansions. The file - descriptors are not available in subshells. The process ID of the + commands and redirections using standard word expansions. Other than + those created to execute command and process substitutions, the file + descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the - variable _N_A_M_E_PID. The wwaaiitt builtin command may be used to wait for + 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 + Since the coprocess is created as an asynchronous command, the ccoopprroocc + command always returns success. The return status of a coprocess is the exit status of _c_o_m_m_a_n_d. SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss - A shell function is an object that is called like a simple command and - executes a compound command with a new set of positional parameters. + A shell function is an object that is called like a simple command and + executes a compound command with a new set of positional parameters. Shell functions are declared as follows: _n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] ffuunnccttiioonn _n_a_m_e [()] _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] - This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn - is optional. If the ffuunnccttiioonn reserved word is supplied, the - 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_- + This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn + is optional. If the ffuunnccttiioonn reserved word is supplied, the + 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 _n_a_m_e is specified as the name - of a simple command. When in _p_o_s_i_x _m_o_d_e, _n_a_m_e 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. Any redirections + of a simple command. When in _p_o_s_i_x _m_o_d_e, _n_a_m_e 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. 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 + 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.) CCOOMMMMEENNTTSS In a non-interactive shell, or an interactive shell in which the iinntteerr-- - aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## causes that word and - all remaining characters on that line to be ignored. An interactive - shell without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow + aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## causes that word and + all remaining characters on that line to be ignored. An interactive + shell without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow comments. The iinntteerraaccttiivvee__ccoommmmeennttss option is on by default in interac- tive shells. QQUUOOTTIINNGG - _Q_u_o_t_i_n_g is used to remove the special meaning of certain characters or - words to the shell. Quoting can be used to disable special treatment + _Q_u_o_t_i_n_g is used to remove the special meaning of certain characters or + words to the shell. Quoting can be used to disable special treatment for special characters, to prevent reserved words from being recognized as such, and to prevent parameter expansion. - Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS has special + Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS 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 HHIISS-- + When the command history expansion facilities are being used (see HHIISS-- TTOORRYY EEXXPPAANNSSIIOONN below), the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, usually !!, must be quoted to prevent history expansion. - There are three quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single + There are three quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single quotes, and double quotes. - A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the + A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the literal value of the next character that follows, with the exception of - . If a \\ pair appears, and the backslash is not - itself quoted, the \\ is treated as a line continuation (that + . If a \\ pair appears, and the backslash is not + itself quoted, the \\ is treated as a line continuation (that is, it is removed from the input stream and effectively ignored). - Enclosing characters in single quotes preserves the literal value of + Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. - Enclosing characters in double quotes preserves the literal value of - all characters within the quotes, with the exception of $$, ``, \\, and, + Enclosing characters in double quotes preserves the literal value of + all characters within the quotes, with the exception of $$, ``, \\, and, when history expansion is enabled, !!. When the shell is in _p_o_s_i_x _m_o_d_e, - the !! has no special meaning within double quotes, even when history - expansion is enabled. The characters $$ and `` retain their special - meaning within double quotes. The backslash retains its special mean- - ing only when followed by one of the following characters: $$, ``, "", \\, - or <>. A double quote may be quoted within double quotes by - preceding it with a backslash. If enabled, history expansion will be - performed unless an !! appearing in double quotes is escaped using a + the !! has no special meaning within double quotes, even when history + expansion is enabled. The characters $$ and `` retain their special + meaning within double quotes. The backslash retains its special mean- + ing only when followed by one of the following characters: $$, ``, "", \\, + or <>. A double quote may be quoted within double quotes by + preceding it with a backslash. If enabled, history expansion will be + performed unless an !! appearing in double quotes is escaped using a backslash. The backslash preceding the !! is not removed. - The special parameters ** and @@ have special meaning when in double + 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 + _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: \\aa alert (bell) \\bb backspace @@ -616,199 +621,210 @@ QQUUOOTTIINNGG \\'' single quote \\"" double quote \\?? question mark - \\_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 + \\_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 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. If the - current locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the + the string to be translated according to the current locale. If the + current locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the string is translated and replaced, the replacement is double-quoted. 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, - eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). + 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, + 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 + 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 + 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 - expression and added to the variable's current value, which is also - evaluated. When += is applied to an array variable using compound + _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic + expression and added to the variable's current value, which is also + evaluated. When += is applied to an array variable using compound assignment (see AArrrraayyss below), the variable's value is not 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 - applied to a string-valued variable, _v_a_l_u_e is expanded and appended to + one greater than the array's maximum index (for indexed arrays) or + added as additional key-value pairs in an associative array. When + applied 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 + 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 attributes 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 + 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, + to rreeff, and changes to its attributes, are treated as references, assignments, 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, + 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 - parameter 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 + parameter 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 - parameter 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 + parameter 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. When + @@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$$@@" is equivalent to "$$11" - "$$22" ... If the double-quoted expansion occurs within a word, - the expansion of the first parameter is joined with the begin- - ning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. - When there are no positional parameters, "$$@@" and $$@@ expand to + "$$22" ... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the begin- + ning part of the original word, and the expansion of the last + parameter is joined with the last part of the original word. + When there are no positional parameters, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell itself (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- + $$ Expands to the process ID of the shell. In a () subshell, it + expands to the process ID of the current shell, not the sub- shell. - !! Expands to the process ID of the job most recently placed into - the background, whether executed as an asynchronous command or + !! Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). - 00 Expands to the name of the shell or shell script. This is set + 00 Expands to the name of the shell or shell script. This is set at shell initialization. If bbaasshh is invoked with a file of com- - mands, $$00 is set to the name of that file. If bbaasshh is started - with the --cc option, then $$00 is set to the first argument after - the string to be executed, if one is present. Otherwise, it is - set to the filename used to invoke bbaasshh, as given by argument + mands, $$00 is set to the name of that file. If bbaasshh is started + with the --cc option, then $$00 is set to the first argument after + the string to be executed, if one is present. Otherwise, it is + set to the filename used to invoke bbaasshh, as given by argument zero. - __ At shell startup, set to the absolute pathname used to invoke - the shell or shell script being executed as passed in the envi- - ronment or argument list. Subsequently, expands to the last - argument to the previous command, after expansion. Also set to - the full pathname used to invoke each command executed and + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous command, after expansion. Also set to + the full pathname used to invoke each command executed and placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- + ing mail, this parameter holds the name of the mail file cur- rently being checked. SShheellll VVaarriiaabblleess The following variables are set by the shell: - BBAASSHH Expands to the full filename used to invoke this instance of + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. BBAASSHHOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --ss option to the sshhoopptt + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --ss option to the sshhoopptt builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. BBAASSHHPPIIDD - Expands to the process ID of the current bbaasshh process. This - differs from $$$$ under certain circumstances, such as subshells - that do not require bbaasshh to be re-initialized. + Expands to the process ID of the current bbaasshh process. This + differs from $$$$ under certain circumstances, such as subshells + that do not require bbaasshh to be re-initialized. Assignments to + BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- + cial properties, even if it is subsequently reset. BBAASSHH__AALLIIAASSEESS - An associative array variable whose members correspond to the - internal list of aliases as maintained by the aalliiaass builtin. - Elements added to this array appear in the alias list; however, - unsetting array elements currently does not cause aliases to be + An associative array variable whose members correspond to the + internal list of aliases as maintained by the aalliiaass builtin. + Elements added to this array appear in the alias list; however, + unsetting array elements currently does not cause aliases to be removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses its special properties, even if it is subsequently reset. BBAASSHH__AARRGGCC - An array variable whose values are the number of parameters in + An array variable whose values are the number of parameters in each frame of the current bbaasshh execution call stack. The number - of parameters to the current subroutine (shell function or - script executed with .. or ssoouurrccee) is at the top of the stack. - When a subroutine is executed, the number of parameters passed + of parameters to the current subroutine (shell function or + script executed with .. or ssoouurrccee) is at the top of the stack. + When a subroutine is executed, the number of parameters passed is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in - extended debugging mode (see the description of the eexxttddeebbuugg - option to the sshhoopptt builtin below) + extended debugging mode (see the description of the eexxttddeebbuugg + option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the + shell has started to execute a script may result in inconsistent + values. BBAASSHH__AARRGGVV - An array variable containing all of the parameters in the cur- + An array variable containing all of the parameters in the cur- rent bbaasshh execution call stack. The final parameter of the last - subroutine call is at the top of the stack; the first parameter + subroutine call is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is exe- - cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The - shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see - the description of the eexxttddeebbuugg option to the sshhoopptt builtin - below) + cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The + shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see + the description of the eexxttddeebbuugg option to the sshhoopptt builtin + below). Setting eexxttddeebbuugg after the shell has started to execute + a script may result in inconsistent values. + BBAASSHH__AARRGGVV00 + When referenced, this variable expands to the name of the shell + or shell script (identical to $$00; see the description of special + parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value + assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it + loses its special properties, even if it is subsequently reset. BBAASSHH__CCMMDDSS An associative array variable whose members correspond to the internal hash table of commands as maintained by the hhaasshh @@ -918,71 +934,82 @@ PPAARRAAMMEETTEERRSS able will not change the current directory. If DDIIRRSSTTAACCKK is unset, it loses its special properties, even if it is subse- quently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- + EEPPOOCCHHRREEAALLTTIIMMEE + Each time this parameter is referenced, it expands to the number + of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating + point value with micro-second granularity. Assignments to + EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses + its special properties, even if it is subsequently reset. + EEPPOOCCHHSSEECCOONNDDSS + Each time this parameter is referenced, it expands to the number + of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to + EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses + its special properties, even if it is subsequently reset. + EEUUIIDD Expands to the effective user ID of the current user, initial- ized at shell startup. This variable is readonly. FFUUNNCCNNAAMMEE - An array variable containing the names of all shell functions + An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bot- - tom-most element (the one with the highest index) is "main". - This variable exists only when a shell function is executing. - Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, - it loses its special properties, even if it is subsequently + tom-most element (the one with the highest index) is "main". + This variable exists only when a shell function is executing. + Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, + it loses its special properties, even if it is subsequently reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For - instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For + instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the current call stack using this infor- mation. - GGRROOUUPPSS An array variable containing the list of groups of which the + GGRROOUUPPSS An array variable containing the list of groups of which the current user is a member. Assignments to GGRROOUUPPSS have no effect. - If GGRROOUUPPSS is unset, it loses its special properties, even if it + If GGRROOUUPPSS is unset, it loses its special properties, even if it is subsequently reset. HHIISSTTCCMMDD The history number, or index in the history list, of the current - command. If HHIISSTTCCMMDD is unset, it loses its special properties, + command. If HHIISSTTCCMMDD is unset, it loses its special properties, even if it is subsequently reset. HHOOSSTTNNAAMMEE Automatically set to the name of the current host. HHOOSSTTTTYYPPEE - Automatically set to a string that uniquely describes the type - of machine on which bbaasshh is executing. The default is system- + Automatically set to a string that uniquely describes the type + of machine on which bbaasshh is executing. The default is system- dependent. - LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a - decimal number representing the current sequential line number - (starting with 1) within a script or function. When not in a - script or function, the value substituted is not guaranteed to + LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a + decimal number representing the current sequential line number + (starting with 1) within a script or function. When not in a + script or function, the value substituted is not guaranteed to be meaningful. If LLIINNEENNOO is unset, it loses its special proper- ties, even if it is subsequently reset. MMAACCHHTTYYPPEE - Automatically set to a string that fully describes the system - type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- + Automatically set to a string that fully describes the system + type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text + An array variable (see AArrrraayyss below) created to hold the text read by the mmaappffiillee builtin when no variable name is supplied. OOLLDDPPWWDD The previous working directory as set by the ccdd command. - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss + OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- + OOSSTTYYPPEE Automatically set to a string that describes the operating sys- + tem on which bbaasshh is executing. The default is system-depen- dent. PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the processes in the most-recently-executed + An array variable (see AArrrraayyss below) containing a list of exit + status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). - PPPPIIDD The process ID of the shell's parent. This variable is read- + PPPPIIDD The process ID of the shell's parent. This variable is read- only. PPWWDD The current working directory as set by the ccdd command. RRAANNDDOOMM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RRAANNDDOOMM. If RRAANNDDOOMM is unset, - it loses its special properties, even if it is subsequently + it loses its special properties, even if it is subsequently reset. RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" @@ -990,295 +1017,295 @@ PPAARRAAMMEETTEERRSS RREEAADDLLIINNEE__PPOOIINNTT The position of the insertion point in the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to - SSEECCOONNDDSS, the value returned upon subsequent references is the - number of seconds since the assignment plus the value assigned. + Each time this parameter is referenced, the number of seconds + since shell invocation is returned. If a value is assigned to + SSEECCOONNDDSS, the value returned upon subsequent references is the + number of seconds since the assignment plus the value assigned. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. SSHHEELLLLOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --oo option to the sseett + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --oo option to the sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. UUIIDD Expands to the user ID of the current user, initialized at shell startup. This variable is readonly. - The following variables are used by the shell. In some cases, bbaasshh + The following variables are used by the shell. In some cases, bbaasshh assigns a default value to a variable; these cases are noted below. BBAASSHH__CCOOMMPPAATT - The value is used to set the shell's compatibility level. See - the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS for a description of the various compatibility levels - and their effects. The value may be a decimal number (e.g., - 4.2) or an integer (e.g., 42) corresponding to the desired com- - patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty - string, the compatibility level is set to the default for the - current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not + The value is used to set the shell's compatibility level. See + the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS for a description of the various compatibility levels + and their effects. The value may be a decimal number (e.g., + 4.2) or an integer (e.g., 42) corresponding to the desired com- + patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not one of the valid compatibility levels, the shell prints an error - message and sets the compatibility level to the default for the - current version. The valid compatibility levels correspond to - the compatibility options accepted by the sshhoopptt builtin + message and sets the compatibility level to the default for the + current version. The valid compatibility levels correspond to + the compatibility options accepted by the sshhoopptt builtin described below (for example, ccoommppaatt4422 means that 4.2 and 42 are valid values). The current version is also a valid value. BBAASSHH__EENNVV - If this parameter is set when bbaasshh is executing a shell script, - its value is interpreted as a filename containing commands to + If this parameter is set when bbaasshh is executing a shell script, + its value is interpreted as a filename containing commands to initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is - subjected to parameter expansion, command substitution, and - arithmetic expansion before being interpreted as a filename. + subjected to parameter expansion, command substitution, and + arithmetic expansion before being interpreted as a filename. PPAATTHH is not used to search for the resultant filename. BBAASSHH__XXTTRRAACCEEFFDD - If set to an integer corresponding to a valid file descriptor, - bbaasshh will write the trace output generated when _s_e_t _-_x is - enabled to that file descriptor. The file descriptor is closed - when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting - BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace - output to be sent to the standard error. Note that setting + If set to an integer corresponding to a valid file descriptor, + bbaasshh will write the trace output generated when _s_e_t _-_x is + enabled to that file descriptor. The file descriptor is closed + when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting + BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. - CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated - list of directories in which the shell looks for destination - directories specified by the ccdd command. A sample value is + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination + directories specified by the ccdd command. A sample value is ".:~:/usr". CCHHIILLDD__MMAAXX - Set the number of exited child status values for the shell to - remember. Bash will not allow this value to be decreased below - a POSIX-mandated minimum, and there is a maximum value (cur- - rently 8192) that this may not exceed. The minimum value is + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below + a POSIX-mandated minimum, and there is a maximum value (cur- + rently 8192) that this may not exceed. The minimum value is system-dependent. CCOOLLUUMMNNSS - Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + Used by the sseelleecctt compound command to determine the terminal + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. CCOOMMPPRREEPPLLYY An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each array element contains one possible completion. - EEMMAACCSS If bbaasshh finds this variable in the environment when the shell - starts with value "t", it assumes that the shell is running in + EEMMAACCSS If bbaasshh finds this variable in the environment when the shell + starts with value "t", it assumes that the shell is running in an Emacs shell buffer and disables line editing. - EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX + EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX mode. EEXXEECCIIGGNNOORREE - A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) - defining the list of filenames to be ignored by command search - using PPAATTHH. Files whose full pathnames match one of these pat- - terns are not considered executable files for the purposes of + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search + using PPAATTHH. Files whose full pathnames match one of these pat- + terns are not considered executable files for the purposes of completion and command execution via PPAATTHH lookup. This does not affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- - names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. - Use this variable to ignore shared library files that have the - executable bit set, but are not executable files. The pattern + names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. + Use this variable to ignore shared library files that have the + executable bit set, but are not executable files. The pattern matching honors the setting of the eexxttgglloobb shell option. FFCCEEDDIITT The default editor for the ffcc builtin command. FFIIGGNNOORREE - A colon-separated list of suffixes to ignore when performing + A colon-separated list of suffixes to ignore when performing filename completion (see RREEAADDLLIINNEE below). A filename whose suf- - fix matches one of the entries in FFIIGGNNOORREE is excluded from the + fix matches one of the entries in FFIIGGNNOORREE is excluded from the list of matched filenames. A sample value is ".o:~". FFUUNNCCNNEESSTT - If set to a numeric value greater than 0, defines a maximum - function nesting level. Function invocations that exceed this + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. GGLLOOBBIIGGNNOORREE - A colon-separated list of patterns defining the set of filenames - to be ignored by pathname expansion. If a filename matched by a - pathname expansion pattern also matches one of the patterns in - GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. + A colon-separated list of patterns defining the set of file + names to be ignored by pathname expansion. If a file name + matched by a pathname expansion pattern also matches one of the + patterns in GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. HHIISSTTCCOONNTTRROOLL - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not - saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines + A colon-separated list of values controlling how commands are + saved on the history list. If the list of values includes + _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not + saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines matching the previous history entry to not be saved. A value of _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line - to be removed from the history list before that line is saved. - Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is - unset, or does not include a valid value, all lines read by the + to be removed from the history list before that line is saved. + Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is + unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value - of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line - compound command are not tested, and are added to the history + of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history regardless of the value of HHIISSTTCCOONNTTRROOLL. HHIISSTTFFIILLEE The name of the file in which command history is saved (see HHIISS-- - TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, + TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, the command history is not saved when a shell exits. HHIISSTTFFIILLEESSIIZZEE The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, to contain no more than that number of - lines by removing the oldest entries. The history file is also - truncated to this size after writing it when a shell exits. If - the value is 0, the history file is truncated to zero size. - Non-numeric values and numeric values less than zero inhibit - truncation. The shell sets the default value to the value of + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of HHIISSTTSSIIZZEE after reading any startup files. HHIISSTTIIGGNNOORREE - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. Each pattern is - anchored at the beginning of the line and must match the com- - plete line (no implicit `**' is appended). Each pattern is - tested against the line after the checks specified by HHIISSTTCCOONN-- - TTRROOLL are applied. In addition to the normal shell pattern + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is + anchored at the beginning of the line and must match the com- + plete line (no implicit `**' is appended). Each pattern is + tested against the line after the checks specified by HHIISSTTCCOONN-- + TTRROOLL are applied. In addition to the normal shell pattern matching characters, `&&' matches the previous history line. `&&' - may be escaped using a backslash; the backslash is removed + may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the - history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern + history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern matching honors the setting of the eexxttgglloobb shell option. HHIISSTTSSIIZZEE - The number of commands to remember in the command history (see - HHIISSTTOORRYY below). If the value is 0, commands are not saved in + The number of commands to remember in the command history (see + HHIISSTTOORRYY below). If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every - command being saved on the history list (there is no limit). - The shell sets the default value to 500 after reading any + command being saved on the history list (there is no limit). + The shell sets the default value to 500 after reading any startup files. HHIISSTTTTIIMMEEFFOORRMMAATT - If this variable is set and not null, its value is used as a + If this variable is set and not null, its value is used as a format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated - with each history entry displayed by the hhiissttoorryy builtin. If - this variable is set, time stamps are written to the history - file so they may be preserved across shell sessions. This uses - the history comment character to distinguish timestamps from + with each history entry displayed by the hhiissttoorryy builtin. If + this variable is set, time stamps are written to the history + file so they may be preserved across shell sessions. This uses + the history comment character to distinguish timestamps from other history lines. HHOOMMEE The home directory of the current user; the default argument for the ccdd builtin command. The value of this variable is also used when performing tilde expansion. HHOOSSTTFFIILLEE - Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s + Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s that should be read when the shell needs to complete a hostname. - The list of possible hostname completions may be changed while - the shell is running; the next time hostname completion is - attempted after the value is changed, bbaasshh adds the contents of - the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has - no value, or does not name a readable file, bbaasshh attempts to - read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- + The list of possible hostname completions may be changed while + the shell is running; the next time hostname completion is + attempted after the value is changed, bbaasshh adds the contents of + the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has + no value, or does not name a readable file, bbaasshh attempts to + read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- tions. When HHOOSSTTFFIILLEE is unset, the hostname list is cleared. - IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting - after expansion and to split lines into words with the rreeaadd + IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting + after expansion and to split lines into words with the rreeaadd builtin command. The default value is ``''. IIGGNNOORREEEEOOFF Controls the action of an interactive shell on receipt of an EEOOFF character as the sole input. If set, the value is the number of - consecutive EEOOFF characters which must be typed as the first - characters on an input line before bbaasshh exits. If the variable - exists but does not have a numeric value, or has no value, the - default value is 10. If it does not exist, EEOOFF signifies the + consecutive EEOOFF characters which must be typed as the first + characters on an input line before bbaasshh exits. If the variable + exists but does not have a numeric value, or has no value, the + default value is 10. If it does not exist, EEOOFF signifies the end of input to the shell. IINNPPUUTTRRCC - The filename for the rreeaaddlliinnee startup file, overriding the + The filename for the rreeaaddlliinnee startup file, overriding the default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). - LLAANNGG Used to determine the locale category for any category not + LLAANNGG Used to determine the locale category for any category not specifically selected with a variable starting with LLCC__. - LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ + LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ variable specifying a locale category. LLCC__CCOOLLLLAATTEE - This variable determines the collation order used when sorting - the results of pathname expansion, and determines the behavior - of range expressions, equivalence classes, and collating + This variable determines the collation order used when sorting + the results of pathname expansion, and determines the behavior + of range expressions, equivalence classes, and collating sequences within pathname expansion and pattern matching. LLCC__CCTTYYPPEE - This variable determines the interpretation of characters and - the behavior of character classes within pathname expansion and + This variable determines the interpretation of characters and + the behavior of character classes within pathname expansion and pattern matching. LLCC__MMEESSSSAAGGEESS - This variable determines the locale used to translate double- + This variable determines the locale used to translate double- quoted strings preceded by a $$. LLCC__NNUUMMEERRIICC - This variable determines the locale category used for number + This variable determines the locale category used for number formatting. LLCC__TTIIMMEE - This variable determines the locale category used for data and + This variable determines the locale category used for data and time formatting. - LLIINNEESS Used by the sseelleecctt compound command to determine the column - length for printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + LLIINNEESS Used by the sseelleecctt compound command to determine the column + length for printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. - MMAAIILL If this parameter is set to a file or directory name and the - MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the - arrival of mail in the specified file or Maildir-format direc- + MMAAIILL If this parameter is set to a file or directory name and the + MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the + arrival of mail in the specified file or Maildir-format direc- tory. MMAAIILLCCHHEECCKK - Specifies how often (in seconds) bbaasshh checks for mail. The - default is 60 seconds. When it is time to check for mail, the - shell does so before displaying the primary prompt. If this - variable is unset, or set to a value that is not a number + Specifies how often (in seconds) bbaasshh checks for mail. The + default is 60 seconds. When it is time to check for mail, the + shell does so before displaying the primary prompt. If this + variable is unset, or set to a value that is not a number greater than or equal to zero, the shell disables mail checking. MMAAIILLPPAATTHH A colon-separated list of filenames to be checked for mail. The message to be printed when mail arrives in a particular file may - be specified by separating the filename from the message with a - `?'. When used in the text of the message, $$__ expands to the + be specified by separating the filename from the message with a + `?'. When used in the text of the message, $$__ expands to the name of the current mailfile. Example: MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' - BBaasshh can be configured to supply a default value for this vari- - able (there is no value by default), but the location of the + BBaasshh can be configured to supply a default value for this vari- + able (there is no value by default), but the location of the user mail files that it uses is system dependent (e.g., /var/mail/$$UUSSEERR). OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages generated by - the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a + the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a shell script is executed. - PPAATTHH The search path for commands. It is a colon-separated list of - directories in which the shell looks for commands (see CCOOMMMMAANNDD - EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the + PPAATTHH The search path for commands. It is a colon-separated list of + directories in which the shell looks for commands (see CCOOMMMMAANNDD + EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the value of PPAATTHH indicates the current directory. A null directory - name may appear as two adjacent colons, or as an initial or - trailing colon. The default path is system-dependent, and is + name may appear as two adjacent colons, or as an initial or + trailing colon. The default path is system-dependent, and is set by the administrator who installs bbaasshh. A common value is ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. PPOOSSIIXXLLYY__CCOORRRREECCTT - If this variable is in the environment when bbaasshh starts, the - shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if - the ----ppoossiixx invocation option had been supplied. If it is set - while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the + If this variable is in the environment when bbaasshh starts, the + shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if + the ----ppoossiixx invocation option had been supplied. If it is set + while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the command _s_e_t _-_o _p_o_s_i_x had been executed. PPRROOMMPPTT__CCOOMMMMAANNDD If set, the value is executed as a command prior to issuing each primary prompt. PPRROOMMPPTT__DDIIRRTTRRIIMM - If set to a number greater than zero, the value is used as the + If set to a number greater than zero, the value is used as the number of trailing directory components to retain when expanding - the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). + the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). Characters removed are replaced with an ellipsis. - PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and displayed by interactive shells after reading a command and + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and before the command is executed. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. - PPSS22 The value of this parameter is expanded as with PPSS11 and used as + PPSS22 The value of this parameter is expanded as with PPSS11 and used as the secondary prompt string. The default is ``>> ''. PPSS33 The value of this parameter is used as the prompt for the sseelleecctt command (see SSHHEELLLL GGRRAAMMMMAARR above). - PPSS44 The value of this parameter is expanded as with PPSS11 and the - value is printed before each command bbaasshh displays during an - execution trace. The first character of PPSS44 is replicated mul- - tiple times, as necessary, to indicate multiple levels of indi- - rection. The default is ``++ ''. + PPSS44 The value of this parameter is expanded as with PPSS11 and the + value is printed before each command bbaasshh displays during an + execution trace. The first character of the expanded value of + PPSS44 is replicated multiple times, as necessary, to indicate mul- + tiple levels of indirection. The default is ``++ ''. SSHHEELLLL The full pathname to the shell is kept in this environment vari- - able. If it is not set when the shell starts, bbaasshh assigns to + able. If it is not set when the shell starts, bbaasshh assigns to it the full pathname of the current user's login shell. TTIIMMEEFFOORRMMAATT - The value of this parameter is used as a format string specify- - ing how the timing information for pipelines prefixed with the - ttiimmee reserved word should be displayed. The %% character intro- - duces an escape sequence that is expanded to a time value or - other information. The escape sequences and their meanings are + The value of this parameter is used as a format string specify- + ing how the timing information for pipelines prefixed with the + ttiimmee reserved word should be displayed. The %% character intro- + duces an escape sequence that is expanded to a time value or + other information. The escape sequences and their meanings are as follows; the braces denote optional portions. %%%% A literal %%. %%[[_p]][[ll]]RR The elapsed time in seconds. @@ -1286,77 +1313,77 @@ PPAARRAAMMEETTEERRSS %%[[_p]][[ll]]SS The number of CPU seconds spent in system mode. %%PP The CPU percentage, computed as (%U + %S) / %R. - The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number + The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places - after the decimal point may be specified; values of _p greater - than 3 are changed to 3. If _p is not specified, the value 3 is + after the decimal point may be specified; values of _p greater + than 3 are changed to 3. If _p is not specified, the value 3 is used. - The optional ll specifies a longer format, including minutes, of - the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not + The optional ll specifies a longer format, including minutes, of + the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not the fraction is included. - If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, + If this variable is not set, bbaasshh acts as if it had the value + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the + TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the default timeout for the rreeaadd builtin. The sseelleecctt command termi- nates if input does not arrive after TTMMOOUUTT seconds when input is - coming from a terminal. In an interactive shell, the value is + coming from a terminal. In an interactive shell, the value is interpreted as the number of seconds to wait for a line of input after issuing the primary prompt. BBaasshh terminates after waiting - for that number of seconds if a complete line of input does not + for that number of seconds if a complete line of input does not arrive. - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which + TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which bbaasshh creates temporary files for the shell's use. aauuttoo__rreessuummee This variable controls how the shell interacts with the user and - job control. If this variable is set, single word simple com- + job control. If this variable is set, single word simple com- mands without redirections are treated as candidates for resump- tion of an existing stopped job. There is no ambiguity allowed; - if there is more than one job beginning with the string typed, - the job most recently accessed is selected. The _n_a_m_e of a - stopped job, in this context, is the command line used to start - it. If set to the value _e_x_a_c_t, the string supplied must match - the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the - string supplied needs to match a substring of the name of a - stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- - gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set - to any other value, the supplied string must be a prefix of a + if there is more than one job beginning with the string typed, + the job most recently accessed is selected. The _n_a_m_e of a + stopped job, in this context, is the command line used to start + it. If set to the value _e_x_a_c_t, the string supplied must match + the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the + string supplied needs to match a substring of the name of a + stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- + gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set + to any other value, the supplied string must be a prefix of a stopped job's name; this provides functionality analogous to the %%_s_t_r_i_n_g job identifier. hhiissttcchhaarrss - The two or three characters which control history expansion and + The two or three characters which control history expansion and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN below). The first character - is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals - the start of a history expansion, normally `!!'. The second - character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as - shorthand for re-running the previous command entered, substi- - tuting one string for another in the command. The default is - `^^'. The optional third character is the character which indi- - cates that the remainder of the line is a comment when found as - the first character of a word, normally `##'. The history com- + is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals + the start of a history expansion, normally `!!'. The second + character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as + shorthand for re-running the previous command entered, substi- + tuting one string for another in the command. The default is + `^^'. The optional third character is the character which indi- + cates that the remainder of the line is a comment when found as + the first character of a word, normally `##'. The history com- ment character causes history substitution to be skipped for the - remaining words on the line. It does not necessarily cause the + remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment. AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree builtin will - explicitly declare an array. There is no maximum limit on the size of - an array, nor any requirement that members be indexed or assigned con- - tiguously. Indexed arrays are referenced using integers (including + BBaasshh provides one-dimensional indexed and associative array variables. + Any variable may be used as an indexed array; the ddeeccllaarree builtin will + explicitly declare an array. There is no maximum limit on the size of + an array, nor any requirement that members be indexed or assigned con- + tiguously. Indexed arrays are referenced using integers (including arithmetic expressions) and are zero-based; associative arrays are ref- erenced using arbitrary strings. Unless otherwise noted, indexed array indices must be non-negative integers. - An indexed array is created automatically if any variable is assigned + An indexed array is created automatically if any variable is assigned to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as an arithmetic expression that must evaluate to a number. To explicitly - declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- - MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- + declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- + MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- _s_c_r_i_p_t is ignored. Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. @@ -1364,96 +1391,103 @@ PPAARRAAMMEETTEERRSS Attributes may be specified for an array variable using the ddeeccllaarree and rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - Arrays are assigned to using compound assignments of the form - _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- - _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + Arrays are assigned to using compound assignments of the form + _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but _s_t_r_i_n_g. When assigning to indexed arrays, if the optional brackets and - subscript are supplied, that index is assigned to; otherwise the index - of the element assigned is the last index assigned to by the statement + subscript are supplied, that index is assigned to; otherwise the index + of the element assigned is the last index assigned to by the statement plus one. Indexing starts at zero. When assigning to an associative array, the subscript is required. - This syntax is also accepted by the ddeeccllaarree builtin. Individual array - elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax - introduced above. When assigning to an indexed array, if _n_a_m_e is sub- - scripted by a negative number, that number is interpreted as relative - to one greater than the maximum index of _n_a_m_e, so negative indices + This syntax is also accepted by the ddeeccllaarree builtin. Individual array + elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax + introduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, so negative indices count back from the end of the array, and an index of -1 references the last element. - Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid conflicts with pathname expansion. If - _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These - subscripts differ only when the word appears within double quotes. If + _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These + subscripts differ only when the word appears within double quotes. If the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the - value of each array member separated by the first character of the IIFFSS + value of each array member separated by the first character of the IIFFSS special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- - arate word. When there are no array members, ${_n_a_m_e[@]} expands to - nothing. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part of - the original word, and the expansion of the last parameter is joined - with the last part of the original word. This is analogous to the - expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss - above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- - _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- - ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of - an indexed array evaluates to a number less than zero, it is inter- - preted as relative to one greater than the maximum index of the array, - so negative indices count back from the end of the array, and an index + arate word. When there are no array members, ${_n_a_m_e[@]} expands to + nothing. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part of + the original word, and the expansion of the last parameter is joined + with the last part of the original word. This is analogous to the + expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss + above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- + _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- + ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of + an indexed array evaluates to a number less than zero, it is inter- + preted as relative to one greater than the maximum index of the array, + so negative indices count back from the end of the array, and an index of -1 references the last element. Referencing an array variable without a subscript is equivalent to ref- - erencing the array with a subscript of 0. Any reference to a variable + erencing the array with a subscript of 0. Any reference to a variable using a valid subscript is legal, and bbaasshh will create an array if nec- essary. - An array variable is considered set if a subscript has been assigned a + An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. - It is possible to obtain the keys (indices) of an array as well as the - values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in array variable _n_a_m_e. The treatment when in double quotes is similar to the expansion of the special parameters _@ and _* within double quotes. - The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] - destroys the array element at index _s_u_b_s_c_r_i_p_t. Negative subscripts to - indexed arrays are interpreted as described above. Care must be taken - to avoid unwanted side effects caused by pathname expansion. uunnsseett - _n_a_m_e, where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t - is ** or @@, removes the entire array. - - The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative - array. If both options are supplied, --AA takes precedence. The rreeaadd - builtin accepts a --aa option to assign a list of words read from the + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] + destroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and + associative arrays. Negative subscripts to indexed arrays are inter- + preted as described above. Unsetting the last element of an array + variable does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an + array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the + entire array. + + When using a variable name with a subscript as an argument to a com- + mand, such as with uunnsseett, without using the word expansion syntax + described above, the argument is subject to pathname expansion. If + pathname expansion is not desired, the argument should be quoted. + + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to + specify an indexed array and a --AA option to specify an associative + array. If both options are supplied, --AA takes precedence. The rreeaadd + builtin accepts a --aa option to assign a list of words read from the standard input to an array. The sseett and ddeeccllaarree builtins display array values in a way that allows them to be reused as assignments. EEXXPPAANNSSIIOONN Expansion is performed on the command line after it has been split into - words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, - _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- + words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, + _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- _t_i_o_n, _a_r_i_t_h_m_e_t_i_c _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n. The order of expansions is: brace expansion; tilde expansion, parameter - and variable expansion, arithmetic expansion, and command substitution - (done in a left-to-right fashion); word splitting; and pathname expan- + and variable expansion, arithmetic expansion, and command substitution + (done in a left-to-right fashion); word splitting; and pathname expan- sion. On systems that can support it, there is an additional expansion avail- - able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as - tilde, parameter, variable, and arithmetic expansion and command sub- + able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as + tilde, parameter, variable, and arithmetic expansion and command sub- stitution. - After these expansions are performed, quote characters present in the - original word are removed unless they have been quoted themselves + After these expansions are performed, quote characters present in the + original word are removed unless they have been quoted themselves (_q_u_o_t_e _r_e_m_o_v_a_l). - Only brace expansion, word splitting, and pathname expansion can change - the number of words of the expansion; other expansions expand a single - word to a single word. The only exceptions to this are the expansions - of "$$@@" and "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS). + Only brace expansion, word splitting, and pathname expansion can + increase the number of words of the expansion; other expansions expand + a single word to a single word. The only exceptions to this are the + expansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and + $${{_n_a_m_e[[**]]}} as explained above (see PPAARRAAMMEETTEERRSS). BBrraaccee EExxppaannssiioonn _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings may be gener- @@ -1492,7 +1526,8 @@ EEXXPPAANNSSIIOONN expression. Any incorrectly formed brace expansion is left unchanged. A {{ or ,, may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expan- - sion, the string $${{ is not considered eligible for brace expansion. + sion, the string $${{ is not considered eligible for brace expansion, and + inhibits brace expansion until the closing }}. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1501,36 +1536,36 @@ EEXXPPAANNSSIIOONN or chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} - Brace expansion introduces a slight incompatibility with historical - versions of sshh. sshh does not treat opening or closing braces specially - when they appear as part of a word, and preserves them in the output. - BBaasshh removes braces from words as a consequence of brace expansion. - For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in - the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by - bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the + Brace expansion introduces a slight incompatibility with historical + versions of sshh. sshh does not treat opening or closing braces specially + when they appear as part of a word, and preserves them in the output. + BBaasshh removes braces from words as a consequence of brace expansion. + For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in + the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by + bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the ++BB option or disable brace expansion with the ++BB option to the sseett com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). TTiillddee EExxppaannssiioonn - If a word begins with an unquoted tilde character (`~~'), all of the - characters preceding the first unquoted slash (or all characters, if - there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. If none of - the characters in the tilde-prefix are quoted, the characters in the - tilde-prefix following the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. - If this login name is the null string, the tilde is replaced with the - value of the shell parameter HHOOMMEE. If HHOOMMEE is unset, the home direc- - tory of the user executing the shell is substituted instead. Other- - wise, the tilde-prefix is replaced with the home directory associated + If a word begins with an unquoted tilde character (`~~'), all of the + characters preceding the first unquoted slash (or all characters, if + there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. If none of + the characters in the tilde-prefix are quoted, the characters in the + tilde-prefix following the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. + If this login name is the null string, the tilde is replaced with the + value of the shell parameter HHOOMMEE. If HHOOMMEE is unset, the home direc- + tory of the user executing the shell is substituted instead. Other- + wise, the tilde-prefix is replaced with the home directory associated with the specified login name. - If the tilde-prefix is a `~+', the value of the shell variable PPWWDD + If the tilde-prefix is a `~+', the value of the shell variable PPWWDD replaces the tilde-prefix. If the tilde-prefix is a `~-', the value of - the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- - acters following the tilde in the tilde-prefix consist of a number _N, - optionally prefixed by a `+' or a `-', the tilde-prefix is replaced + the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- + acters following the tilde in the tilde-prefix consist of a number _N, + optionally prefixed by a `+' or a `-', the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed by the ddiirrss builtin invoked with the tilde-prefix as an argu- - ment. If the characters following the tilde in the tilde-prefix con- + ment. If the characters following the tilde in the tilde-prefix con- sist of a number without a leading `+' or `-', `+' is assumed. If the login name is invalid, or the tilde expansion fails, the word is @@ -1538,184 +1573,191 @@ EEXXPPAANNSSIIOONN Each variable assignment is checked for unquoted tilde-prefixes immedi- ately following a :: or the first ==. In these cases, tilde expansion is - also performed. Consequently, one may use filenames with tildes in - assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the + also performed. Consequently, one may use filenames with tildes in + assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. PPaarraammeetteerr EExxppaannssiioonn The `$$' character introduces parameter expansion, command substitution, - or arithmetic expansion. The parameter name or symbol to be expanded - may be enclosed in braces, which are optional but serve to protect the - variable to be expanded from characters immediately following it which + or arithmetic expansion. The parameter name or symbol to be expanded + may be enclosed in braces, which are optional but serve to protect the + variable to be expanded from characters immediately following it which could be interpreted as part of the name. - When braces are used, the matching ending brace is the first `}}' not - escaped by a backslash or within a quoted string, and not within an + When braces are used, the matching ending brace is the first `}}' not + escaped by a backslash or within a quoted string, and not within an embedded arithmetic expansion, command substitution, or parameter expansion. ${_p_a_r_a_m_e_t_e_r} - The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required - when _p_a_r_a_m_e_t_e_r is a positional parameter with more than one + The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required + when _p_a_r_a_m_e_t_e_r is a positional parameter with more than one digit, or when _p_a_r_a_m_e_t_e_r is followed by a character which is not to be interpreted as part of its name. The _p_a_r_a_m_e_t_e_r is a shell - parameter as described above PPAARRAAMMEETTEERRSS) or an array reference + parameter as described above PPAARRAAMMEETTEERRSS) or an array reference (AArrrraayyss). - If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and - _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of variable indirec- - tion. BBaasshh uses the value of the variable formed from the rest of - _p_a_r_a_m_e_t_e_r as the name of the variable; this variable is then expanded + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and + _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of variable indirec- + tion. BBaasshh uses the value of the variable formed from the rest of + _p_a_r_a_m_e_t_e_r as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the - value of _p_a_r_a_m_e_t_e_r itself. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. If - _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the variable refer- - enced by _p_a_r_a_m_e_t_e_r instead of performing the complete indirect expan- - sion. The exceptions to this are the expansions of ${!!_p_r_e_f_i_x**} and - ${!!_n_a_m_e[_@]} described below. The exclamation point must immediately - follow the left brace in order to introduce indirection. + value of _p_a_r_a_m_e_t_e_r itself. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The + value is subject to tilde expansion, parameter expansion, command sub- + stitution, and arithmetic expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this + expands to the name of the variable referenced by _p_a_r_a_m_e_t_e_r instead of + performing the complete indirect expansion. The exceptions to this are + the expansions of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The + exclamation point must immediately follow the left brace in order to + introduce indirection. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. - When not performing substring expansion, using the forms documented - below (e.g., ::--), bbaasshh tests for a parameter that is unset or null. - Omitting the colon results in a test only for a parameter that is + When not performing substring expansion, using the forms documented + below (e.g., ::--), bbaasshh tests for a parameter that is unset or null. + Omitting the colon results in a test only for a parameter that is unset. ${_p_a_r_a_m_e_t_e_r::--_w_o_r_d} - UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- - sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r + UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan- + sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::==_w_o_r_d} - AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the + AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expansion of _w_o_r_d is assigned to _p_a_r_a_m_e_t_e_r. The value of _p_a_r_a_m_- - _e_t_e_r is then substituted. Positional parameters and special + _e_t_e_r is then substituted. Positional parameters and special parameters may not be assigned to in this way. ${_p_a_r_a_m_e_t_e_r::??_w_o_r_d} - DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, - the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is - not present) is written to the standard error and the shell, if + DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset, + the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is + not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of _p_a_r_a_m_e_t_e_r is substituted. ${_p_a_r_a_m_e_t_e_r::++_w_o_r_d} - UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is + UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or unset, nothing is substituted, otherwise the expansion of _w_o_r_d is substituted. ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t} ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t::_l_e_n_g_t_h} - SSuubbssttrriinngg EExxppaannssiioonn. Expands to up to _l_e_n_g_t_h characters of the - value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_- + 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 + 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 + 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_r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it - is interpreted as an offset in characters from the end of the - value of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the - expansion is the characters between _o_f_f_s_e_t and that result. - Note that a negative offset must be separated from the colon by - at least one space to avoid being confused with the ::-- expan- + 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_r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it + is interpreted as an offset in characters from the end of the + value of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the + expansion is the characters between _o_f_f_s_e_t and that result. + Note that a negative offset must be separated from the colon by + at least one space to avoid being confused with the ::-- expan- sion. - If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters + 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- + 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 an indexed array name subscripted by @ or *, the - result is the _l_e_n_g_t_h members of the array beginning with - ${_p_a_r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to - one greater than the maximum index of the specified array. It - is an expansion error if _l_e_n_g_t_h evaluates to a number less than + 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 + Substring expansion applied to an associative array produces undefined results. - Substring indexing is zero-based unless the positional parame- - ters are used, in which case the indexing starts at 1 by - default. If _o_f_f_s_e_t is 0, and the positional parameters are + Substring indexing is zero-based unless the positional parame- + ters are used, in which case the indexing starts at 1 by + default. If _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is 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 - substituted is the number of positional parameters. If _p_a_r_a_m_e_- - _t_e_r is an array name subscripted by ** or @@, the value substi- - tuted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is - an indexed array name subscripted by a negative number, that - number is interpreted as relative to one greater than the maxi- - mum 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 ele- + PPaarraammeetteerr lleennggtthh. The length in characters of the value of + _p_a_r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value + substituted is the number of positional parameters. If _p_a_r_a_m_e_- + _t_e_r is an array name subscripted by ** or @@, the value substi- + tuted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is + an indexed array name subscripted by a negative number, that + number is interpreted as relative to one greater than the maxi- + mum 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 ele- ment. ${_p_a_r_a_m_e_t_e_r##_w_o_r_d} ${_p_a_r_a_m_e_t_e_r####_w_o_r_d} RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion. If the pattern matches - the beginning of the value of _p_a_r_a_m_e_t_e_r, then the result of the - expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest - matching pattern (the ``##'' case) or the longest matching pat- - tern (the ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the - pattern removal operation is applied to each positional parame- - ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- - _e_t_e_r is an array variable subscripted with @@ or **, the pattern - removal operation is applied to each member of the array in - turn, and the expansion is the resultant list. + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of + the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the + expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern + (the ``##'' case) or the longest matching pattern (the ``####'' + case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal + operation is applied to each positional parameter in turn, and + the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array + variable subscripted with @@ or **, the pattern removal operation + is applied to each member of the array in turn, and the expan- + sion is the resultant list. ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion. If the pattern matches - a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the - result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with - the shortest matching pattern (the ``%%'' case) or the longest - matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ - or **, the pattern removal operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the pattern removal operation is applied to each member of - the array in turn, and the expansion is the resultant list. + a pattern just as in pathname expansion, and matched against the + expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- + tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion + of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the + expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest + matching pattern (the ``%%'' case) or the longest matching pat- + tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the + pattern removal operation is applied to each positional parame- + ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_- + _e_t_e_r is an array variable subscripted with @@ or **, the pattern + removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and - the longest match of _p_a_t_t_e_r_n against its value is replaced with - _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with //, all matches of _p_a_t_t_e_r_n are - replaced with _s_t_r_i_n_g. Normally only the first match is - replaced. If _p_a_t_t_e_r_n begins with ##, it must match at the begin- - ning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n begins with - %%, it must match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. - If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted and the // fol- - lowing _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh shell option - is enabled, the match is performed without regard to the case of - alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, the substitution - operation is applied to each positional parameter in turn, and - the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array - variable subscripted with @@ or **, the substitution operation is - applied to each member of the array in turn, and the expansion - is the resultant list. + 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. ${_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} @@ -1750,7 +1792,7 @@ EEXXPPAANNSSIIOONN quoted in a format that can be reused as input. EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with backslash escape sequences expanded as with the - $$''......'' quoting mechansim. + $$''......'' 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). @@ -1763,8 +1805,8 @@ EEXXPPAANNSSIIOONN If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- tional parameter in turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the case modification operation is applied to each member of - the array in turn, and the expansion is the resultant list. + **, the operation is applied to each member of the array in turn, + and the expansion is the resultant list. The result of the expansion is subject to word splitting and pathname expansion as described below. @@ -1874,24 +1916,28 @@ EEXXPPAANNSSIIOONN regard to the case of alphabetic characters. When a pattern is used for pathname expansion, the character ````..'''' at the start of a name or immediately following a slash must be matched explicitly, unless the - shell option ddoottgglloobb is set. When matching a pathname, the slash char- - acter must always be matched explicitly. In other cases, the ````..'''' - character is not treated specially. See the description of sshhoopptt below - under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullll-- - gglloobb, ffaaiillgglloobb, and ddoottgglloobb shell options. - - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- - names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching filename - that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the - list of matches. If the nnooccaasseegglloobb option is set, the matching against - the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The - filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGGNNOORREE is set - and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the - effect of enabling the ddoottgglloobb shell option, so all other filenames - beginning with a ````..'''' will match. To get the old behavior of ignor- - ing filenames beginning with a ````..'''', make ````..**'''' one of the patterns - in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is - unset. The pattern matching honors the setting of the eexxttgglloobb shell + shell option ddoottgglloobb is set. The filenames ````..'''' and ````....'''' must + always be matched explicitly, even if ddoottgglloobb is set. In other cases, + the ````..'''' character is not treated specially. When matching a path- + name, the slash character must always be matched explicitly by a slash + in the pattern, but in other matching contexts it can be matched by a + special pattern character as described below under PPaatttteerrnn MMaattcchhiinngg. + See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a + description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and ddoottgglloobb shell + options. + + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file + names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file + name that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed + from the list of matches. If the nnooccaasseegglloobb option is set, the match- + ing against the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to + case. The filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGG-- + NNOORREE is set and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null + value has the effect of enabling the ddoottgglloobb shell option, so all other + filenames beginning with a ````..'''' will match. To get the old behavior + of ignoring filenames beginning with a ````..'''', make ````..**'''' one of the + patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE + is unset. The pattern matching honors the setting of the eexxttgglloobb shell option. PPaatttteerrnn MMaattcchhiinngg @@ -1963,6 +2009,12 @@ EEXXPPAANNSSIIOONN !!((_p_a_t_t_e_r_n_-_l_i_s_t)) Matches anything except one of the given patterns + Complicated extended pattern matching against long strings is slow, + especially when the patterns contain alternations and the strings con- + tain multiple matches. Using separate matches against shorter strings, + or using arrays of strings instead of a single long string, may be + faster. + QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- ters \\, '', and "" that did not result from one of the above expansions @@ -1984,7 +2036,9 @@ RREEDDIIRREECCTTIIOONN 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. + the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect- + ion persists beyond the scope of the command, allowing the shell pro- + grammer to manage the file descriptor himself. In the following descriptions, if the file descriptor number is omit- ted, and the first character of the redirection operator is <<, the re- @@ -2147,12 +2201,11 @@ RREEDDIIRREECCTTIIOONN [_n]<<<<<<_w_o_r_d - The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and - variable expansion, command substitution, arithmetic expansion, and - quote removal. Pathname expansion and word splitting are not per- - formed. The result is supplied as a single string, with a newline - appended, to the command on its standard input (or file descriptor _n if - _n is specified). + The _w_o_r_d undergoes tilde expansion, parameter and variable expansion, + command substitution, arithmetic expansion, and quote removal. Path- + name expansion and word splitting are not performed. The result is + supplied as a single string, with a newline appended, to the command on + its standard input (or file descriptor _n if _n is specified). DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss The redirection operator @@ -2160,22 +2213,22 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_w_o_r_d is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, the file descriptor denoted by _n is made to be a copy of - that file descriptor. If the digits in _w_o_r_d do not specify a file - descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- - ates to --, file descriptor _n is closed. If _n is not specified, the + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the standard input (file descriptor 0) is used. The operator [_n]>>&&_w_o_r_d - is used similarly to duplicate output file descriptors. If _n is not - specified, the standard output (file descriptor 1) is used. If the - digits in _w_o_r_d do not specify a file descriptor open for output, a re- - direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is - closed. As a special case, if _n is omitted, and _w_o_r_d does not expand - to one or more digits or --, the standard output and standard error are + is used similarly to duplicate output file descriptors. If _n is not + specified, the standard output (file descriptor 1) is used. If the + digits in _w_o_r_d do not specify a file descriptor open for output, a re- + direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is + closed. As a special case, if _n is omitted, and _w_o_r_d does not expand + to one or more digits or --, the standard output and standard error are redirected as described previously. MMoovviinngg FFiillee DDeessccrriippttoorrss @@ -2183,7 +2236,7 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -2191,7 +2244,7 @@ RREEDDIIRREECCTTIIOONN [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg @@ -2199,81 +2252,112 @@ RREEDDIIRREECCTTIIOONN [_n]<<>>_w_o_r_d - causes the file whose name is the expansion of _w_o_r_d to be opened for - both reading and writing on file descriptor _n, or on file descriptor 0 + causes the file whose name is the expansion of _w_o_r_d to be opened for + both reading and writing on file descriptor _n, or on file descriptor 0 if _n is not specified. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as - the first word of a simple command. The shell maintains a list of - aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin - commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each - simple command, if unquoted, is checked to see if it has an alias. If - so, that word is replaced by the text of the alias. The characters //, - $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters + _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as + the first word of a simple command. The shell maintains a list of + aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin + commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each + simple command, if unquoted, is checked to see if it has an alias. If + so, that word is replaced by the text of the alias. The characters //, + $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters listed above may not appear in an alias name. The replacement text may - contain any valid shell input, including shell metacharacters. The - first word of the replacement text is tested for aliases, but a word - that is identical to an alias being expanded is not expanded a second - time. This means that one may alias llss to llss --FF, for instance, and - bbaasshh does not try to recursively expand the replacement text. If the - last character of the alias value is a _b_l_a_n_k, then the next command + contain any valid shell input, including shell metacharacters. The + first word of the replacement text is tested for aliases, but a word + that is identical to an alias being expanded is not expanded a second + time. This means that one may alias llss to llss --FF, for instance, and + bbaasshh does not try to recursively expand the replacement text. If the + last character of the alias value is a _b_l_a_n_k, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the aalliiaass command, and removed with the uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS + There is no mechanism for using arguments in the replacement text. If + arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS below). - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of + Aliases are not expanded when the shell is not interactive, unless the + eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input + before executing any of the commands on that line. Aliases are + expanded when a command is read, not when it is executed. Therefore, + an alias definition appearing on the same line as another command does + not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- - mand. As a consequence, aliases defined in a function are not avail- - able until after that function is executed. To be safe, always put - alias definitions on a separate line, and do not use aalliiaass in compound + alias. This behavior is also an issue when functions are executed. + Aliases are expanded when a function definition is read, not when the + function is executed, because a function definition is itself a com- + mand. As a consequence, aliases defined in a function are not avail- + able until after that function is executed. To be safe, always put + alias definitions on a separate line, and do not use aalliiaass in compound commands. For almost every purpose, aliases are superseded by shell functions. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, + stores a series of commands for later execution. When the name of a + shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed - in the context of the current shell; no new process is created to - interpret them (contrast this with the execution of a shell script). - When a function is executed, the arguments to the function become the + in the context of the current shell; no new process is created to + interpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter ## is - updated to reflect the change. Special parameter 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 - between a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + All other aspects of the shell execution environment are identical + between a function and its caller with these exceptions: the DDEEBBUUGG and + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function may be declared with the llooccaall builtin + Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the - function and its caller. + function and its caller. If a variable is declared llooccaall, the vari- + able's visible scope is restricted to that function and its children + (including the functions it calls). Local variables "shadow" variables + with the same name declared at previous scopes. For instance, a local + variable declared in a function hides a global variable of the same + name: references and assignments refer to the local variable, leaving + the global variable unmodified. When the function returns, the global + variable is once again visible. + + The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility + within functions. With dynamic scoping, visible variables and their + values are a result of the sequence of function calls that caused exe- + cution to reach the current function. The value of a variable that a + function sees depends on its value within its caller, if any, whether + that caller is the "global" scope or another shell function. This is + also the value that a local variable declaration "shadows", and the + value that is restored when the function returns. + + For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, + and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from + within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow- + ing any global variable named _v_a_r. + + The uunnsseett builtin also acts using the same dynamic scope: if a variable + is local to the current scope, uunnsseett will unset it; otherwise the unset + will refer to the variable found in any calling scope as described + above. If a variable at the current local scope is unset, it will + remain so until it is reset in that scope or until the function + returns. Once the function returns, any instance of the variable at a + previous scope will become visible. If the unset acts on a variable at + a previous scope, any instance of a variable with that name that had + been shadowed will become visible. The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that @@ -2292,24 +2376,21 @@ FFUUNNCCTTIIOONNSS and line number, if the eexxttddeebbuugg shell option is enabled). Functions may be exported so that subshells automatically have them defined with the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell - functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- - dren. Care should be taken in cases where this may cause a problem. + 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- - tion invocations. By default, no limit is imposed on the number of + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of recursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands, 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- - lowing list of operators is grouped into levels of equal-precedence + 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 operators. The levels are listed in order of decreasing precedence. _i_d++++ _i_d---- @@ -2337,49 +2418,49 @@ 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. Constants with a leading 0 are interpreted as octal numbers. A leading - 0x or 0X denotes hexadecimal. Otherwise, numbers take the form - [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 - representing the arithmetic base, and _n is a number in that base. If - _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits - greater than 9 are represented by the lowercase letters, the uppercase + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 + representing the arithmetic base, and _n is a number in that base. If + _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits + greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If _b_a_s_e is less than or equal to 36, - lowercase and uppercase letters may be used interchangeably to repre- + lowercase and uppercase letters may be used interchangeably to repre- sent numbers between 10 and 35. - Operators are evaluated in order of precedence. Sub-expressions in - parentheses are evaluated first and may override the precedence rules + Operators are evaluated in order of precedence. Sub-expressions in + parentheses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. BBaasshh handles several filenames specially - when they are used in expressions. If the operating system on which - bbaasshh is running provides these special files, bash will use them; oth- - erwise it will emulate them internally with this behavior: If any _f_i_l_e - argument to one of the primaries is of the form _/_d_e_v_/_f_d_/_n, then file - descriptor _n is checked. If the _f_i_l_e argument to one of the primaries - is one of _/_d_e_v_/_s_t_d_i_n, _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. Expressions are formed from the following + unary or binary primaries. BBaasshh handles several filenames specially + when they are used in expressions. If the operating system on which + bbaasshh is running provides these special files, bash will use them; oth- + erwise it will emulate them internally with this behavior: If any _f_i_l_e + argument to one of the primaries is of the form _/_d_e_v_/_f_d_/_n, then file + descriptor _n is checked. If the _f_i_l_e argument to one of the primaries + is one of _/_d_e_v_/_s_t_d_i_n, _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, is checked. 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 @@ -2418,30 +2499,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. @@ -2451,8 +2532,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). @@ -2466,73 +2547,76 @@ 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. + 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 + When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. - 1. The words that the parser has marked as variable assignments - (those preceding the command name) and redirections are saved + 1. The words that the parser has marked as variable assignments + (those preceding the command name) and redirections are saved for later processing. - 2. The words that are not variable assignments or redirections are - expanded. If any words remain after expansion, the first word - is taken to be the name of the command and the remaining words + 2. The words that are not variable assignments or redirections are + expanded. If any words remain after expansion, the first word + is taken to be the name of the command and the remaining words are the arguments. 3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN. 4. The text after the == in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic - expansion, and quote removal before being assigned to the vari- + expansion, and quote removal before being assigned to the vari- able. If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- zero status. - If no command name results, redirections are performed, but do not - affect the current shell environment. A redirection error causes the + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the command to exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the following actions are + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are taken. - If the command name contains no slashes, the shell attempts to locate - it. If there exists a shell function by that name, that function is - invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a - function, the shell searches for it in the list of shell builtins. If + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. - If the name is neither a shell function nor a builtin, and contains no - slashes, bbaasshh searches each element of the PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to - remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is - performed only if the command is not found in the hash table. If the + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked - with the original command and the original command's arguments as its - arguments, and the function's exit status becomes the exit status of - the shell. If that function is not defined, the shell prints an error - message and returns an exit status of 127. + in a separate execution environment with the original command and the + original command's arguments as its arguments, and the function's exit + status becomes the exit status of that subshell. If that function is + not defined, the shell prints an error message and returns an exit sta- + tus of 127. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- @@ -2798,19 +2882,26 @@ JJOOBB CCOONNTTRROOLL made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the wwaaiitt builtin, + and job control is enabled, wwaaiitt will return when the job changes + state. The --ff option will force wwaaiitt to wait until the job or process + terminates before returning. + PPRROOMMPPTTIINNGG When executing interactively, bbaasshh displays the primary prompt PPSS11 when - it is ready to read a command, and the secondary prompt PPSS22 when it - needs more input to complete a command. BBaasshh displays PPSS00 after it - reads a command but before executing it. BBaasshh allows these prompt - strings to be customized by inserting a number of backslash-escaped - special characters that are decoded as follows: + it is ready to read a command, and the secondary prompt PPSS22 when it + needs more input to complete a command. BBaasshh displays PPSS00 after it + reads a command but before executing it. BBaasshh displays PPSS44 as + described above before tracing each command when the --xx option is + enabled. BBaasshh allows these prompt strings to be customized by insert- + ing a number of backslash-escaped special characters that are decoded + as follows: \\aa an ASCII bell character (07) - \\dd the date in "Weekday Month Date" format (e.g., "Tue May + \\dd the date in "Weekday Month Date" format (e.g., "Tue May 26") \\DD{{_f_o_r_m_a_t}} - the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is - inserted into the prompt string; an empty _f_o_r_m_a_t results + the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is + inserted into the prompt string; an empty _f_o_r_m_a_t results in a locale-specific time representation. The braces are required \\ee an ASCII escape character (033) @@ -2820,7 +2911,7 @@ PPRROOMMPPTTIINNGG \\ll the basename of the shell's terminal device name \\nn newline \\rr carriage return - \\ss the name of the shell, the basename of $$00 (the portion + \\ss the name of the shell, the basename of $$00 (the portion following the final slash) \\tt the current time in 24-hour HH:MM:SS format \\TT the current time in 12-hour HH:MM:SS format @@ -2829,8 +2920,8 @@ PPRROOMMPPTTIINNGG \\uu the username of the current user \\vv the version of bbaasshh (e.g., 2.00) \\VV the release of bbaasshh, version + patch level (e.g., 2.00.0) - \\ww the current working directory, with $$HHOOMMEE abbreviated - with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- + \\ww the current working directory, with $$HHOOMMEE abbreviated + with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- able) \\WW the basename of the current working directory, with $$HHOOMMEE abbreviated with a tilde @@ -2839,66 +2930,66 @@ PPRROOMMPPTTIINNGG \\$$ if the effective UID is 0, a ##, otherwise a $$ \\_n_n_n the character corresponding to the octal number _n_n_n \\\\ a backslash - \\[[ begin a sequence of non-printing characters, which could - be used to embed a terminal control sequence into the + \\[[ begin a sequence of non-printing characters, which could + be used to embed a terminal control sequence into the prompt \\]] end a sequence of non-printing characters - The command number and the history number are usually different: the - history number of a command is its position in the history list, which - may include commands restored from the history file (see HHIISSTTOORRYY - below), while the command number is the position in the sequence of - commands executed during the current shell session. After the string - is decoded, it is expanded via parameter expansion, command substitu- - tion, arithmetic expansion, and quote removal, subject to the value of - the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command + The command number and the history number are usually different: the + history number of a command is its position in the history list, which + may include commands restored from the history file (see HHIISSTTOORRYY + below), while the command number is the position in the sequence of + commands executed during the current shell session. After the string + is decoded, it is expanded via parameter expansion, command substitu- + tion, arithmetic expansion, and quote removal, subject to the value of + the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RREEAADDLLIINNEE - This is the library that handles reading input when using an interac- + This is the library that handles reading input when using an interac- tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation. Line editing is also used when using the --ee option to the rreeaadd builtin. By default, the line editing commands are similar to those of Emacs. A 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 - the IINNPPUUTTRRCC variable. If that variable is unset, the default is - _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, + Readline is customized by putting commands in an initialization file + (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of + the IINNPPUUTTRRCC variable. If that variable is unset, the default is + _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up, the initialization file is read, and the key bindings and variables are - set. There are only a few basic constructs allowed in the readline - initialization file. Blank lines are ignored. Lines beginning with a - ## are comments. Lines beginning with a $$ indicate conditional con- + set. There are only a few basic constructs allowed in the readline + initialization file. Blank lines are ignored. Lines beginning with a + ## are comments. Lines beginning with a $$ indicate conditional con- structs. Other lines denote key bindings and variable settings. - The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other + The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other programs that use this library may add their own commands and bindings. For example, placing @@ -2906,18 +2997,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. @@ -2929,15 +3020,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 @@ -2945,7 +3036,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 @@ -2956,7 +3047,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 @@ -2966,20 +3057,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 @@ -2989,83 +3080,92 @@ RREEAADDLLIINNEE sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - Except where noted, readline variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When a variable value is read, empty or null values, "on" (case-insen- + Except where noted, readline variables can take the values OOnn or OOffff + (without regard to case). Unrecognized variable names are ignored. + When a variable value is read, empty or null values, "on" (case-insen- sitive), and "1" are equivalent to OOnn. All other values are equivalent to OOffff. The variables and their default values are: bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when readline wants to ring the terminal + Controls what happens when readline wants to ring the terminal bell. If set to nnoonnee, readline never rings the bell. If set to - vviissiibbllee, readline uses a visible bell if one is available. If + vviissiibbllee, readline uses a visible bell if one is available. If set to aauuddiibbllee, readline attempts to ring the terminal's bell. bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, readline attempts to bind the control characters + If set to OOnn, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their read- line equivalents. bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff)) If set to OOnn, readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff)) - If set to OOnn, when listing completions, readline displays the + 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 + ent color. The color definitions are taken from the value of the LLSS__CCOOLLOORRSS environment variable. 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 + This determines when the user is queried about viewing the num- + ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- + ttiioonnss command. It may be set to any integer value greater than + or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is - asked whether or not he wishes to view them; otherwise they are + asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, readline will convert characters with the eighth + If set to OOnn, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and - prefixing an escape character (in effect, using escape as the - _m_e_t_a _p_r_e_f_i_x). The default is _O_n, but readline will set it to + 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. ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) If set to OOnn, readline will inhibit word completion. Completion - characters will be inserted into the line as if they had been + characters will be inserted into the line as if they had been mapped to sseellff--iinnsseerrtt. eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) - When set to OOnn, on operating systems that indicate they support + When set to OOnn, on operating systems that indicate they support it, readline echoes a character corresponding to a signal gener- ated from the keyboard. eeddiittiinngg--mmooddee ((eemmaaccss)) Controls whether readline begins with a set of key bindings sim- ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or vvii. + eemmaaccss--mmooddee--ssttrriinngg ((@@)) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when emacs editing mode is active. The value is expanded like a + key binding, so the standard set of meta- and control prefixes + and backslash escape sequences is available. Use the \1 and \2 + escapes to begin and end sequences of non-printing characters, + which can be used to embed a terminal control sequence into the + mode string. eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOffff)) When set to OOnn, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer @@ -3120,14 +3220,6 @@ RREEAADDLLIINNEE _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the value of eeddiittiinngg--mmooddee also affects the default keymap. - eemmaaccss--mmooddee--ssttrriinngg ((@@)) - This string is displayed immediately before the last line of the - primary prompt when emacs editing mode is active. The value is - expanded like a key binding, so the standard set of meta- and - control prefixes and backslash escape sequences is available. - Use the \1 and \2 escapes to begin and end sequences of non- - printing characters, which can be used to embed a terminal con- - trol sequence into the mode string. kkeeyysseeqq--ttiimmeeoouutt ((550000)) Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when reading an ambiguous key sequence (one that can form a complete @@ -3188,9 +3280,9 @@ RREEAADDLLIINNEE common prefix) cause the matches to be listed immediately instead of ringing the bell. sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) - If set to OOnn, add a character to the beginning of the prompt - indicating the editing mode: emacs (@), vi command (:) or vi - insertion (+). + If set to OOnn, add a string to the beginning of the prompt indi- + cating the editing mode: emacs, vi command, or vi insertion. + The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) If set to OOnn, this alters the default completion behavior when inserting a single match into the line. It's only active when @@ -3199,21 +3291,23 @@ RREEAADDLLIINNEE match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) - This string is displayed immediately before the last line of the - primary prompt when vi editing mode is active and in command - mode. The value is expanded like a key binding, so the standard - set of meta- and control prefixes and backslash escape sequences - is available. Use the \1 and \2 escapes to begin and end - sequences of non-printing characters, which can be used to embed - a terminal control sequence into the mode string. + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in command mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) - This string is displayed immediately before the last line of the - primary prompt when vi editing mode is active and in insertion - mode. The value is expanded like a key binding, so the standard - set of meta- and control prefixes and backslash escape sequences - is available. Use the \1 and \2 escapes to begin and end - sequences of non-printing characters, which can be used to embed - a terminal control sequence into the mode string. + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is + displayed immediately before the last line of the primary prompt + when vi editing mode is active and in insertion mode. The value + is expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. vviissiibbllee--ssttaattss ((OOffff)) If set to OOnn, a character denoting a file's type as reported by _s_t_a_t(2) is appended to the filename when listing possible com- @@ -3227,8 +3321,9 @@ RREEAADDLLIINNEE $$iiff The $$iiff construct allows bindings to be made based on the edit- ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; - no characters are required to isolate it. + readline. The text of the test, after any comparison operator, + extends to the end of the line; unless otherwise noted, no + characters are required to isolate it. mmooddee The mmooddee== form of the $$iiff directive is used to test whether readline is in emacs or vi mode. This may be @@ -3245,14 +3340,26 @@ RREEAADDLLIINNEE first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. + vveerrssiioonn + The vveerrssiioonn test may be used to perform comparisons + against specific readline versions. The vveerrssiioonn expands + to the current readline version. The set of comparison + operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. + The version number supplied on the right side of the + operator consists of a major version number, an optional + decimal point, and an optional minor version (e.g., 77..11). + If the minor version is omitted, it is assumed to be 00. + The operator may be separated from the string vveerrssiioonn and + from the version number argument by whitespace. + aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization + library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization file can test for a particular value. This could be used - to bind key sequences to functions useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in + 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 @@ -3260,6 +3367,16 @@ RREEAADDLLIINNEE "\C-xq": "\eb\"\ef\"" $$eennddiiff + _v_a_r_i_a_b_l_e + The _v_a_r_i_a_b_l_e construct provides simple equality tests for + readline variables and values. The permitted comparison + operators are _=, _=_=, and _!_=. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right + hand side by whitespace. Both string and boolean vari- + ables may be tested. Boolean variables must be tested + against the values _o_n and _o_f_f. + $$eennddiiff This command, as seen in the previous example, terminates an $$iiff command. @@ -3335,6 +3452,18 @@ RREEAADDLLIINNEE sshheellll--bbaacckkwwaarrdd--wwoorrdd Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. + pprreevviioouuss--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than + one physical line or if point is not greater than the length of + the prompt plus the screen width. + nneexxtt--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is + not greater than the length of the prompt plus the screen width. cclleeaarr--ssccrreeeenn ((CC--ll)) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without @@ -3382,6 +3511,16 @@ RREEAADDLLIINNEE Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd + Search backward through the history for the string of characters + between the start of the current line and the current cursor + position (the _p_o_i_n_t). The search string may match anywhere in a + history line. This is a non-incremental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd + Search forward through the history for the string of characters + between the start of the current line and the point. The search + string may match anywhere in a history line. This is a non- + incremental search. yyaannkk--nntthh--aarrgg ((MM--CC--yy)) Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument _n, @@ -3422,64 +3561,65 @@ RREEAADDLLIINNEE A synonym for yyaannkk--llaasstt--aarrgg. ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. - eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xxCC--ee)) - Invoke an editor on the current command line, and execute the - result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to + use instead of the current line. + eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) + Invoke an editor on the current command line, and execute the + result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. 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, + 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 + Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move point. ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative + Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move point. ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - Capitalize the current (or following) word. With a negative + Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move point. oovveerrwwrriittee--mmooddee - Toggle overwrite mode. With an explicit positive numeric argu- + Toggle overwrite mode. With an explicit positive numeric argu- ment, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects - only eemmaaccss mode; vvii mode does overwrite differently. Each call + only eemmaaccss mode; vvii mode does overwrite differently. Each call to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac- - ters bound to sseellff--iinnsseerrtt replace the text at point rather than - pushing the text to the right. Characters bound to bbaacckk-- - wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a + ters bound to sseellff--iinnsseerrtt replace the text at point rather than + pushing the text to the right. Characters bound to bbaacckk-- + wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a space. By default, this command is unbound. KKiilllliinngg aanndd YYaannkkiinngg @@ -3488,31 +3628,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. @@ -3521,65 +3661,65 @@ RREEAADDLLIINNEE ccooppyy--rreeggiioonn--aass--kkiillll Copy the text in the region to the kill buffer. ccooppyy--bbaacckkwwaarrdd--wwoorrdd - Copy the word before point to the kill buffer. The word bound- + Copy the word before point to the kill buffer. The word bound- aries are the same as bbaacckkwwaarrdd--wwoorrdd. ccooppyy--ffoorrwwaarrdd--wwoorrdd - Copy the word following point to the kill buffer. The word + Copy the word following point to the kill buffer. The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd. yyaannkk ((CC--yy)) Yank the top of the kill ring into the buffer at point. yyaannkk--ppoopp ((MM--yy)) - Rotate the kill ring, and yank the new top. Only works follow- + Rotate the kill ring, and yank the new top. Only works follow- ing yyaannkk or yyaannkk--ppoopp. NNuummeerriicc AArrgguummeennttss ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----)) - Add this digit to the argument already accumulating, or start a + Add this digit to the argument already accumulating, or start a new argument. M-- starts a negative argument. uunniivveerrssaall--aarrgguummeenntt - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the - numeric argument, but is otherwise ignored. As a special case, - if this command is immediately followed by a character that is - neither a digit 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- + This is another way to specify an argument. If this command is + followed by one or more digits, optionally with a leading minus + sign, those digits define the argument. If the command is fol- + lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the + numeric argument, but is otherwise ignored. As a special case, + if this command is immediately followed by a character that is + neither a digit 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 - argument may be used to move backward through the list. This - command is intended to be bound to TTAABB, but is unbound by + moves _n positions forward in the list of matches; a negative + argument may be used to move backward through the list. This + command is intended to be bound to TTAABB, but is unbound by default. mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd - Identical to mmeennuu--ccoommpplleettee, but moves backward through the list - of possible completions, as if mmeennuu--ccoommpplleettee had been given a + 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--//)) @@ -3588,68 +3728,69 @@ 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--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that - is bound to the corresponding uppercase character. + ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ......)) + If the metafied character _x is uppercase, run the command that + is bound to the corresponding metafied lowercase character. The + behavior is undefined if _x is already lowercase. pprreeffiixx--mmeettaa ((EESSCC)) Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. uunnddoo ((CC--__,, CC--xx CC--uu)) @@ -3871,8 +4012,8 @@ HHIISSTTOORRYY SSIIZZEE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character fol- - lowed immediately by a digit are interpreted as timestamps for the pre- - ceding history line. These timestamps are optionally displayed depend- + lowed immediately by a digit are interpreted as timestamps for the fol- + lowing history line. These timestamps are optionally displayed depend- ing on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When a shell with history enabled exits, the last $$HHIISSTTSSIIZZEE lines are copied from the history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled @@ -3908,7 +4049,7 @@ HHIISSTTOORRYY HHIISSTTOORRYY EEXXPPAANNSSIIOONN The shell supports a history expansion feature that is similar to the - history expansion in ccsshh.. This section describes what syntax features + history expansion in ccsshh. This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the ++HH option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not @@ -3920,96 +4061,97 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN commands quickly. History expansion is performed immediately after a complete line is - read, before the shell breaks it into words. It takes place in two - parts. The first is to determine which line from the history list to - use during substitution. The second is to select portions of that line - for inclusion into the current one. The line selected from the history - is the _e_v_e_n_t, and the portions of that line that are acted upon are - _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are available to manipulate the selected - words. The line is broken into words in the same fashion as when read- - ing input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words surrounded by - quotes are considered one word. History expansions are introduced by - the appearance of the history expansion character, which is !! by - default. Only backslash (\\) and single quotes can quote the history - expansion character, but the history expansion character is also - treated as quoted if it immediately precedes the closing double quote - in a double-quoted string. - - Several characters inhibit history expansion if found immediately fol- - lowing the history expansion character, even if it is unquoted: space, - tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is + read, before the shell breaks it into words, and is performed on each + line individually without taking quoting on previous lines into + account. It takes place in two parts. The first is to determine which + line from the history list to use during substitution. The second is + to select portions of that line for inclusion into the current one. + The line selected from the history is the _e_v_e_n_t, and the portions of + that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are avail- + able to manipulate the selected words. The line is broken into words + in the same fashion as when reading input, so that several _m_e_t_a_c_h_a_r_a_c_- + _t_e_r-separated words surrounded by quotes are considered one word. His- + tory expansions are introduced by the appearance of the history expan- + sion character, which is !! by default. Only backslash (\\) and single + quotes can quote the history expansion character, but the history + expansion character is also treated as quoted if it immediately pre- + cedes the closing double quote in a double-quoted string. + + Several characters inhibit history expansion if found immediately fol- + lowing the history expansion character, even if it is unquoted: space, + tab, newline, carriage return, and ==. If the eexxttgglloobb shell option is enabled, (( will also inhibit expansion. - Several shell options settable with the sshhoopptt builtin may be used to - tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell + Several shell options settable with the sshhoopptt builtin may be used to + tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell option is enabled (see the description of the sshhoopptt builtin below), and - rreeaaddlliinnee is being used, history substitutions are not immediately - passed to the shell parser. Instead, the expanded line is reloaded + rreeaaddlliinnee is being used, history substitutions are not immediately + passed to the shell parser. Instead, the expanded line is reloaded into the rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee - is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed - history substitution will be reloaded into the rreeaaddlliinnee editing buffer - for correction. The --pp option to the hhiissttoorryy builtin command may be - used to see what a history expansion will do before using it. The --ss + is being used, and the hhiissttrreeeeddiitt shell option is enabled, a failed + history substitution will be reloaded into the rreeaaddlliinnee editing buffer + for correction. The --pp option to the hhiissttoorryy builtin command may be + used to see what a history expansion will do before using it. The --ss option to the hhiissttoorryy builtin may be used to add commands to the end of - the history list without actually executing them, so that they are + the history list without actually executing them, so that they are available for subsequent recall. - The shell allows control of the various characters used by the history + The shell allows control of the various characters used by the history expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll - VVaarriiaabblleess). The shell uses the history comment character to mark his- + VVaarriiaabblleess). The shell uses the history comment character to mark his- tory timestamps when writing the history file. EEvveenntt DDeessiiggnnaattoorrss - An event designator is a reference to a command line entry in the his- - tory list. Unless the reference is absolute, events are relative to + An event designator is a reference to a command line entry in the his- + tory list. Unless the reference is absolute, events are relative to the current position in the history list. - !! Start a history substitution, except when followed by a bbllaannkk, - newline, carriage return, = or ( (when the eexxttgglloobb shell option + !! Start a history substitution, except when followed by a bbllaannkk, + newline, carriage return, = or ( (when the eexxttgglloobb shell option is enabled using the sshhoopptt builtin). !!_n Refer to command line _n. !!--_n Refer to the current command minus _n. !!!! Refer to the previous command. This is a synonym for `!-1'. !!_s_t_r_i_n_g - Refer to the most recent command preceding the current position + Refer to the most recent command preceding the current position in the history list starting with _s_t_r_i_n_g. !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command preceding the current position - in the history list containing _s_t_r_i_n_g. The trailing ?? may be + Refer to the most recent command preceding the current position + in the history list containing _s_t_r_i_n_g. The trailing ?? may be omitted if _s_t_r_i_n_g is followed immediately by a newline. ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ - Quick substitution. Repeat the previous command, replacing - _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' + Quick substitution. Repeat the previous command, replacing + _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below). !!## The entire command line typed so far. WWoorrdd DDeessiiggnnaattoorrss - Word designators are used to select desired words from the event. A :: - separates the event specification from the word designator. It may be - omitted if the word designator begins with a ^^, $$, **, --, or %%. Words - are numbered from the beginning of the line, with the first word being - denoted by 0 (zero). Words are inserted into the current line sepa- + Word designators are used to select desired words from the event. A :: + separates the event specification from the word designator. It may be + omitted if the word designator begins with a ^^, $$, **, --, or %%. Words + are numbered from the beginning of the line, with the first word being + denoted by 0 (zero). Words are inserted into the current line sepa- rated by single spaces. 00 ((zzeerroo)) The zeroth word. For the shell, this is the command word. _n The _nth word. ^^ The first argument. That is, word 1. - $$ The last word. This is usually the last argument, but will + $$ The last word. This is usually the last argument, but will expand to the zeroth word if there is only one word in the line. %% The word matched by the most recent `?_s_t_r_i_n_g?' search. _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. This is a synonym for `_1_-_$'. - It is not an error to use ** if there is just one word in the + ** All of the words but the zeroth. This is a synonym for `_1_-_$'. + It is not an error to use ** if there is just one word in the event; the empty string is returned in that case. xx** Abbreviates _x_-_$. xx-- Abbreviates _x_-_$ like xx**, but omits the last word. - If a word designator is supplied without an event specification, the + If a word designator is supplied without an event specification, the previous command is used as the event. MMooddiiffiieerrss - After the optional word designator, there may appear a sequence of one + After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. hh Remove a trailing filename component, leaving only the head. @@ -4018,80 +4160,80 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN ee Remove all but the trailing suffix. pp Print the new command but do not execute it. qq Quote the substituted words, escaping further substitutions. - xx Quote the substituted words as with qq, but break into words at + xx Quote the substituted words as with qq, but break into words at bbllaannkkss and newlines. ss//_o_l_d//_n_e_w// - Substitute _n_e_w for the first occurrence of _o_l_d in the event - line. Any delimiter can be used in place of /. The final - delimiter is optional if it is the last character of the event - line. The delimiter may be quoted in _o_l_d and _n_e_w with a single - backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- - gle backslash will quote the &. If _o_l_d is null, it is set to - the last _o_l_d substituted, or, if no previous history substitu- + Substitute _n_e_w for the first occurrence of _o_l_d in the event + line. Any delimiter can be used in place of /. The final + delimiter is optional if it is the last character of the event + line. The delimiter may be quoted in _o_l_d and _n_e_w with a single + backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin- + gle backslash will quote the &. If _o_l_d is null, it is set to + the last _o_l_d substituted, or, if no previous history substitu- tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search. && Repeat the previous substitution. gg Cause changes to be applied over the entire event line. This is - used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. - If used with `::ss', any delimiter can be used in place of /, and - the final delimiter is optional if it is the last character of + used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'. + If used with `::ss', any delimiter can be used in place of /, and + the final delimiter is optional if it is the last character of the event line. An aa may be used as a synonym for gg. - GG Apply the following `ss' modifier once to each word in the event + GG Apply the following `ss' modifier once to each word in the event line. SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -- accepts ---- to signify the end of the - options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options - and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- - ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning - with -- without requiring ----. Other builtins that accept arguments but - are not specified as accepting options interpret arguments beginning - with -- as invalid options and require ---- to prevent this interpreta- + options. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- tion. :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s and performing any specified redirections. The return status is zero. .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, - filenames in PPAATTHH are used to find the directory containing + Read and execute commands from _f_i_l_e_n_a_m_e in the current shell + environment and return the exit status of the last command exe- + cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, + filenames in PPAATTHH are used to find the directory containing _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the - positional parameters are unchanged. If the --TT option is - enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any - DDEEBBUUGG trap string is saved and restored around the call to - ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If - --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the - new value is retained when ssoouurrccee completes. The return status + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. If the --TT option is + enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any + DDEEBBUUGG trap string is saved and restored around the call to + ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If + --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the + new value is retained when ssoouurrccee completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of - aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When - arguments are supplied, an alias is defined for each _n_a_m_e whose - _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word + aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When + arguments are supplied, an alias is defined for each _n_a_m_e whose + _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word to be checked for alias substitution when the alias is expanded. - For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- - plied, the name and value of the alias is printed. AAlliiaass - returns true unless a _n_a_m_e is given for which no alias has been + For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup- + plied, the name and value of the alias is printed. AAlliiaass + returns true unless a _n_a_m_e is given for which no alias has been defined. bbgg [_j_o_b_s_p_e_c ...] - Resume each suspended job _j_o_b_s_p_e_c in the background, as if it + Resume each suspended job _j_o_b_s_p_e_c in the background, as if it had been started with &&. If _j_o_b_s_p_e_c is not present, the shell's - notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless - run when job control is disabled or, when run with job control - enabled, any specified _j_o_b_s_p_e_c was not found or was started + notion of the _c_u_r_r_e_n_t _j_o_b is used. bbgg _j_o_b_s_p_e_c returns 0 unless + run when job control is disabled or, when run with job control + enabled, any specified _j_o_b_s_p_e_c was not found or was started without job control. bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVVXX] @@ -4100,29 +4242,29 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee - variable. Each non-option argument is a command as it would - appear in _._i_n_p_u_t_r_c, but each binding or command must be passed - as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. + Display current rreeaaddlliinnee key and function bindings, bind a key + sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee + variable. Each non-option argument is a command as it would + appear in _._i_n_p_u_t_r_c, but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied, have the following meanings: --mm _k_e_y_m_a_p Use _k_e_y_m_a_p as the keymap to be affected by the subsequent bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e - is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -4134,174 +4276,174 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr _k_e_y_s_e_q Remove any current binding for _k_e_y_s_e_q. --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is - entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets - the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- - lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the current location of the insertion point. If the executed - command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- - LLIINNEE__PPOOIINNTT, those new values will be reflected in the + command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- + LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. - --XX List all key sequences bound to shell commands and the - associated commands in a format that can be reused as + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. - The return value is 0 unless an unrecognized option is given or + The return value is 0 unless an unrecognized option is given or an error occurred. bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, break _n levels. _n must be >= 1. If _n is greater - than the number of enclosing loops, all enclosing loops are - exited. The return value is 0 unless _n is not greater than or + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless _n is not greater than or equal to 1. bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] - Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and return its exit status. This is useful when defining a function - whose name is the same as a shell builtin, retaining the func- + whose name is the same as a shell builtin, retaining the func- tionality of the builtin within the function. The ccdd builtin is - commonly redefined this way. The return status is false if + commonly redefined this way. The return status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. ccaalllleerr [_e_x_p_r] Returns the context of any active subroutine call (a shell func- tion or a script executed with the .. or ssoouurrccee builtins). With- out _e_x_p_r, ccaalllleerr displays the line number and source filename of - the current subroutine call. If a non-negative integer is sup- + the current subroutine call. If a non-negative integer is sup- plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, - and source file corresponding to that position in the current - execution call stack. This extra information may be used, for - example, to print a stack trace. The current frame is frame 0. - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in the call stack. ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] - Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative - directory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative + directory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and before processing instances of _._. in _d_i_r (see also the --PP option to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances + to be followed by resolving the link after processing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, + tory name from CCDDPPAATTHH is used, or if -- is the first argument, and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully + the new working directory is written to the standard output. + The return value is true if the directory was successfully changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + option causes a single word indicating the command or filename used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. The matches will be generated in the same way as if the program- mable completion code had generated them directly from a comple- - tion specification with the same flags. If _w_o_r_d is specified, + tion specification with the same flags. If _w_o_r_d is specified, only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. If the - --pp option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them + Specify how arguments to each _n_a_m_e should be completed. If the + --pp option is supplied, or if no options are supplied, existing + completion specifications are printed in a way that allows them to be reused as input. The --rr option removes a completion spec- - ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- + ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- pletion specifications. The --DD option indicates that the - remaining options and actions should apply to the ``default'' - command completion; that is, completion attempted on a command - for which no completion has previously been defined. The --EE - option indicates that the remaining options and actions should - apply to ``empty'' command completion; that is, completion + remaining options and actions should apply to the ``default'' + command completion; that is, completion attempted on a command + for which no completion has previously been defined. The --EE + option indicates that the remaining options and actions should + apply to ``empty'' command completion; that is, completion attempted on a blank line. - The process of applying these completion specifications when - word completion is attempted is described above under 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 - default) to words completed at the end of the + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are - generated, directory name completion is - attempted and any matches are added to the + After any matches defined by the compspec are + generated, directory name completion is + attempted and any matches are added to the results of the other actions. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -4309,7 +4451,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 @@ -4318,17 +4460,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. @@ -4337,188 +4479,190 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - is the word preceding the word being completed on the - current command line. When it finishes, the possible - completions are retrieved from the value of the CCOOMMPPRREE-- + is the word preceding the word being completed on the + current command line. When it finishes, the possible + completions are retrieved from the value of the CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. The possible completions are the members - of the resultant list which match the word being com- - pleted. + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, + in order to provide a mechanism for the words to contain + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- + tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e argu- - ment, an attempt is made to remove a completion specification + The return value is true unless an invalid option is supplied, + an option other than --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification for a _n_a_m_e for which no specification exists, or an error occurs adding a completion specification. ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining + _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es + are supplied. If no _o_p_t_i_o_ns are given, display the completion + options for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin + described above. The --DD option indicates that the remaining options should apply to the ``default'' command completion; that - is, completion attempted on a command for which no completion - has previously been defined. The --EE option indicates that the - remaining options should apply to ``empty'' command completion; + is, completion attempted on a command for which no completion + has previously been defined. The --EE option indicates that the + remaining options should apply to ``empty'' command completion; that is, completion attempted on a blank line. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a _n_a_m_e for which no completion specification exists, or an output error occurs. ccoonnttiinnuuee [_n] Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or - sseelleecctt loop. If _n is specified, resume at the _nth enclosing - loop. _n must be >= 1. If _n is greater than the number of - enclosing loops, the last enclosing loop (the ``top-level'' + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless _n is not greater than or equal to 1. ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - Declare variables and/or give them attributes. If no _n_a_m_es are - given then display the values of variables. The --pp option will + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options, other than --ff and --FF, - are ignored. When --pp is supplied without _n_a_m_e arguments, it - will display the attributes and values of all variables having + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e arguments, it + will display the attributes and values of all variables having the attributes specified by the additional options. If no other - options are supplied with --pp, ddeeccllaarree will display the - attributes and values of all shell variables. The --ff option - will restrict the display to shell functions. The --FF option - inhibits the display of function definitions; only the function - name and attributes are printed. If the eexxttddeebbuugg shell option - is enabled using sshhoopptt, the source file name and line number + options are supplied with --pp, ddeeccllaarree will display the + attributes and values of all shell variables. The --ff option + will restrict the display to shell functions. The --FF option + inhibits the display of function definitions; only the function + name and attributes are printed. If the eexxttddeebbuugg shell option + is enabled using sshhoopptt, the source file name and line number where each _n_a_m_e is defined are displayed as well. The --FF option - implies --ff. The --gg option forces variables to be created or + implies --ff. The --gg option forces variables to be created or modified at the global scope, even when ddeeccllaarree is executed in a - shell function. It is ignored in all other cases. The follow- + shell function. It is ignored in all other cases. The follow- ing options can be used to restrict output to variables with the specified attribute or to give variables attributes: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss above). --ff Use function names only. --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions - inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling - shell. The trace attribute has no special meaning for + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions + inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling + shell. The trace attribute has no special meaning for variables. - --uu When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case attribute is disabled. - --xx Mark _n_a_m_es for export to subsequent commands via the + --xx Mark _n_a_m_es for export to subsequent commands via the environment. - Using `+' instead of `-' turns off the attribute instead, with + Using `+' instead of `-' turns off the attribute instead, with the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used + able and ++rr will not remove the readonly attribute. When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. When using --aa or --AA and the compound assignment - syntax to create array variables, additional attributes do not + able name is followed by =_v_a_l_u_e, the value of the variable is + set to _v_a_l_u_e. When using --aa or --AA and the compound assignment + syntax to create array variables, additional attributes do not take effect until subsequent assignments. The return value is 0 - unless an invalid option is encountered, an attempt is made to - define a function using ``-f foo=bar'', an attempt is made to - assign a value to a readonly variable, an attempt is made to - assign a value to an array variable without using the compound - assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a - valid shell variable name, an attempt is made to turn off read- - only status for a readonly variable, an attempt is made to turn + unless an invalid option is encountered, an attempt is made to + define a function using ``-f foo=bar'', an attempt is made to + assign a value to a readonly variable, an attempt is made to + assign a value to an array variable without using the compound + assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a + valid shell variable name, an attempt is made to turn off read- + only status for a readonly variable, an attempt is made to turn off array status for an array variable, or an attempt is made to display a non-existent function with --ff. ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - Without options, displays the list of currently remembered - directories. The default display is on a single line with - directory names separated by spaces. Directories are added to - the list with the ppuusshhdd command; the ppooppdd command removes - entries from the list. The current directory is always the + Without options, displays the list of currently remembered + directories. The default display is on a single line with + directory names separated by spaces. Directories are added to + the list with the ppuusshhdd command; the ppooppdd command removes + entries from the list. The current directory is always the first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. - --vv Print the directory stack with one entry per line, pre- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. ++_n Displays the _nth entry counting from the left of the list shown by ddiirrss when invoked without options, starting with zero. - --_n Displays the _nth entry counting from the right of the + --_n Displays the _nth entry counting from the right of the list shown by ddiirrss when invoked without options, starting with zero. - The return value is 0 unless an invalid option is supplied or _n + The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] - Without options, remove each _j_o_b_s_p_e_c from the table of active - jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr - option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option - is given, each _j_o_b_s_p_e_c is not removed from the table, but is - marked so that SSIIGGHHUUPP is not sent to the job if the shell - receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option - means to remove or mark all jobs; the --rr option without a _j_o_b_- - _s_p_e_c argument restricts operation to running jobs. The return + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell + receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option + means to remove or mark all jobs; the --rr option without a _j_o_b_- + _s_p_e_c argument restricts operation to running jobs. The return value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is 0 unless a write error occurs. If --nn is + Output the _a_r_gs, separated by spaces, followed by a newline. + The return status is 0 unless a write error occurs. If --nn is specified, the trailing newline is suppressed. If the --ee option - is given, interpretation of the following backslash-escaped - characters is enabled. The --EE option disables the interpreta- - tion of these escape characters, even on systems where they are - interpreted by default. The xxppgg__eecchhoo shell option may be used - to dynamically determine whether or not eecchhoo expands these - escape characters by default. eecchhoo does not interpret ---- to - mean the end of options. eecchhoo interprets the following escape + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these + escape characters by default. eecchhoo does not interpret ---- to + mean the end of options. eecchhoo interprets the following escape sequences: \\aa alert (bell) \\bb backspace @@ -4531,57 +4675,58 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - Enable and disable builtin shell commands. Disabling a builtin + Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin - to be executed without specifying a full pathname, even though - the shell normally searches for builtins before disk commands. - If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are + to be executed without specifying a full pathname, even though + the shell normally searches for builtins before disk commands. + If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are enabled. For example, to use the tteesstt binary found via the PPAATTHH - instead of the shell builtin version, run ``enable -n test''. - The --ff option means to load the new builtin command _n_a_m_e from + instead of the shell builtin version, run ``enable -n test''. + The --ff option means to load the new builtin command _n_a_m_e from shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. + The --dd option will delete a builtin previously loaded with --ff. If no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of shell builtins is printed. With no other option argu- - ments, the list consists of all enabled shell builtins. If --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an + ments, the list consists of all enabled shell builtins. If --nn + is supplied, only disabled builtins are printed. If --aa is sup- + plied, the list printed includes all builtins, with an indica- + tion of whether or not each is enabled. If --ss is supplied, the + output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return + value is 0 unless a _n_a_m_e is not a shell builtin or there is an error loading a new builtin from a shared object. eevvaall [_a_r_g ...] - The _a_r_gs are read and concatenated together into a single com- - mand. This command is then read and executed by the shell, and - its exit status is returned as the value of eevvaall. If there are + The _a_r_gs are read and concatenated together into a single com- + mand. This command is then read and executed by the shell, and + its exit status is returned as the value of eevvaall. If there are no _a_r_g_s, or only null arguments, eevvaall returns 0. eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]] - If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process - is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If + If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process + is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what + ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e + an empty environment. If --aa is supplied, the shell passes _n_a_m_e as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the eexxeeccffaaiill shell option is enabled. In that case, it - returns failure. An interactive shell returns failure if the - file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- - rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill shell option is enabled. In that case, it + returns failure. An interactive shell returns failure if the + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take + effect in the current shell, and the return status is 0. If + there is a redirection error, the return status is 1. eexxiitt [_n] Cause the shell to exit with a status of _n. If _n is omitted, @@ -4609,9 +4754,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS the last command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the current command number). If _l_a_s_t is not - specified it is set to the current command for listing (so that + specified, it is set to the current command for listing (so that ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + wise. If _f_i_r_s_t is not specified, it is set to the previous com- mand for editing and -16 for listing. The --nn option suppresses the command numbers when listing. The @@ -4624,7 +4769,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS plete, the edited commands are echoed and executed. In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is intepreted the same as + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', so that typing ``r cc'' runs the last command beginning with ``cc'' and typing ``r'' re-executes the last command. @@ -4725,6 +4870,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy [[_n]] hhiissttoorryy --cc hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e] hhiissttoorryy --pp _a_r_g [_a_r_g _._._.] hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] @@ -4740,7 +4886,15 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + is negative, it is interpreted as relative to one greater + than the last history position, so negative indices count + back from the end of the history, and an index of -1 + refers to the current hhiissttoorryy --dd command. + --dd _s_t_a_r_t-_e_n_d + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + and _e_n_d are interpreted as described above. --aa Append the ``new'' history lines to the history file. These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the @@ -4839,7 +4993,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. + input line, rather than newline. If _d_e_l_i_m is the empty + string, mmaappffiillee will terminate a line when it reads a NUL + character. --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default @@ -4987,27 +5143,30 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ignored. --dd _d_e_l_i_m The first character of _d_e_l_i_m is used to terminate the - input line, rather than newline. + input line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL + character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee (see RREEAADDLLIINNEE above) is used to obtain the line. Read- line uses the current (or default, if line editing was - not previously active) editing settings. + not previously active) editing settings, but uses Read- + line's default filename completion. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input, but honors a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters - are read. The result is not split on the characters in - IIFFSS; the intent is that the variable is assigned exactly + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the --rr option below). --pp _p_r_o_m_p_t @@ -5015,131 +5174,131 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - returns immediately, without trying to read any data. - The exit status is 0 if input is available on the speci- - fied file descriptor, non-zero otherwise. The exit sta- + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + returns immediately, without trying to read any data. + The exit status is 0 if input is available on the speci- + fied file descriptor, non-zero otherwise. The exit sta- tus is greater than 128 if the timeout is exceeded. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The exit status is zero, unless end-of-file is + able RREEPPLLYY. The exit status is zero, unless end-of-file is encountered, rreeaadd times out (in which case the status is greater - than 128), a variable assignment error (such as assigning to a + than 128), a variable assignment error (such as assigning to a readonly variable) occurs, or an invalid file descriptor is sup- plied as the argument to --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of all readonly names is printed. The other options may be - used to restrict the output to a subset of the set of readonly - names. The --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return - status is 0 unless an invalid option is encountered, one of the + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If - rreettuurrnn is executed by a trap handler, the last command used to - determine the status is the last command executed before the - trap handler. if rreettuurrnn is executed during a DDEEBBUUGG trap, the - last command used to determine the status is the last command - executed by the trap handler before rreettuurrnn was invoked. If - rreettuurrnn is used outside a function, but during execution of a - script by the .. (ssoouurrccee) command, it causes the shell to stop - executing that script and return either _n or the exit status of - the last command executed within the script as the exit status - of the script. If _n is supplied, the return value is its least - significant 8 bits. The return status is non-zero if rreettuurrnn is - supplied a non-numeric argument, or is used outside a function - and not during execution of a script by .. or ssoouurrccee. Any com- - mand associated with the RREETTUURRNN trap is executed before execu- + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If + rreettuurrnn is used outside a function, but during execution of a + script by the .. (ssoouurrccee) command, it causes the shell to stop + executing that script and return either _n or the exit status of + the last command executed within the script as the exit status + of the script. If _n is supplied, the return value is its least + significant 8 bits. The return status is non-zero if rreettuurrnn is + supplied a non-numeric argument, or is used outside a function + and not during execution of a script by .. or ssoouurrccee. Any com- + mand associated with the RREETTUURRNN trap is executed before execu- tion resumes after the function or script. sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, the name and value of each shell variable are + Without options, the name and value of each shell variable are displayed in a format that can be reused as input for setting or resetting the currently-set variables. Read-only variables can- - not be reset. In _p_o_s_i_x mode, only shell variables are listed. - The output is sorted according to the current locale. When - options are specified, they set or unset shell attributes. Any - arguments remaining after option processing are treated as val- + not be reset. In _p_o_s_i_x mode, only shell variables are listed. + The output is sorted according to the current locale. When + options are specified, they set or unset shell attributes. Any + arguments remaining after option processing are treated as val- ues for the positional parameters and are assigned, in order, to - $$11, $$22, ...... $$_n. Options, if specified, have the following + $$11, $$22, ...... $$_n. Options, if specified, have the following meanings: --aa Each variable or function that is created or modified is - given the export attribute and marked for export to the + given the export attribute and marked for export to the environment of subsequent commands. - --bb Report the status of terminated background jobs immedi- + --bb Report the status of terminated background jobs immedi- ately, rather than before the next primary prompt. This is effective only when job control is enabled. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. - The shell does not exit if the command that fails is - part of the command list immediately following a wwhhiillee - or uunnttiill keyword, part of the test following the iiff or - eelliiff reserved words, part of any command executed in a - &&&& or |||| list except the command following the final &&&& + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& or ||||, any command in a pipeline but the last, or if the - command's return value is being inverted with !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing all the commands in the subshell. - If a compound command or shell function executes in a - context where --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee is ignored, that setting will not have - any effect until the compound command or the command + If a compound command or shell function executes in a + context where --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command containing the function call completes. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run + --mm Monitor mode. Job control is enabled. This option is + on by default for interactive shells on systems that + support it (see JJOOBB CCOONNTTRROOLL above). All processes run in a separate process group. When a background job com- pletes, the shell prints a line containing its exit sta- tus. --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is + to check a shell script for syntax errors. This is ignored by interactive shells. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -5147,10 +5306,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 @@ -5164,8 +5323,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -5180,108 +5339,109 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option + If set, the return value of a pipeline is the + value of the last (rightmost) command to exit + with a non-zero status, or zero if all commands + in the pipeline exit successfully. This option is disabled by default. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + ppoossiixx Change the behavior of bbaasshh where the default + operation differs from the POSIX standard to + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. + vvii Use a vi-style command line editing interface. This also affects the editing interface used for rreeaadd --ee. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they appear in the environment, are ignored. If the shell is - started with the effective user (group) id not equal to - the real user (group) id, and the --pp option is not sup- + started with the effective user (group) id not equal to + the real user (group) id, and the --pp option is not sup- plied, these actions are taken and the effective user id - is set to the real user id. If the --pp option is sup- - plied at startup, the effective user id is not reset. - Turning this option off causes the effective user and + is set to the real user id. If the --pp option is sup- + plied at startup, the effective user id is not reset. + Turning this option off causes the effective user and group ids to be set to the real user and group ids. --tt Exit after reading and executing one command. --uu Treat unset variables and parameters other than the spe- - cial parameters "@" and "*" as an error when performing - parameter expansion. If expansion is attempted on an - unset variable or parameter, the shell prints an error - message, and, if not interactive, exits with a non-zero + cial parameters "@" and "*" as an error when performing + parameter expansion. If expansion is attempted on an + unset variable or parameter, the shell prints an error + message, and, if not interactive, exits with a non-zero status. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not resolve symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not resolve symbolic links when + executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, the posi- tional parameters remain unchanged. - The options are off by default unless otherwise noted. Using + - rather than - causes these options to be turned off. The - options can also be specified as arguments to an invocation of - the shell. The current set of options may be found in $$--. The + The options are off by default unless otherwise noted. Using + + rather than - causes these options to be turned off. The + options can also be specified as arguments to an invocation of + the shell. The current set of options may be found in $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of settings controlling optional shell behav- - ior. The settings can be either those listed below, or, if the + Toggle the values of settings controlling optional shell behav- + ior. The settings can be either those listed below, or, if the --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list - of all settable options is displayed, with an indication of - whether or not each is set. The --pp option causes output to be - displayed in a form that may be reused as input. Other options - have the following meanings: + of all settable options is displayed, with an indication of + whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other + options have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. --qq Suppresses normal output (quiet mode); the return status @@ -5304,215 +5464,233 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The list of sshhoopptt options is: - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + aassssoocc__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation and while executing builtins that can + perform variable assignments. + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + ponent in a ccdd command will be corrected. The errors checked for are transposed characters, a missing charac- - ter, and one character too many. If a correction is - found, the corrected filename is printed, and the com- - mand proceeds. This option is only used by interactive + ter, and one character too many. If a correction is + found, the corrected filename is printed, and the com- + mand proceeds. This option is only used by interactive shells. cchheecckkhhaasshh If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, a normal path search is per- + ble exists before trying to execute it. If a hashed + command no longer exists, a normal path search is per- formed. cchheecckkjjoobbss If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs + jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a - second exit is attempted without an intervening command - (see JJOOBB CCOONNTTRROOLL above). The shell always postpones + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each command - and, if necessary, updates the values of LLIINNEESS and CCOOLL-- - UUMMNNSS. - ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- - line command in the same history entry. This allows - easy re-editing of multi-line commands. + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. + ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- + line command in the same history entry. This allows + easy re-editing of multi-line commands. This option is + enabled by default, but only has an effect if command + history is enabled, as described above under HHIISSTTOORRYY. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 - with respect to quoted arguments to the [[[[ conditional + with respect to quoted arguments to the [[[[ conditional command's ==~~ operator and locale-specific string compar- - ison when using the [[[[ conditional command's << and >> - operators. Bash versions prior to bash-4.1 use ASCII + ison when using the [[[[ conditional command's << and >> + operators. Bash versions prior to bash-4.1 use ASCII collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur- rent locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt3322 If set, bbaasshh changes its behavior to that of version 3.2 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see previous item) and the effect of interrupting a - command list. Bash versions 3.2 and earlier continue - with the next command in the list after one terminates + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). + ccoommppaatt4444 + If set, bbaasshh saves the positional parameters to + BASH_ARGV and BASH_ARGC before they are used, regardless + of whether or not extended debugging mode is enabled. ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if + ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set at shell invocation, arrange to execute the - debugger profile before the shell starts, identical to - the ----ddeebbuuggggeerr option. If set after invocation, behav- + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This option is enabled by default. llaassttppiippee - If set, and job control is not active, the shell runs + If set, and job control is not active, the shell runs the last command of a pipeline not executed in the back- ground in the current shell environment. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + llooccaallvvaarr__iinnhheerriitt + If set, local variables inherit the value and attributes + of a variable of the same name that exists at a previous + scope before any new value is assigned. The nameref + attribute is not inherited. llooggiinn__sshheellll The shell sets this option if it is started as a login shell (see IINNVVOOCCAATTIIOONN above). The value may not be @@ -5794,22 +5972,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS sequently reset. The exit status is true unless a _n_a_m_e is read- only. - wwaaiitt [--nn] [_n _._._.] + wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + status. Each _i_d may be a process ID or a job specification; if + a job spec is given, all processes in that job's pipeline are + waited for. If _i_d is not given, all currently active child pro- cesses are waited for, and the return status is zero. If the --nn option is supplied, wwaaiitt waits for any job to terminate and - returns its exit status. If _n specifies a non-existent process - or job, the return status is 127. Otherwise, the return status - is the exit status of the last process or job waited for. + returns its exit status. If the --ff option is supplied, and job + control is enabled, wwaaiitt forces _i_d to terminate before returning + its status, instead of returning when it changes status. If _i_d + specifies a non-existent process or job, the return status is + 127. Otherwise, the return status is the exit status of the + last process or job waited for. RREESSTTRRIICCTTEEDD SSHHEELLLL If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at - invocation, the shell becomes restricted. A restricted shell is used - to set up an environment more controlled than the standard shell. It - behaves identically to bbaasshh with the exception that the following are + invocation, the shell becomes restricted. A restricted shell is used + to set up an environment more controlled than the standard shell. It + behaves identically to bbaasshh with the exception that the following are disallowed or not performed: +o changing directories with ccdd @@ -5818,16 +5999,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a filename containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the --pp option to the hhaasshh builtin command - +o importing function definitions from the shell environment at + +o importing function definitions from the shell environment at startup - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at startup +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- @@ -5836,10 +6017,10 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o using the eexxeecc builtin command to replace the shell with another command - +o adding or deleting builtin commands with the --ff and --dd options + +o adding or deleting builtin commands with the --ff and --dd options to the eennaabbllee builtin command - +o using the eennaabbllee builtin command to enable disabled shell + +o using the eennaabbllee builtin command to enable disabled shell builtins +o specifying the --pp option to the ccoommmmaanndd builtin command @@ -5849,14 +6030,14 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL These restrictions are enforced after any startup files are read. When a command that is found to be a shell script is executed (see CCOOMM-- - MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell + MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell spawned to execute the script. SSEEEE AALLSSOO _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, Brian Fox and Chet Ramey _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- + _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- _t_i_e_s, IEEE -- http://pubs.opengroup.org/onlinepubs/9699919799/ http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode @@ -5874,7 +6055,7 @@ FFIILLEESS _~_/_._b_a_s_h_r_c The individual per-interactive-shell startup file _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login + The individual login shell cleanup file, executed when a login shell exits _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -5888,14 +6069,14 @@ AAUUTTHHOORRSS BBUUGG RREEPPOORRTTSS If you find a bug in bbaasshh,, you should report it. But first, you should - make sure that it really is a bug, and that it appears in the latest - version of bbaasshh. The latest version is always available from + make sure that it really is a bug, and that it appears in the latest + version of bbaasshh. The latest version is always available from _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g - command to submit a bug report. If you have a fix, you are encouraged - to mail that as well! Suggestions and `philosophical' bug reports may - be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + command to submit a bug report. If you have a fix, you are encouraged + to mail that as well! Suggestions and `philosophical' bug reports may + be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup ggnnuu..bbaasshh..bbuugg. ALL bug reports should include: @@ -5906,7 +6087,7 @@ BBUUGG RREEPPOORRTTSS A description of the bug behaviour A short script or `recipe' which exercises the bug - _b_a_s_h_b_u_g inserts the first three items automatically into the template + _b_a_s_h_b_u_g inserts the first three items automatically into the template it provides for filing a bug report. Comments and bug reports concerning this manual page should be directed @@ -5923,10 +6104,10 @@ BBUUGGSS Shell builtin commands and functions are not stoppable/restartable. Compound commands and command sequences of the form `a ; b ; c' are not - handled gracefully when process suspension is attempted. When a - process is stopped, the shell immediately executes the next command in - the sequence. It suffices to place the sequence of commands between - parentheses to force it into a subshell, which may be stopped as a + handled gracefully when process suspension is attempted. When a + process is stopped, the shell immediately executes the next command in + the sequence. It suffices to place the sequence of commands between + parentheses to force it into a subshell, which may be stopped as a unit. Array variables may not (yet) be exported. @@ -5935,4 +6116,4 @@ BBUUGGSS -GNU Bash 4.4 2016 August 26 BASH(1) +GNU Bash 5.0 2018 March 15 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index 9a7a384ae..cf712fe34 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Fri Aug 26 09:45:10 EDT 2016 +.\" Last Change: Thu Mar 15 11:30:03 EDT 2018 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2016 August 26" "GNU Bash 4.4" +.TH BASH 1 "2018 March 15" "GNU Bash 5.0" .\" .\" 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-2016 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2016 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2018 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -68,8 +68,8 @@ Shell and Utilities portion of the IEEE POSIX specification can be configured to be POSIX-conformant by default. .SH OPTIONS All of the single-character shell options documented in the -description of the \fBset\fR builtin command can be used as options -when the shell is invoked. +description of the \fBset\fR builtin command, including \fB\-o\fP, +can be used as options when the shell is invoked. In addition, \fBbash\fR interprets the following options when it is invoked: .PP @@ -119,7 +119,8 @@ If the option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set -when invoking an interactive shell. +when invoking an interactive shell or when reading input +through a pipe. .TP .B \-D A list of all double-quoted strings preceded by \fB$\fP @@ -590,6 +591,13 @@ the time information. .PP Each command in a pipeline is executed as a separate process (i.e., in a subshell). +See +.SM +\fBCOMMAND EXECUTION ENVIRONMENT\fP +for a description of a subshell environment. +If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin +(see the description of \fBshopt\fP below), +the last element of a pipeline may be run by the shell process. .SS Lists .PP A \fIlist\fP is a sequence of one or more pipelines separated by one @@ -640,7 +648,7 @@ An AND list has the form .I command2 is executed if, and only if, .I command1 -returns an exit status of zero. +returns an exit status of zero (success). .PP An OR list has the form .RS @@ -650,7 +658,7 @@ An OR list has the form .RE .PP .I command2 -is executed if and only if +is executed if, and only if, .I command1 returns a non-zero exit status. The return status of @@ -861,10 +869,10 @@ or zero if no commands were executed. \fBcase\fP \fIword\fP \fBin\fP [ [(] \fIpattern\fP [ \fB|\fP \fIpattern\fP ] \ ... ) \fIlist\fP ;; ] ... \fBesac\fP A \fBcase\fP command first expands \fIword\fP, and tries to match -it against each \fIpattern\fP in turn, using the same matching rules -as for pathname expansion (see -.B Pathname Expansion -below). +it against each \fIpattern\fP in turn, using the matching rules +described under +.B Pattern Matching +below. The \fIword\fP is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. @@ -955,7 +963,8 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable \fINAME\fP_PID. The \fBwait\fP @@ -1142,7 +1151,7 @@ question mark .TP .B \e\fInnn\fP the eight-bit character whose value is the octal value \fInnn\fP -(one to three digits) +(one to three octal digits) .TP .B \ex\fIHH\fP the eight-bit character whose value is the hexadecimal value \fIHH\fP @@ -1453,6 +1462,14 @@ This variable is read-only. Expands to the process ID of the current \fBbash\fP process. This differs from \fB$$\fP under certain circumstances, such as subshells that do not require \fBbash\fP to be re-initialized. +Assignments to +.SM +.B BASHPID +have no effect. +If +.B BASHPID +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_ALIASES An associative array variable whose members correspond to the internal @@ -1481,7 +1498,9 @@ only when in extended debugging mode (see the description of the .B extdebug option to the .B shopt -builtin below) +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script +may result in inconsistent values. .TP .B BASH_ARGV An array variable containing all of the parameters in the current \fBbash\fP @@ -1499,7 +1518,22 @@ only when in extended debugging mode .B extdebug option to the .B shopt -builtin below) +builtin below). +Setting \fBextdebug\fP after the shell has started to execute a script +may result in inconsistent values. +.TP +.B BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to +.BR $0 ; +see the description of special parameter 0 above). +Assignment to +.B BASH_ARGV0 +causes the value assigned to also be assigned to \fB$0\fP. +If +.B BASH_ARGV0 +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_CMDS An associative array variable whose members correspond to the internal @@ -1687,6 +1721,33 @@ If is unset, it loses its special properties, even if it is subsequently reset. .TP +.B EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP) as a floating point value +with micro-second granularity. +Assignments to +.SM +.B EPOCHREALTIME +are ignored. +If +.SM +.B EPOCHREALTIME +is unset, it loses its special properties, even if it is +subsequently reset. +.TP +.B EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see \fItime\fP\fR(3)\fP). +Assignments to +.SM +.B EPOCHSECONDS +are ignored. +If +.SM +.B EPOCHSECONDS +is unset, it loses its special properties, even if it is +subsequently reset. +.TP .B EUID Expands to the effective user ID of the current user, initialized at shell startup. This variable is readonly. @@ -2053,9 +2114,9 @@ nesting level. Function invocations that exceed this nesting level will cause the current command to abort. .TP .B GLOBIGNORE -A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by pathname expansion. -If a filename matched by a pathname expansion pattern also matches one +If a file name matched by a pathname expansion pattern also matches one of the patterns in .SM .BR GLOBIGNORE , @@ -2076,7 +2137,7 @@ A value of .I ignoreboth is shorthand for \fIignorespace\fP and \fIignoredups\fP. A value of -.IR erasedups +.I erasedups causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. @@ -2388,6 +2449,7 @@ The value of this parameter is expanded as with and the value is printed before each command .B bash displays during an execution trace. The first character of +the expanded value of .SM .B PS4 is replicated multiple times, as necessary, to indicate multiple @@ -2624,14 +2686,19 @@ special parameters \fI@\fP and \fI*\fP within double quotes. The .B unset builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP] -destroys the array element at index \fIsubscript\fP. +destroys the array element at index \fIsubscript\fP, +for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by pathname -expansion. +Unsetting the last element of an array variable does not unset the variable. \fBunset\fP \fIname\fP, where \fIname\fP is an array, or \fBunset\fP \fIname\fP[\fIsubscript\fP], where \fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array. .PP +When using a variable name with a subscript as an argument to a command, +such as with \fBunset\fP, without using the word expansion syntax +described above, the argument is subject to pathname expansion. +If pathname expansion is not desired, the argument should be quoted. +.PP The .BR declare , .BR local , @@ -2686,10 +2753,11 @@ original word are removed unless they have been quoted themselves (\fIquote removal\fP). .PP Only brace expansion, word splitting, and pathname expansion -can change the number of words of the expansion; other expansions +can increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP" +"\fB$@\fP" and "\fB${\fP\fIname\fP\fB[@]}\fP", +and, in most cases, \fB$*\fP and \fB${\fP\fIname\fP\fB[*]}\fP as explained above (see .SM .BR PARAMETERS ). @@ -2730,7 +2798,7 @@ lexicographically between \fIx\fP and \fIy\fP, inclusive, using the default C locale. Note that both \fIx\fP and \fIy\fP must be of the same type. When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. +each term. The default increment is 1 or \-1 as appropriate. .PP Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved @@ -2746,7 +2814,8 @@ Any incorrectly formed brace expansion is left unchanged. A \fB{\fP or \fB,\fP may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string \fB${\fP -is not considered eligible for brace expansion. +is not considered eligible for brace expansion, and inhibits brace +expansion until the closing \fB}\fP. .PP This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -2882,6 +2951,8 @@ it introduces a level of variable indirection. expanded and that value is used in the rest of the substitution, rather than the value of \fIparameter\fP itself. This is known as \fIindirect expansion\fP. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If \fIparameter\fP is a nameref, this expands to the name of the variable referenced by \fIparameter\fP instead of performing the complete indirect expansion. @@ -2975,7 +3046,7 @@ one space to avoid being confused with the \fB:-\fP expansion. If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional parameters beginning at \fIoffset\fP. A negative \fIoffset\fP is taken relative to one greater than the greatest -positional parameter, so an offset of -1 evaluates to the last positional +positional parameter, so an offset of \-1 evaluates to the last positional parameter. It is an expansion error if \fIlength\fP evaluates to a number less than zero. @@ -3056,7 +3127,12 @@ ${\fIparameter\fP\fB##\fP\fIword\fP} The .I word is expanded to produce a pattern just as in pathname -expansion. If the pattern matches the beginning of +expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. +If the pattern matches the beginning of the value of .IR parameter , then the result of the expansion is the expanded value of @@ -3087,7 +3163,11 @@ ${\fIparameter\fP\fB%%\fP\fIword\fP} .PD \fBRemove matching suffix pattern\fP. The \fIword\fP is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, and matched against the expanded value of +.I parameter +using the rules described under +.B Pattern Matching +below. If the pattern matches a trailing portion of the expanded value of .IR parameter , then the result of the expansion is the expanded value of @@ -3114,9 +3194,12 @@ array in turn, and the expansion is the resultant list. ${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP} \fBPattern substitution\fP. The \fIpattern\fP is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, \fIParameter\fP is expanded and the longest match of \fIpattern\fP against its value is replaced with \fIstring\fP. +The match is performed using the rules described under +.B Pattern Matching +below. If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are replaced with \fIstring\fP. Normally only the first match is replaced. If \fIpattern\fP begins with \fB#\fP, it must match at the beginning @@ -3202,7 +3285,7 @@ format that can be reused as input. .TP .B E The expansion is a string that is the value of \fIparameter\fP with backslash -escape sequences expanded as with the \fB$'...'\fP quoting mechansim. +escape sequences expanded as with the \fB$'...'\fP quoting mechanism. .TP .B P The expansion is a string that is the result of expanding the value of @@ -3232,7 +3315,7 @@ is an array variable subscripted with .B @ or .BR * , -the case modification operation is applied to each member of the +the operation is applied to each member of the array in turn, and the expansion is the resultant list. .sp 1 The result of the expansion is subject to word splitting and pathname @@ -3372,7 +3455,7 @@ are ignored at the beginning and end of the word, as long as the whitespace character is in the value of .SM -.BR IFS +.B IFS (an .SM .B IFS @@ -3455,11 +3538,22 @@ at the start of a name or immediately following a slash must be matched explicitly, unless the shell option .B dotglob is set. -When matching a pathname, the slash character must always be -matched explicitly. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. In other cases, the .B ``.'' character is not treated specially. +When matching a pathname, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below under +.SM +.BR "Pattern Matching" . See the description of .B shopt below under @@ -3476,12 +3570,12 @@ shell options. The .SM .B GLOBIGNORE -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a .IR pattern . If .SM .B GLOBIGNORE -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in .SM .B GLOBIGNORE is removed from the list of matches. @@ -3654,6 +3748,12 @@ Matches one of the given patterns Matches anything except one of the given patterns .RE .PD +.PP +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. .SS Quote Removal .PP After the preceding expansions, all unquoted occurrences of the @@ -3689,6 +3789,9 @@ than or equal to 10 and assign it to \fIvarname\fP. If >&- or <&- is preceded by {\fIvarname\fP}, the value of \fIvarname\fP defines the file descriptor to close. +If {\fIvarname\fP} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. .PP In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -3952,7 +4055,7 @@ A variant of here documents, the format is: .RE .PP The \fIword\fP undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, with a newline appended, @@ -4178,6 +4281,44 @@ Variables local to the function may be declared with the .B local builtin command. Ordinarily, variables and their values are shared between the function and its caller. +If a variable is declared \fBlocal\fP, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +.PP +The shell uses \fIdynamic scoping\fP to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. +.PP +For example, if a variable \fIvar\fP is declared as local in function +\fIfunc1\fP, and \fIfunc1\fP calls another function \fIfunc2\fP, +references to \fIvar\fP made from within \fIfunc2\fP will resolve to the +local variable \fIvar\fP from \fIfunc1\fP, shadowing any global variable +named \fIvar\fP. +.PP +The \fBunset\fP builtin also acts using the same dynamic scope: if a +variable is local to the current scope, \fBunset\fP will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. .PP The \fBFUNCNEST\fP variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function @@ -4222,10 +4363,6 @@ A function definition may be deleted using the \fB\-f\fP option to the .B unset builtin. -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell's children. -Care should be taken in cases where this may cause a problem. .PP Functions may be recursive. The \fBFUNCNEST\fP variable may be used to limit the depth of the @@ -4308,7 +4445,7 @@ A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the -\fIinteger\fP attribute using \fBdeclare -i\fP is assigned a value. +\fIinteger\fP attribute using \fBdeclare \-i\fP is assigned a value. A null value evaluates to 0. A shell variable need not have its \fIinteger\fP attribute turned on to be used in an expression. @@ -4501,6 +4638,14 @@ greater than, or greater than or equal to \fIarg2\fP, respectively. and .I arg2 may be positive or negative integers. +When used with the \fB[[\fP command, +.I Arg1 +and +.I Arg2 +are evaluated as arithmetic expressions (see +.SM +.B "ARITHMETIC EVALUATION" +above). .PD .SH "SIMPLE COMMAND EXPANSION" When a simple command is executed, the shell performs the following @@ -4573,9 +4718,10 @@ A full search of the directories in is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named \fBcommand_not_found_handle\fP. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127. .PP @@ -5030,6 +5176,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. +.PP +When the shell is waiting for a job or process using the \fBwait\fP +builtin, and job control is enabled, \fBwait\fP will return when the +job changes state. The \fB\-f\fP option will force \fBwait\fP to wait +until the job or process terminates before returning. .SH PROMPTING When executing interactively, .B bash @@ -5042,9 +5193,16 @@ when it is ready to read a command, and the secondary prompt when it needs more input to complete a command. .B Bash displays +.SM .B PS0 after it reads a command but before executing it. .B Bash +displays +.SM +.B PS4 +as described above +before tracing each command when the \fB\-x\fP option is enabled. +.B Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: .RS @@ -5497,13 +5655,13 @@ in emacs mode and to .B # in vi command mode. .TP -.B completion\-display\-width (-1) +.B completion\-display\-width (\-1) The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. -The default value is -1. +The default value is \-1. .TP .B completion\-ignore\-case (Off) If set to \fBOn\fP, readline performs filename matching and completion @@ -5557,6 +5715,16 @@ can be set to either or .BR vi . .TP +.B emacs\-mode\-string (@) +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP .B enable\-bracketed\-paste (Off) When set to \fBOn\fP, readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a @@ -5626,15 +5794,6 @@ the value of .B editing\-mode also affects the default keymap. .TP -.B emacs\-mode\-string (@) -This string is displayed immediately before the last line of the primary -prompt when emacs editing mode is active. The value is expanded like a -key binding, so the standard set of meta- and control prefixes and -backslash escape sequences is available. -Use the \e1 and \e2 escapes to begin and end sequences of -non-printing characters, which can be used to embed a terminal control -sequence into the mode string. -.TP .B keyseq\-timeout (500) Specifies the duration \fIreadline\fP will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using @@ -5712,9 +5871,9 @@ a common prefix) cause the matches to be listed immediately instead of ringing the bell. .TP .B show\-mode\-in\-prompt (Off) -If set to \fBOn\fP, add a character to the beginning of the prompt -indicating the editing mode: emacs (@), vi command (:) or vi -insertion (+). +If set to \fBOn\fP, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP). .TP .B skip\-completed\-text (Off) If set to \fBOn\fP, this alters the default completion behavior when @@ -5725,7 +5884,8 @@ after point in the word being completed, so portions of the word following the cursor are not duplicated. .TP .B vi\-cmd\-mode\-string ((cmd)) -This string is displayed immediately before the last line of the primary +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -5735,7 +5895,8 @@ non-printing characters, which can be used to embed a terminal control sequence into the mode string. .TP .B vi\-ins\-mode\-string ((ins)) -This string is displayed immediately before the last line of the primary +If the \fIshow\-mode\-in\-prompt\fP variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -5760,8 +5921,9 @@ The .B $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +readline. The text of the test, after any comparison operator, + extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. .RS .IP \fBmode\fP The \fBmode=\fP form of the \fB$if\fP directive is used to test @@ -5783,6 +5945,26 @@ to match both and .IR sun\-cmd , for instance. +.IP \fBversion\fP +The \fBversion\fP test may be used to perform comparisons against +specific readline versions. +The \fBversion\fP expands to the current readline version. +The set of comparison operators includes +.BR = , +(and +.BR == ), +.BR != , +.BR <= , +.BR >= , +.BR < , +and +.BR > . +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., \fB7.1\fP). If the minor version is omitted, it +is assumed to be \fB0\fP. +The operator may be separated from the string \fBversion\fP +and from the version number argument by whitespace. .IP \fBapplication\fP The \fBapplication\fP construct is used to include application-specific settings. Each program using the readline @@ -5800,6 +5982,15 @@ key sequence that quotes the current or previous word in \fBbash\fP: \fB$endif\fP .fi .RE +.IP \fIvariable\fP +The \fIvariable\fP construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values \fIon\fP and \fIoff\fP. .RE .IP \fB$endif\fP This command, as seen in the previous example, terminates an @@ -5901,6 +6092,19 @@ Words are delimited by non-quoted shell metacharacters. Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. .TP +.B previous\-screen\-line +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +.TP +.B next\-screen\-line +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. +.TP .B clear\-screen (C\-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the @@ -5962,6 +6166,19 @@ Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. .TP +.B history\-substring\-search\-backward +Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the \fIpoint\fP). +The search string may match anywhere in a history line. +This is a non-incremental search. +.TP +.B history\-substring\-search\-forward +Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search. +.TP .B yank\-nth\-arg (M\-C\-y) Insert the first argument to the previous command (usually the second word on the previous line) at point. @@ -6024,10 +6241,11 @@ A synonym for \fByank\-last\-arg\fP. .TP .B operate\-and\-get\-next (C\-o) Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. .TP -.B edit\-and\-execute\-command (C\-xC\-e) +.B edit\-and\-execute\-command (C\-x C\-e) Invoke an editor on the current command line, and execute the result as shell commands. \fBBash\fP attempts to invoke @@ -6342,9 +6560,10 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of .BR bell\-style ). .TP -.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...) -If the metafied character \fIx\fP is lowercase, run the command -that is bound to the corresponding uppercase character. +.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...) +If the metafied character \fIx\fP is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if \fIx\fP is already lowercase. .TP .B prefix\-meta (ESC) Metafy the next character typed. @@ -6608,7 +6827,7 @@ of the setting of the \fBmark-symlinked\-directories\fP readline variable. .PP There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified -with \fBcomplete -D\fP. +with \fBcomplete \-D\fP. It's possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes @@ -6679,7 +6898,7 @@ If \fBHISTFILESIZE\fP is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately -by a digit are interpreted as timestamps for the preceding history line. +by a digit are interpreted as timestamps for the following history line. These timestamps are optionally displayed depending on the value of the .SM .B HISTTIMEFORMAT @@ -6765,7 +6984,7 @@ for information on setting and unsetting shell options. .PP The shell supports a history expansion feature that is similar to the history expansion in -.BR csh. +.BR csh . This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be disabled using the @@ -6784,7 +7003,9 @@ arguments to a previous command into the current input line, or fix errors in previous commands quickly. .PP History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually without taking quoting on previous lines into +account. It takes place in two parts. The first is to determine which line from the history list to use during substitution. @@ -7045,7 +7266,7 @@ section as accepting options preceded by accepts .B \-\- to signify the end of the options. -The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins +The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP/\fB[\fP builtins do not accept options and do not treat \fB\-\-\fP specially. The \fBexit\fP, \fBlogout\fP, \fBreturn\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP, @@ -7609,6 +7830,12 @@ The \fIwordlist\fP is split using the characters in the .SM .B IFS special variable as delimiters, and each resultant word is expanded. +Shell quoting is honored within \fIwordlist\fP, +in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of +.SM +.BR IFS . The possible completions are the members of the resultant list which match the word being completed. .TP 8 @@ -8020,6 +8247,7 @@ unless the shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if \fBexec\fP fails. If .I command is not specified, any redirections take effect in the current shell, @@ -8089,7 +8317,7 @@ with that string) or as a number (an index into the history list, where a negative number is used as an offset from the current command number). If .I last -is not specified it is set to +is not specified, it is set to the current command for listing (so that .if n ``fc \-l \-10'' .if t \f(CWfc \-l \-10\fP @@ -8098,7 +8326,7 @@ prints the last 10 commands) and to otherwise. If .I first -is not specified it is set to the previous +is not specified, it is set to the previous command for editing and \-16 for listing. .sp 1 The @@ -8134,7 +8362,7 @@ echoed and executed. .sp 1 In the second form, \fIcommand\fP is re-executed after each instance of \fIpat\fP is replaced by \fIrep\fP. -\fICommand\fP is intepreted the same as \fIfirst\fP above. +\fICommand\fP is interpreted the same as \fIfirst\fP above. A useful alias to use with this is .if n ``r="fc -s"'', .if t \f(CWr='fc \-s'\fP, @@ -8353,6 +8581,8 @@ The return status is 0 unless no command matches .TP \fBhistory \-d\fP \fIoffset\fP .TP +\fBhistory \-d\fP \fIstart\fP\-\fIend\fP +.TP \fBhistory\fP \fB\-anrw\fP [\fIfilename\fP] .TP \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] @@ -8389,6 +8619,15 @@ Clear the history list by deleting all the entries. .TP \fB\-d\fP \fIoffset\fP Delete the history entry at position \fIoffset\fP. +If \fIoffset\fP is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of \-1 refers to the current +\fBhistory -d\fP command. +.TP +\fB\-d\fP \fIstart\fP\-\fIend\fP +Delete the history entries between positions \fIstart\fP and \fIend\fP, +inclusive. Positive and negative values for \fIstart\fP and \fIend\fP +are interpreted as described above. .TP .B \-a Append the ``new'' history lines to the history file. @@ -8591,7 +8830,7 @@ Exit a login shell. Read lines from the standard input into the indexed array variable .IR array , or from file descriptor -.IR fd +.I fd if the .B \-u option is supplied. @@ -8606,6 +8845,8 @@ Options, if supplied, have the following meanings: .B \-d The first character of \fIdelim\fP is used to terminate each input line, rather than newline. +If \fIdelim\fP is the empty string, \fBmapfile\fP will terminate a line +when it reads a NUL character. .TP .B \-n Copy at most @@ -8738,9 +8979,9 @@ causes \fBprintf\fP to output the date-time string resulting from using \fIdatefmt\fP as a format string for \fIstrftime\fP(3). The corresponding \fIargument\fP is an integer representing the number of seconds since the epoch. -Two special argument values may be used: -1 represents the current -time, and -2 represents the time the shell was invoked. -If no argument is specified, conversion behaves as if -1 had been given. +Two special argument values may be used: \-1 represents the current +time, and \-2 represents the time the shell was invoked. +If no argument is specified, conversion behaves as if \-1 had been given. This is an exception to the usual \fBprintf\fP behavior. .PD .PP @@ -8865,6 +9106,8 @@ Other \fIname\fP arguments are ignored. .B \-d \fIdelim\fP The first character of \fIdelim\fP is used to terminate the input line, rather than newline. +If \fIdelim\fP is the empty string, \fBread\fP will terminate a line +when it reads a NUL character. .TP .B \-e If the standard input @@ -8875,7 +9118,7 @@ is coming from a terminal, .B READLINE above) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion. .TP .B \-i \fItext\fP If @@ -8996,7 +9239,7 @@ is omitted, the return status is that of the last command executed in the function body. If \fBreturn\fP is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command +If \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command used to determine the status is the last command executed by the trap handler before \fBreturn\fP was invoked. If @@ -9426,7 +9669,8 @@ option to the \fBset\fP builtin command. With no options, or with the .B \-p option, a list of all settable options is displayed, with -an indication of whether or not each is set. +an indication of whether or not each is set; +if \fIoptnames\fP are supplied, the output is restricted to those options. The \fB\-p\fP option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -9475,6 +9719,11 @@ The list of \fBshopt\fP options is: .if n .sp 1v .PD 0 .TP 8 +.B assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation and while executing +builtins that can perform variable assignments. +.TP 8 .B autocd If set, a command name that is the name of a directory is executed as if it were the argument to the \fBcd\fP command. @@ -9513,8 +9762,8 @@ above). The shell always postpones exiting if any jobs are stopped. .TP 8 .B checkwinsize -If set, \fBbash\fP checks the window size after each command -and, if necessary, updates the values of +If set, \fBbash\fP checks the window size after each external (non-builtin) +command and, if necessary, updates the values of .SM .B LINES and @@ -9527,6 +9776,10 @@ If set, attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +.SM +.BR HISTORY . .TP 8 .B compat31 If set, @@ -9588,6 +9841,12 @@ and does not reset the loop state when a shell function is executed (this allows \fBbreak\fP or \fBcontinue\fP in a shell function to affect loops in the caller's context). .TP 8 +.B compat44 +If set, +.B bash +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled. +.TP 8 .B complete_fullquote If set, .B bash @@ -9628,6 +9887,13 @@ If set, .B bash includes filenames beginning with a `.' in the results of pathname expansion. +The filenames +.B ``.'' +and +.B ``..'' +must always be matched explicitly, even if +.B dotglob +is set. .TP 8 .B execfail If set, a non-interactive shell will not exit if @@ -9797,6 +10063,11 @@ If set, and the option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. .TP 8 +.B localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited. +.TP 8 .B login_shell The shell sets this option if it is started as a login shell (see .SM @@ -10410,20 +10681,23 @@ subsequently reset. The exit status is true unless a .I name is readonly. .TP -\fBwait\fP [\fB\-n\fP] [\fIn ...\fP] +\fBwait\fP [\fB\-fn\fP] [\fIid ...\fP] Wait for each specified child process and return its termination status. Each -.I n +.I id may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If -.I n +.I id is not given, all currently active child processes are waited for, and the return status is zero. If the \fB\-n\fP option is supplied, \fBwait\fP waits for any job to terminate and returns its exit status. +If the \fB\-f\fP option is supplied, and job control is enabled, +\fBwait\fP forces \fIid\fP to terminate before returning its status, +instead of returning when it changes status. If -.I n +.I id specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last process or job waited for. diff --git a/doc/bash.html b/doc/bash.html index 983284e84..54b42fec7 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2016 August 26BASH(1) +BASH(1)2018 March 15BASH(1)

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

COPYRIGHT

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

DESCRIPTION

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

OPTIONS

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

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

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

Lists

@@ -855,7 +862,7 @@ An AND list has the form is executed if, and only if, command1 -returns an exit status of zero. +returns an exit status of zero (success).

An OR list has the form @@ -871,7 +878,7 @@ An OR list has the form command2 -is executed if and only if +is executed if, and only if, command1 returns a non-zero exit status. @@ -1110,11 +1117,11 @@ or zero if no commands were executed.

case word in [ [(] pattern [ | pattern ]
A case command first expands word, and tries to match -it against each pattern in turn, using the same matching rules -as for pathname expansion (see -Pathname Expansion +it against each pattern in turn, using the matching rules +described under +Pattern Matching -below). +below. The word is expanded using tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. @@ -1217,7 +1224,8 @@ command (see below). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. The wait @@ -1463,7 +1471,7 @@ question mark
the eight-bit character whose value is the octal value nnn -(one to three digits) +(one to three octal digits)
\xHH
@@ -1868,6 +1876,16 @@ This variable is read-only. Expands to the process ID of the current bash process. This differs from $$ under certain circumstances, such as subshells that do not require bash to be re-initialized. +Assignments to +BASHPID + + +have no effect. +If +BASHPID + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_ALIASES
@@ -1903,7 +1921,9 @@ only when in extended debugging mode (see the description of the option to the shopt -builtin below) +builtin below). +Setting extdebug after the shell has started to execute a script +may result in inconsistent values.
BASH_ARGV
@@ -1926,7 +1946,26 @@ only when in extended debugging mode option to the shopt -builtin below) +builtin below). +Setting extdebug after the shell has started to execute a script +may result in inconsistent values. +
BASH_ARGV0 + +
+When referenced, this variable expands to the name of the shell or shell +script (identical to +$0; + +see the description of special parameter 0 above). +Assignment to +BASH_ARGV0 + +causes the value assigned to also be assigned to $0. +If +BASH_ARGV0 + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_CMDS
@@ -2152,6 +2191,39 @@ Assignment to this variable will not change the current directory. If DIRSTACK + +is unset, it loses its special properties, even if it is +subsequently reset. +
EPOCHREALTIME + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)) as a floating point value +with micro-second granularity. +Assignments to +EPOCHREALTIME + + +are ignored. +If +EPOCHREALTIME + + +is unset, it loses its special properties, even if it is +subsequently reset. +
EPOCHSECONDS + +
+Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see time(3)). +Assignments to +EPOCHSECONDS + + +are ignored. +If +EPOCHSECONDS + is unset, it loses its special properties, even if it is subsequently reset. @@ -2612,9 +2684,9 @@ will cause the current command to abort.
GLOBIGNORE
-A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by pathname expansion. -If a filename matched by a pathname expansion pattern also matches one +If a file name matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, @@ -3035,6 +3107,7 @@ and the value is printed before each command bash displays during an execution trace. The first character of +the expanded value of PS4 @@ -3327,15 +3400,21 @@ The unset builtin is used to destroy arrays. unset name[subscript] -destroys the array element at index subscript. +destroys the array element at index subscript, +for both indexed and associative arrays. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by pathname -expansion. +Unsetting the last element of an array variable does not unset the variable. unset name, where name is an array, or unset name[subscript], where subscript is * or @, removes the entire array.

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

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

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

This construct is typically used as shorthand when the common @@ -3663,6 +3744,8 @@ it introduces a level of variable indirection. expanded and that value is used in the rest of the substitution, rather than the value of parameter itself. This is known as indirect expansion. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If parameter is a nameref, this expands to the name of the variable referenced by parameter instead of performing the complete indirect expansion. @@ -3848,7 +3931,14 @@ The word is expanded to produce a pattern just as in pathname -expansion. If the pattern matches the beginning of +expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. +If the pattern matches the beginning of the value of parameter, @@ -3885,7 +3975,13 @@ array in turn, and the expansion is the resultant list. Remove matching suffix pattern. The word is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, and matched against the expanded value of +parameter + +using the rules described under +Pattern Matching + +below. If the pattern matches a trailing portion of the expanded value of parameter, @@ -3919,9 +4015,13 @@ array in turn, and the expansion is the resultant list.

${parameter/pattern/string}
Pattern substitution. The pattern is expanded to produce a pattern just as in -pathname expansion. +pathname expansion, Parameter is expanded and the longest match of pattern against its value is replaced with string. +The match is performed using the rules described under +Pattern Matching + +below. If pattern begins with /, all matches of pattern are replaced with string. Normally only the first match is replaced. If pattern begins with #, it must match at the beginning @@ -4018,7 +4118,7 @@ format that can be reused as input.
The expansion is a string that is the value of parameter with backslash -escape sequences expanded as with the $'...' quoting mechansim. +escape sequences expanded as with the $'...' quoting mechanism.
P
@@ -4059,7 +4159,7 @@ is an array variable subscripted with or *, -the case modification operation is applied to each member of the +the operation is applied to each member of the array in turn, and the expansion is the resultant list.

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

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

Quote Removal

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

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

The word undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, with a newline appended, @@ -5339,6 +5464,47 @@ Variables local to the function may be declared with the builtin command. Ordinarily, variables and their values are shared between the function and its caller. +If a variable is declared local, the variable's visible scope +is restricted to that function and its children (including the functions +it calls). +Local variables "shadow" variables with the same name declared at +previous scopes. +For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. +

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

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

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

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

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

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

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

PROMPTING

@@ -6445,11 +6625,20 @@ when it needs more input to complete a command. Bash displays -PS0 +PS0 + after it reads a command but before executing it. Bash +displays +PS4 + + +as described above +before tracing each command when the -x option is enabled. +Bash + allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
@@ -7134,6 +7323,17 @@ can be set to either or vi. +
emacs-mode-string (@) + +
+If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string.
enable-bracketed-paste (Off)
@@ -7217,16 +7417,6 @@ the value of editing-mode also affects the default keymap. -
emacs-mode-string (@) - -
-This string is displayed immediately before the last line of the primary -prompt when emacs editing mode is active. The value is expanded like a -key binding, so the standard set of meta- and control prefixes and -backslash escape sequences is available. -Use the \1 and \2 escapes to begin and end sequences of -non-printing characters, which can be used to embed a terminal control -sequence into the mode string.
keyseq-timeout (500)
@@ -7320,9 +7510,9 @@ of ringing the bell.
show-mode-in-prompt (Off)
-If set to On, add a character to the beginning of the prompt -indicating the editing mode: emacs (@), vi command (:) or vi -insertion (+). +If set to On, add a string to the beginning of the prompt +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable (e.g., emacs-mode-string).
skip-completed-text (Off)
@@ -7335,7 +7525,8 @@ following the cursor are not duplicated.
vi-cmd-mode-string ((cmd))
-This string is displayed immediately before the last line of the primary +If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -7346,7 +7537,8 @@ sequence into the mode string.
vi-ins-mode-string ((ins))
-This string is displayed immediately before the last line of the primary +If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -7378,8 +7570,9 @@ The construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +readline. The text of the test, after any comparison operator, +
 extends to the end of the line; +unless otherwise noted, no characters are required to isolate it.
mode
@@ -7406,6 +7599,33 @@ and sun-cmd, for instance. +
version
+The version test may be used to perform comparisons against +specific readline versions. +The version expands to the current readline version. +The set of comparison operators includes +=, + +(and +==), + +!=, + +<=, + +>=, + +<, + +and +>. + +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., 7.1). If the minor version is omitted, it +is assumed to be 0. +The operator may be separated from the string version +and from the version number argument by whitespace.
application
The application construct is used to include application-specific settings. Each program using the readline @@ -7425,6 +7645,15 @@ key sequence that quotes the current or previous word in bash:
+
variable
+The variable construct provides simple equality tests for readline +variables and values. +The permitted comparison operators are =, ==, and !=. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values on and off.
$endif
@@ -7554,6 +7783,21 @@ Words are delimited by non-quoted shell metacharacters.
Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +
previous-screen-line + +
+Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. +
next-screen-line + +
+Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width.
clear-screen (C-l)
@@ -7634,6 +7878,21 @@ This is a non-incremental search. Search backward through the history for the string of characters between the start of the current line and the point. This is a non-incremental search. +
history-substring-search-backward + +
+Search backward through the history for the string of characters +between the start of the current line and the current cursor +position (the point). +The search string may match anywhere in a history line. +This is a non-incremental search. +
history-substring-search-forward + +
+Search forward through the history for the string of characters +between the start of the current line and the point. +The search string may match anywhere in a history line. +This is a non-incremental search.
yank-nth-arg (M-C-y)
@@ -7710,9 +7969,10 @@ A synonym for yank-last-arg.
Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. -
edit-and-execute-command (C-xC-e) +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. +
edit-and-execute-command (C-x C-e)
Invoke an editor on the current command line, and execute the result as shell @@ -8124,11 +8384,12 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of bell-style). -
do-uppercase-version (M-a, M-b, M-x, ...) +
do-lowercase-version (M-A, M-B, M-x, ...)
-If the metafied character x is lowercase, run the command -that is bound to the corresponding uppercase character. +If the metafied character x is uppercase, run the command +that is bound to the corresponding metafied lowercase character. +The behavior is undefined if x is already lowercase.
prefix-meta (ESC)
@@ -8542,7 +8803,7 @@ If HISTFILESIZE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. When the history file is read, lines beginning with the history comment character followed immediately -by a digit are interpreted as timestamps for the preceding history line. +by a digit are interpreted as timestamps for the following history line. These timestamps are optionally displayed depending on the value of the HISTTIMEFORMAT @@ -8652,7 +8913,7 @@ for information on setting and unsetting shell options. The shell supports a history expansion feature that is similar to the history expansion in -csh. +csh. This section describes what syntax features are available. This feature is enabled by default for interactive shells, and can be @@ -8677,7 +8938,9 @@ fix errors in previous commands quickly.

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

-X filterpat
@@ -10209,6 +10479,7 @@ unless the shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if exec fails. If command @@ -10292,7 +10563,7 @@ where a negative number is used as an offset from the current command number). If last -is not specified it is set to +is not specified, it is set to the current command for listing (so that fc -l -10 @@ -10303,7 +10574,7 @@ otherwise. If first -is not specified it is set to the previous +is not specified, it is set to the previous command for editing and -16 for listing.

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

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

history -c
history -d offset
+
history -d start-end
history -anrw [filename]
history -p arg [arg ...]
history -s arg [arg ...]
@@ -10661,6 +10933,14 @@ is used. Options, if supplied, have the following meanings: Clear the history list by deleting all the entries.
-d offset
Delete the history entry at position offset. +If offset is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of -1 refers to the current +history -d command. +
-d start-end
+Delete the history entries between positions start and end, +inclusive. Positive and negative values for start and end +are interpreted as described above.
-a
@@ -10935,6 +11215,8 @@ Options, if supplied, have the following meanings:
The first character of delim is used to terminate each input line, rather than newline. +If delim is the empty string, mapfile will terminate a line +when it reads a NUL character.
-n
@@ -11250,6 +11532,8 @@ Other name arguments are ignored.
The first character of delim is used to terminate the input line, rather than newline. +If delim is the empty string, read will terminate a line +when it reads a NUL character.
-e
@@ -11263,7 +11547,7 @@ is coming from a terminal, above) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion.
-i text
@@ -11409,7 +11693,7 @@ is omitted, the return status is that of the last command executed in the function body. If return is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if return is executed during a DEBUG trap, the last command +If return is executed during a DEBUG trap, the last command used to determine the status is the last command executed by the trap handler before return was invoked. If @@ -11970,7 +12254,8 @@ With no options, or with the -p option, a list of all settable options is displayed, with -an indication of whether or not each is set. +an indication of whether or not each is set; +if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -12035,6 +12320,12 @@ The list of shopt options is:
+
assoc_expand_once + +
+If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation and while executing +builtins that can perform variable assignments.
autocd
@@ -12083,8 +12374,8 @@ postpones exiting if any jobs are stopped.
checkwinsize
-If set, bash checks the window size after each command -and, if necessary, updates the values of +If set, bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of LINES @@ -12101,6 +12392,11 @@ If set, attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled, as described above under +HISTORY. + +
compat31
@@ -12175,6 +12471,14 @@ to make them fatal errors that cause the shell to exit), and does not reset the loop state when a shell function is executed (this allows break or continue in a shell function to affect loops in the caller's context). +
compat44 + +
+If set, +bash + +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled.
complete_fullquote
@@ -12226,6 +12530,16 @@ If set, includes filenames beginning with a `.' in the results of pathname expansion. +The filenames +``.'' + +and +``..'' + +must always be matched explicitly, even if +dotglob + +is set.
execfail
@@ -12441,6 +12755,12 @@ If set, and the option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. +
localvar_inherit + +
+If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The nameref attribute is not inherited.
login_shell
@@ -13221,22 +13541,25 @@ subsequently reset. The exit status is true unless a name is readonly. -
wait [-n] [n ...]
+
wait [-fn] [id ...]
Wait for each specified child process and return its termination status. Each -n +id may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for. If -n +id is not given, all currently active child processes are waited for, and the return status is zero. If the -n option is supplied, wait waits for any job to terminate and returns its exit status. +If the -f option is supplied, and job control is enabled, +wait forces id to terminate before returning its status, +instead of returning when it changes status. If -n +id specifies a non-existent process or job, the return status is 127. Otherwise, the return status is the exit status of the last @@ -13529,7 +13852,7 @@ There may be only one active coprocess at a time.
-
GNU Bash 4.42016 August 26BASH(1) +GNU Bash 5.02018 March 15BASH(1)

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

This document was created by man2html from bash.1.
-Time: 31 August 2016 10:24:30 EDT +Time: 19 March 2018 09:43:32 EDT diff --git a/doc/bash.info b/doc/bash.info index fac678652..9a4edb080 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,13 +1,13 @@ -This is bash.info, produced by makeinfo version 6.1 from +This is bash.info, produced by makeinfo version 6.5 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). +Bash shell (version 5.0, 15 March 2018). - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +27,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). The Bash home page is +Bash shell (version 5.0, 15 March 2018). The Bash home page is . - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -451,7 +451,7 @@ decoded as follows: question mark '\NNN' the eight-bit character whose value is the octal value NNN (one to - three digits) + three octal digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -586,16 +586,20 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell (*note -Command Execution Environment::). The exit status of a pipeline is the -exit status of the last command in the pipeline, unless the 'pipefail' -option is enabled (*note The Set Builtin::). If 'pipefail' is enabled, -the pipeline's return status is the value of the last (rightmost) -command to exit with a non-zero status, or zero if all commands exit -successfully. If the reserved word '!' precedes the pipeline, the exit -status is the logical negation of the exit status as described above. -The shell waits for all commands in the pipeline to terminate before -returning a value. + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). If 'pipefail' is enabled, the pipeline's return status is +the value of the last (rightmost) command to exit with a non-zero +status, or zero if all commands exit successfully. If the reserved word +'!' precedes the pipeline, the exit status is the logical negation of +the exit status as described above. The shell waits for all commands in +the pipeline to terminate before returning a value.  File: bash.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands @@ -633,7 +637,7 @@ executed with left associativity. COMMAND1 && COMMAND2 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of -zero. +zero (success). An OR list has the form COMMAND1 || COMMAND2 @@ -656,11 +660,12 @@ File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. -Compound commands are the shell programming constructs. Each construct -begins with a reserved word or control operator and is terminated by a -corresponding reserved word or operator. Any redirections (*note -Redirections::) associated with a compound command apply to all commands -within that compound command unless explicitly overridden. +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -705,14 +710,16 @@ syntax, it may be replaced with one or more newlines. for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done - Expand WORDS, and execute COMMANDS once for each member in the - resultant list, with NAME bound to the current member. If 'in - WORDS' is not present, the 'for' command executes the COMMANDS once - for each positional parameter that is set, as if 'in "$@"' had been - specified (*note Special Parameters::). The return status is the - exit status of the last command that executes. If there are no - items in the expansion of WORDS, no commands are executed, and the - return status is zero. + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. An alternate form of the 'for' command is also supported: @@ -764,20 +771,21 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac 'case' will selectively execute the COMMAND-LIST corresponding to - the first PATTERN that matches WORD. If the 'nocasematch' shell - option (see the description of 'shopt' in *note The Shopt - Builtin::) is enabled, the match is performed without regard to the - case of alphabetic characters. The '|' is used to separate - multiple patterns, and the ')' operator terminates a pattern list. - A list of patterns and an associated command-list is known as a - CLAUSE. + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. Each clause must be terminated with ';;', ';&', or ';;&'. The WORD undergoes tilde expansion, parameter expansion, command - substitution, arithmetic expansion, and quote removal before - matching is attempted. Each PATTERN undergoes tilde expansion, - parameter expansion, command substitution, and arithmetic - expansion. + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -904,7 +912,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: variable LINE) if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of 'a', then a 'b': - [[ $line =~ [[:space:]]*(a)?b ]] + [[ $line =~ [[:space:]]*?(a)b ]] That means values like 'aab' and ' aaaaaab' will match, as will a line containing a 'b' anywhere in its value. @@ -917,7 +925,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: - pattern='[[:space:]]*(a)?b' + pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] If you want to match a character that's special to the regular @@ -1030,7 +1038,8 @@ a file descriptor in the executing shell, and that file descriptor is assigned to 'NAME'[1]. This pipe is established before any redirections specified by the command (*note Redirections::). The file descriptors can be utilized as arguments to shell commands and redirections using -standard word expansions. The file descriptors are not available in +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is @@ -1119,7 +1128,7 @@ first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to 'cat file | bash'. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, -and feed that list of commnds to a shell. Parallel can speed this up. +and feed that list of commands to a shell. Parallel can speed this up. Assuming that 'file' contains a list of shell commands, one per line, parallel -j 10 < file @@ -1210,7 +1219,57 @@ last command executed before the 'return'. Variables local to the function may be declared with the 'local' builtin. These variables are visible only to the function and the -commands it invokes. +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The @@ -1218,10 +1277,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::). The (and optionally the source file and line number, if the 'extdebug' shell option is enabled). Functions may be exported so that subshells automatically have them defined with the '-f' option to the 'export' -builtin (*note Bourne Shell Builtins::). Note that shell functions and -variables with the same name may result in multiple identically-named -entries in the environment passed to the shell's children. Care should -be taken in cases where this may cause a problem. +builtin (*note Bourne Shell Builtins::). Functions may be recursive. The 'FUNCNEST' variable may be used to limit the depth of the function call stack and restrict the number of @@ -1447,10 +1503,10 @@ original word are removed unless they have been quoted themselves (QUOTE REMOVAL). Only brace expansion, word splitting, and filename expansion can -change the number of words of the expansion; other expansions expand a +increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the -expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' -(*note Arrays::). +expansions of '"$@"' and '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). After all expansions, 'quote removal' (*note Quote Removal::) is performed. @@ -1492,9 +1548,7 @@ each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation -to the context of the expansion or the text between the braces. To -avoid conflicts with parameter expansion, the string '${' is not -considered eligible for brace expansion. +to the context of the expansion or the text between the braces. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence @@ -1503,7 +1557,7 @@ expression. Any incorrectly formed brace expansion is left unchanged. A { or ',' may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string '${' is not considered eligible for -brace expansion. +brace expansion, and inhibits brace expansion until the closing '}'.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1603,12 +1657,14 @@ PARAMETER is not a NAMEREF, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of PARAMETER as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the -value of PARAMETER itself. This is known as 'indirect expansion'. If -PARAMETER is a nameref, this expands to the name of the variable -referenced by PARAMETER instead of performing the complete indirect -expansion. The exceptions to this are the expansions of ${!PREFIX*} and -${!NAME[@]} described below. The exclamation point must immediately -follow the left brace in order to introduce indirection. +value of PARAMETER itself. This is known as 'indirect expansion'. The +value is subject to tilde expansion, parameter expansion, command +substitution, and arithmetic expansion. If PARAMETER is a nameref, this +expands to the name of the variable referenced by PARAMETER instead of +performing the complete indirect expansion. The exceptions to this are +the expansions of ${!PREFIX*} and ${!NAME[@]} described below. The +exclamation point must immediately follow the left brace in order to +introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1668,7 +1724,7 @@ omitted, the operator tests only for existence. $ echo ${string:7} 7890abcdefgh $ echo ${string:7:0} - + $ echo ${string:7:2} 78 $ echo ${string:7:-2} @@ -1676,7 +1732,7 @@ omitted, the operator tests only for existence. $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} - + $ echo ${string: -7:2} bc $ echo ${string: -7:-2} @@ -1685,7 +1741,7 @@ omitted, the operator tests only for existence. $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} - + $ echo ${1:7:2} 78 $ echo ${1:7:-2} @@ -1693,7 +1749,7 @@ omitted, the operator tests only for existence. $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} - + $ echo ${1: -7:2} bc $ echo ${1: -7:-2} @@ -1702,7 +1758,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} - + $ echo ${array[0]:7:2} 78 $ echo ${array[0]:7:-2} @@ -1710,7 +1766,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7} bcdefgh $ echo ${array[0]: -7:0} - + $ echo ${array[0]: -7:2} bc $ echo ${array[0]: -7:-2} @@ -1729,7 +1785,7 @@ omitted, the operator tests only for existence. $ echo ${@:7} 7 8 9 0 a b c d e f g h $ echo ${@:7:0} - + $ echo ${@:7:2} 7 8 $ echo ${@:7:-2} @@ -1741,7 +1797,7 @@ omitted, the operator tests only for existence. $ echo ${@:0:2} ./bash 1 $ echo ${@: -7:0} - + If PARAMETER is an indexed array name subscripted by '@' or '*', the result is the LENGTH members of the array beginning with @@ -1766,7 +1822,7 @@ omitted, the operator tests only for existence. $ echo ${array[@]:0:2} 0 1 $ echo ${array[@]: -7:0} - + Substring expansion applied to an associative array produces undefined results. @@ -1803,22 +1859,23 @@ omitted, the operator tests only for existence. '${PARAMETER#WORD}' '${PARAMETER##WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion (*note Filename Expansion::). If the pattern matches the - beginning of the expanded value of PARAMETER, then the result of - the expansion is the expanded value of PARAMETER with the shortest - matching pattern (the '#' case) or the longest matching pattern - (the '##' case) deleted. If PARAMETER is '@' or '*', the pattern - removal operation is applied to each positional parameter in turn, - and the expansion is the resultant list. If PARAMETER is an array - variable subscripted with '@' or '*', the pattern removal operation - is applied to each member of the array in turn, and the expansion - is the resultant list. + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning of the expanded value of PARAMETER, + then the result of the expansion is the expanded value of PARAMETER + with the shortest matching pattern (the '#' case) or the longest + matching pattern (the '##' case) deleted. If PARAMETER is '@' or + '*', the pattern removal operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + pattern removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. '${PARAMETER%WORD}' '${PARAMETER%%WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion. If the pattern matches a trailing portion of the + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches If the pattern matches a trailing portion of the expanded value of PARAMETER, then the result of the expansion is the value of PARAMETER with the shortest matching pattern (the '%' case) or the longest matching pattern (the '%%' case) deleted. If @@ -1832,21 +1889,23 @@ omitted, the operator tests only for existence. The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. If PATTERN begins with - '/', all matches of PATTERN are replaced with STRING. Normally - only the first match is replaced. If PATTERN begins with '#', it - must match at the beginning of the expanded value of PARAMETER. If - PATTERN begins with '%', it must match at the end of the expanded - value of PARAMETER. If STRING is null, matches of PATTERN are - deleted and the '/' following PATTERN may be omitted. If the - 'nocasematch' shell option (see the description of 'shopt' in *note - The Shopt Builtin::) is enabled, the match is performed without - regard to the case of alphabetic characters. If PARAMETER is '@' - or '*', the substitution operation is applied to each positional - parameter in turn, and the expansion is the resultant list. If - PARAMETER is an array variable subscripted with '@' or '*', the - substitution operation is applied to each member of the array in - turn, and the expansion is the resultant list. + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN begins with '/', all matches of PATTERN are replaced + with STRING. Normally only the first match is replaced. If + PATTERN begins with '#', it must match at the beginning of the + expanded value of PARAMETER. If PATTERN begins with '%', it must + match at the end of the expanded value of PARAMETER. If STRING is + null, matches of PATTERN are deleted and the '/' following PATTERN + may be omitted. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. If PARAMETER is '@' or '*', the substitution operation + is applied to each positional parameter in turn, and the expansion + is the resultant list. If PARAMETER is an array variable + subscripted with '@' or '*', the substitution operation is applied + to each member of the array in turn, and the expansion is the + resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1881,7 +1940,7 @@ omitted, the operator tests only for existence. 'E' The expansion is a string that is the value of PARAMETER with backslash escape sequences expanded as with the '$'...'' - quoting mechansim. + quoting mechanism. 'P' The expansion is a string that is the result of expanding the value of PARAMETER as if it were a prompt string (*note @@ -2046,17 +2105,22 @@ performed without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. When matching a -filename, the slash character must always be matched explicitly. In -other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of -filenames matching a pattern. If 'GLOBIGNORE' is set, each matching -filename that also matches one of the patterns in 'GLOBIGNORE' is +file names matching a pattern. If 'GLOBIGNORE' is set, each matching +file name that also matches one of the patterns in 'GLOBIGNORE' is removed from the list of matches. If the 'nocaseglob' option is set, the matching against the patterns in 'GLOBIGNORE' is performed without regard to case. The filenames '.' and '..' are always ignored when @@ -2149,6 +2213,12 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. +  File: bash.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions @@ -2180,7 +2250,9 @@ instead be preceded by a word of the form {VARNAME}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file -descriptor to close. +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2344,12 +2416,11 @@ fashion. A variant of here documents, the format is: [N]<<< WORD - The WORD undergoes brace expansion, tilde expansion, parameter and -variable expansion, command substitution, arithmetic expansion, and -quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string, with a newline appended, to -the command on its standard input (or file descriptor N if N is -specified). + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Pathname +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). 3.6.8 Duplicating File Descriptors ---------------------------------- @@ -2486,11 +2557,11 @@ taken. '$PATH' is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named 'command_not_found_handle'. If that - function exists, it is invoked with the original command and the - original command's arguments as its arguments, and the function's - exit status becomes the exit status of the shell. If that function - is not defined, the shell prints an error message and returns an - exit status of 127. + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. 4. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate @@ -2783,13 +2854,13 @@ Completion Builtins::). Unless otherwise noted, each builtin command documented as accepting options preceded by '-' accepts '--' to signify the end of the options. -The ':', 'true', 'false', and 'test' builtins do not accept options and -do not treat '--' specially. The 'exit', 'logout', 'return', 'break', -'continue', 'let', and 'shift' builtins accept and process arguments -beginning with '-' without requiring '--'. Other builtins that accept -arguments but are not specified as accepting options interpret arguments -beginning with '-' as invalid options and require '--' to prevent this -interpretation. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation.  File: bash.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2904,10 +2975,11 @@ standard. If COMMAND cannot be executed for some reason, a non-interactive shell exits, unless the 'execfail' shell option is enabled. In that case, it returns failure. An interactive shell returns - failure if the file cannot be executed. If no COMMAND is - specified, redirections may be used to affect the current shell - environment. If there are no redirection errors, the return status - is zero; otherwise the return status is non-zero. + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. 'exit' exit [N] @@ -2988,7 +3060,7 @@ standard. locations. The '-d' option causes the shell to forget the remembered location of each NAME. If the '-t' option is supplied, the full pathname to which each NAME corresponds is printed. If - multiple NAME arguments are supplied with '-t' the NAME is printed + multiple NAME arguments are supplied with '-t', the NAME is printed before the hashed full pathname. The '-l' option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only '-l' is supplied, information about @@ -3032,7 +3104,7 @@ standard. status of the last command executed in the function. If 'return' is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. - if 'return' is executed during a 'DEBUG' trap, the last command + If 'return' is executed during a 'DEBUG' trap, the last command used to determine the status is the last command executed by the trap handler before 'return' was invoked. 'return' may also be used to terminate execution of a script being executed with the '.' @@ -3096,7 +3168,7 @@ standard. The expression is false. 1 argument - The expression is true if and only if the argument is not + The expression is true if, and only if, the argument is not null. 2 arguments @@ -3600,7 +3672,8 @@ standard. '-d' The first character of DELIM is used to terminate each input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. @@ -3615,7 +3688,7 @@ standard. Read lines from file descriptor FD instead of the standard input. '-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The '-c' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' option specifies QUANTUM. '-c' Specify the number of lines read between each call to @@ -3712,12 +3785,14 @@ standard. '-d DELIM' The first character of DELIM is used to terminate the input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. '-e' Readline (*note Command Line Editing::) is used to obtain the line. Readline uses the current (or default, if line editing - was not previously active) editing settings. + was not previously active) editing settings, but uses + Readline's default filename completion. '-i TEXT' If Readline is being used to read the line, TEXT is placed @@ -4236,9 +4311,10 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The '-p' option - causes output to be displayed in a form that may be reused as - input. Other options have the following meanings: + with an indication of whether or not each is set; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: '-s' Enable (set) each OPTNAME. @@ -4269,6 +4345,12 @@ This builtin allows you to change additional shell optional behavior. The list of 'shopt' options is: + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation and while executing builtins that can perform + variable assignments. + 'autocd' If set, a command name that is the name of a directory is executed as if it were the argument to the 'cd' command. This @@ -4301,13 +4383,16 @@ This builtin allows you to change additional shell optional behavior. are stopped. 'checkwinsize' - If set, Bash checks the window size after each command and, if - necessary, updates the values of 'LINES' and 'COLUMNS'. + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. 'cmdhist' If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy - re-editing of multi-line commands. + re-editing of multi-line commands. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). 'compat31' If set, Bash changes its behavior to that of version 3.1 with @@ -4357,6 +4442,11 @@ This builtin allows you to change additional shell optional behavior. executed (this allows 'break' or 'continue' in a shell function to affect loops in the caller's context). + 'compat44' + If set, Bash saves the positional parameters to BASH_ARGV and + BASH_ARGC before they are used, regardless of whether or not + extended debugging mode is enabled. + 'complete_fullquote' If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -4384,7 +4474,8 @@ This builtin allows you to change additional shell optional behavior. 'dotglob' If set, Bash includes filenames beginning with a '.' in the - results of filename expansion. + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. 'execfail' If this is set, a non-interactive shell will not exit if it @@ -4513,6 +4604,12 @@ This builtin allows you to change additional shell optional behavior. commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + 'login_shell' The shell sets this option if it is started as a login shell (*note Invoking Bash::). The value may not be changed. @@ -4676,7 +4773,8 @@ In some cases, Bash assigns a default value to the variable. that are expanded before 'PS1' is displayed. 'PS2' - The secondary prompt string. The default value is '> '. + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed.  File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4706,7 +4804,9 @@ Variables::). 'BASHPID' Expands to the process ID of the current Bash process. This differs from '$$' under certain circumstances, such as subshells - that do not require Bash to be re-initialized. + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. 'BASH_ALIASES' An associative array variable whose members correspond to the @@ -4725,7 +4825,9 @@ Variables::). subroutine is executed, the number of parameters passed is pushed onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of - the 'extdebug' option to the 'shopt' builtin). + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script may result in + inconsistent values. 'BASH_ARGV' An array variable containing all of the parameters in the current @@ -4735,7 +4837,16 @@ Variables::). the parameters supplied are pushed onto 'BASH_ARGV'. The shell sets 'BASH_ARGV' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to - the 'shopt' builtin). + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. 'BASH_CMDS' An associative array variable whose members correspond to the @@ -4932,6 +5043,21 @@ Variables::). Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode (*note Bash POSIX Mode::). +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + 'EUID' The numeric effective user id of the current user. This variable is readonly. @@ -4982,8 +5108,8 @@ Variables::). nesting level will cause the current command to abort. 'GLOBIGNORE' - A colon-separated list of patterns defining the set of filenames to - be ignored by filename expansion. If a filename matched by a + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a filename expansion pattern also matches one of the patterns in 'GLOBIGNORE', it is removed from the list of matches. The pattern matching honors the setting of the 'extglob' shell option. @@ -5218,10 +5344,12 @@ Variables::). with '#? ' 'PS4' - The value is the prompt printed before the command line is echoed - when the '-x' option is set (*note The Set Builtin::). The first - character of 'PS4' is replicated multiple times, as necessary, to - indicate multiple levels of indirection. The default is '+ '. + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. 'PWD' The current working directory as set by the 'cd' builtin. @@ -5452,7 +5580,7 @@ invocation which are not available with the 'set' builtin. If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an - interactive shell. + interactive shell or when reading input through a pipe. '-D' A list of all double-quoted strings preceded by '$' is printed on @@ -5678,8 +5806,10 @@ several ways. 3. Bash expands and displays 'PS1' before reading the first line of a command, and expands and displays 'PS2' before reading the second - and subsequent lines of a multi-line command. Bash displays 'PS0' - after it reads a command but before executing it. + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a command before printing the primary prompt, '$PS1' (*note Bash @@ -5884,7 +6014,9 @@ link itself. arithmetic binary operators return true if ARG1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to ARG2, respectively. ARG1 and ARG2 may be - positive or negative integers. + positive or negative integers. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::).  File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features @@ -6122,9 +6254,15 @@ quotes. The 'unset' builtin is used to destroy arrays. 'unset NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described -above. Care must be taken to avoid unwanted side effects caused by -filename expansion. 'unset NAME', where NAME is an array, removes the -entire array. A subscript of '*' or '@' also removes the entire array. +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. The 'declare', 'local', and 'readonly' builtins each accept a '-a' option to specify an indexed array and a '-A' option to specify an @@ -6245,7 +6383,7 @@ non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters -which can appear in the prompt variables 'PS1' to 'PS4': +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\a' A bell character. @@ -6699,6 +6837,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option will force 'wait' to wait until the job +or process terminates before returning. +  File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control @@ -6775,7 +6918,7 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre option is encountered. 'wait' - wait [-n] [JOBSPEC or PID ...] + wait [-fn] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or job specification JOBSPEC exits and return the exit status of the @@ -6783,7 +6926,10 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the '-n' option is supplied, 'wait' waits for any job to - terminate and returns its exit status. If neither JOBSPEC nor PID + terminate and returns its exit status. If the '-f' option is + supplied, and job control is enabled, 'wait' forces each PID or + JOBSPEC to terminate before returning its status, intead of + returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the shell, the return status is 127. @@ -7272,14 +7418,14 @@ Variable Settings This variable can be set to either 'emacs' or 'vi'. 'emacs-mode-string' - This string is displayed immediately before the last line of - the primary prompt when emacs editing mode is active. The - value is expanded like a key binding, so the standard set of - meta- and control prefixes and backslash escape sequences is - available. Use the '\1' and '\2' escapes to begin and end - sequences of non-printing characters, which can be used to - embed a terminal control sequence into the mode string. The - default is '@'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a @@ -7431,10 +7577,10 @@ Variable Settings default value is 'off'. 'show-mode-in-prompt' - If set to 'on', add a character to the beginning of the prompt + If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi - insertion. The mode strings are user-settable. The default - value is 'off'. + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior @@ -7450,24 +7596,26 @@ Variable Settings 'off'. 'vi-cmd-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - command mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(cmd)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. 'vi-ins-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - insertion mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(ins)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. 'visible-stats' If set to 'on', a character denoting a file's type is appended @@ -7594,8 +7742,9 @@ four parser directives used. '$if' The '$if' construct allows bindings to be made based on the editing mode, the terminal being used, or the application using Readline. - The text of the test extends to the end of the line; no characters - are required to isolate it. + The text of the test, after any comparison operator, extends to the + end of the line; unless otherwise noted, no characters are required + to isolate it. 'mode' The 'mode=' form of the '$if' directive is used to test @@ -7612,6 +7761,22 @@ four parser directives used. the portion of the terminal name before the first '-'. This allows 'sun' to match both 'sun' and 'sun-cmd', for instance. + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + 'application' The APPLICATION construct is used to include application-specific settings. Each program using the @@ -7625,6 +7790,20 @@ four parser directives used. "\C-xq": "\eb\"\ef\"" $endif + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $endif + '$endif' This command, as seen in the previous example, terminates an '$if' command. @@ -7810,6 +7989,20 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + 'clear-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -7876,13 +8069,13 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-forward ()' +'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-backward ()' +'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a @@ -8226,9 +8419,10 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin Abort the current editing command and ring the terminal's bell (subject to the setting of 'bell-style'). -'do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a @@ -8347,10 +8541,11 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin 'operate-and-get-next (C-o)' Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to use + instead of the current line. -'edit-and-execute-command (C-xC-e)' +'edit-and-execute-command (C-x C-e)' Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke '$VISUAL', '$EDITOR', and 'emacs' as the editor, in that order. @@ -8414,13 +8609,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used. Next, the string specified as the argument to the '-W' option is considered. The string is first split using the characters in the 'IFS' -special variable as delimiters. Shell quoting is honored. Each word is -then expanded using brace expansion, tilde expansion, parameter and -variable expansion, command substitution, and arithmetic expansion, as -described above (*note Shell Expansions::). The results are split using -the rules described above (*note Word Splitting::). The results of the -expansion are prefix-matched against the word being completed, and the -matching words become the possible completions. +special variable as delimiters. Shell quoting is honored within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note Word Splitting::). The results of the expansion +are prefix-matched against the word being completed, and the matching +words become the possible completions. After these matches have been generated, any shell function or command specified with the '-F' and '-C' options is invoked. When the @@ -8770,10 +8967,9 @@ function and bind it to a particular command using 'complete -F'. The following function provides completions for the 'cd' builtin. It is a reasonably good example of what shell functions must do when used -for completion. This function uses the word passsed as '$2' to -determine the directory name to complete. You can also use the -'COMP_WORDS' array variable; the current word is indexed by the -'COMP_CWORD' variable. +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. The function relies on the 'complete' and 'compgen' builtins to do much of the work, adding only the things that the Bash 'cd' does beyond @@ -8942,7 +9138,7 @@ of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. The 'lithist' shell option causes the shell to save the command with embedded newlines instead of semicolons. The 'shopt' builtin is used to set these -options. *Note Bash Builtins::, for a description of 'shopt'. +options. *Note The Shopt Builtin::, for a description of 'shopt'.  File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8962,8 +9158,8 @@ history file. FIRST and LAST may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset - from the current command number). If LAST is not specified it is - set to FIRST. If FIRST is not specified it is set to the previous + from the current command number). If LAST is not specified, it is + set to FIRST. If FIRST is not specified, it is set to the previous command for editing and -16 for listing. If the '-l' flag is given, the commands are listed on standard output. The '-n' flag suppresses the command numbers when listing. The '-r' flag @@ -8987,6 +9183,7 @@ history file. history [N] history -c history -d OFFSET + history -d START-END history [-anrw] [FILENAME] history -ps ARG @@ -9005,8 +9202,18 @@ history file. options to replace the history list completely. '-d OFFSET' - Delete the history entry at position OFFSET. OFFSET should be - specified as it appears when the history is displayed. + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9055,7 +9262,8 @@ a previous command into the current input line, or fix errors in previous commands quickly. History expansion is performed immediately after a complete line is -read, before the shell breaks it into words. +read, before the shell breaks it into words, and is performed on each +line individually without taking quoting on previous lines into account. History expansion takes place in two parts. The first is to determine which line from the history list should be used during @@ -9071,15 +9279,15 @@ may be used to escape the history expansion character, but the history expansion character is also treated as quoted if it immediately precedes the closing double quote in a double-quoted string. - Several shell options settable with the 'shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. If -the 'histverify' shell option is enabled, and Readline is being used, -history substitutions are not immediately passed to the shell parser. -Instead, the expanded line is reloaded into the Readline editing buffer -for further modification. If Readline is being used, and the -'histreedit' shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. The '-p' -option to the 'history' builtin command may be used to see what a + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, and Readline is +being used, history substitutions are not immediately passed to the +shell parser. Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. If Readline is being used, and +the 'histreedit' shell option is enabled, a failed history expansion +will be reloaded into the Readline editing buffer for correction. The +'-p' option to the 'history' builtin command may be used to see what a history expansion will do before using it. The '-s' option to the 'history' builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for @@ -9319,10 +9527,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -9369,10 +9591,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the @@ -9611,6 +9833,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -9681,7 +9909,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. @@ -10636,7 +10864,7 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 268) + (line 269) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) @@ -10660,7 +10888,7 @@ D.1 Index of Shell Builtin Commands * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 89) + (line 92) * echo: Bash Builtins. (line 245) * enable: Bash Builtins. (line 294) * eval: Bourne Shell Builtins. @@ -10668,17 +10896,17 @@ D.1 Index of Shell Builtin Commands * exec: Bourne Shell Builtins. (line 102) * exit: Bourne Shell Builtins. - (line 119) + (line 120) * export: Bourne Shell Builtins. - (line 126) + (line 127) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 142) + (line 143) * hash: Bourne Shell Builtins. - (line 185) + (line 186) * help: Bash Builtins. (line 323) * history: Bash History Builtins. (line 40) @@ -10692,38 +10920,38 @@ D.1 Index of Shell Builtin Commands * mapfile: Bash Builtins. (line 369) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 414) +* printf: Bash Builtins. (line 415) * pushd: Directory Stack Builtins. (line 53) * pwd: Bourne Shell Builtins. - (line 205) -* read: Bash Builtins. (line 458) -* readarray: Bash Builtins. (line 550) + (line 206) +* read: Bash Builtins. (line 459) +* readarray: Bash Builtins. (line 553) * readonly: Bourne Shell Builtins. - (line 215) + (line 216) * return: Bourne Shell Builtins. - (line 234) + (line 235) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 255) + (line 256) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 559) +* source: Bash Builtins. (line 562) * suspend: Job Control Builtins. - (line 101) + (line 104) * test: Bourne Shell Builtins. - (line 268) + (line 269) * times: Bourne Shell Builtins. - (line 343) + (line 344) * trap: Bourne Shell Builtins. - (line 349) -* type: Bash Builtins. (line 564) -* typeset: Bash Builtins. (line 596) -* ulimit: Bash Builtins. (line 602) + (line 350) +* type: Bash Builtins. (line 567) +* typeset: Bash Builtins. (line 599) +* ulimit: Bash Builtins. (line 605) * umask: Bourne Shell Builtins. - (line 398) -* unalias: Bash Builtins. (line 701) + (line 399) +* unalias: Bash Builtins. (line 704) * unset: Bourne Shell Builtins. - (line 416) + (line 417) * wait: Job Control Builtins. (line 76) @@ -10738,9 +10966,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 121) + (line 122) * ]]: Conditional Constructs. - (line 121) + (line 122) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10762,7 +10990,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 79) + (line 80) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -10801,22 +11029,23 @@ D.3 Parameter and Variable Index * BASH: Bash Variables. (line 13) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 39) -* BASH_ARGV: Bash Variables. (line 49) -* BASH_CMDS: Bash Variables. (line 59) -* BASH_COMMAND: Bash Variables. (line 68) -* BASH_COMPAT: Bash Variables. (line 73) -* BASH_ENV: Bash Variables. (line 88) -* BASH_EXECUTION_STRING: Bash Variables. (line 94) -* BASH_LINENO: Bash Variables. (line 97) -* BASH_LOADABLES_PATH: Bash Variables. (line 105) -* BASH_REMATCH: Bash Variables. (line 109) -* BASH_SOURCE: Bash Variables. (line 117) -* BASH_SUBSHELL: Bash Variables. (line 124) -* BASH_VERSINFO: Bash Variables. (line 129) -* BASH_VERSION: Bash Variables. (line 152) -* BASH_XTRACEFD: Bash Variables. (line 155) +* BASH_ALIASES: Bash Variables. (line 32) +* BASH_ARGC: Bash Variables. (line 41) +* BASH_ARGV: Bash Variables. (line 53) +* BASH_ARGV0: Bash Variables. (line 64) +* BASH_CMDS: Bash Variables. (line 72) +* BASH_COMMAND: Bash Variables. (line 81) +* BASH_COMPAT: Bash Variables. (line 86) +* BASH_ENV: Bash Variables. (line 101) +* BASH_EXECUTION_STRING: Bash Variables. (line 107) +* BASH_LINENO: Bash Variables. (line 110) +* BASH_LOADABLES_PATH: Bash Variables. (line 118) +* BASH_REMATCH: Bash Variables. (line 122) +* BASH_SOURCE: Bash Variables. (line 130) +* BASH_SUBSHELL: Bash Variables. (line 137) +* BASH_VERSINFO: Bash Variables. (line 142) +* BASH_VERSION: Bash Variables. (line 165) +* BASH_XTRACEFD: Bash Variables. (line 168) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10825,12 +11054,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 166) +* CHILD_MAX: Bash Variables. (line 179) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 173) +* COLUMNS: Bash Variables. (line 186) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -10843,88 +11072,90 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 225) -* COMP_CWORD: Bash Variables. (line 179) -* COMP_KEY: Bash Variables. (line 208) -* COMP_LINE: Bash Variables. (line 185) -* COMP_POINT: Bash Variables. (line 190) -* COMP_TYPE: Bash Variables. (line 198) -* COMP_WORDBREAKS: Bash Variables. (line 212) -* COMP_WORDS: Bash Variables. (line 218) +* COMPREPLY: Bash Variables. (line 238) +* COMP_CWORD: Bash Variables. (line 192) +* COMP_KEY: Bash Variables. (line 221) +* COMP_LINE: Bash Variables. (line 198) +* COMP_POINT: Bash Variables. (line 203) +* COMP_TYPE: Bash Variables. (line 211) +* COMP_WORDBREAKS: Bash Variables. (line 225) +* COMP_WORDS: Bash Variables. (line 231) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 231) -* DIRSTACK: Bash Variables. (line 235) +* COPROC: Bash Variables. (line 244) +* DIRSTACK: Bash Variables. (line 248) * disable-completion: Readline Init File Syntax. (line 116) * echo-control-characters: Readline Init File Syntax. (line 121) * editing-mode: Readline Init File Syntax. (line 126) -* EMACS: Bash Variables. (line 245) +* EMACS: Bash Variables. (line 258) * emacs-mode-string: Readline Init File Syntax. (line 132) * enable-bracketed-paste: Readline Init File Syntax. (line 142) * enable-keypad: Readline Init File Syntax. (line 150) -* ENV: Bash Variables. (line 250) -* EUID: Bash Variables. (line 254) -* EXECIGNORE: Bash Variables. (line 258) +* ENV: Bash Variables. (line 263) +* EPOCHREALTIME: Bash Variables. (line 267) +* EPOCHSECONDS: Bash Variables. (line 275) +* EUID: Bash Variables. (line 282) +* EXECIGNORE: Bash Variables. (line 286) * expand-tilde: Readline Init File Syntax. (line 161) -* FCEDIT: Bash Variables. (line 271) -* FIGNORE: Bash Variables. (line 275) -* FUNCNAME: Bash Variables. (line 281) -* FUNCNEST: Bash Variables. (line 298) -* GLOBIGNORE: Bash Variables. (line 303) -* GROUPS: Bash Variables. (line 310) -* histchars: Bash Variables. (line 316) -* HISTCMD: Bash Variables. (line 331) -* HISTCONTROL: Bash Variables. (line 336) -* HISTFILE: Bash Variables. (line 352) -* HISTFILESIZE: Bash Variables. (line 356) -* HISTIGNORE: Bash Variables. (line 367) +* FCEDIT: Bash Variables. (line 299) +* FIGNORE: Bash Variables. (line 303) +* FUNCNAME: Bash Variables. (line 309) +* FUNCNEST: Bash Variables. (line 326) +* GLOBIGNORE: Bash Variables. (line 331) +* GROUPS: Bash Variables. (line 338) +* histchars: Bash Variables. (line 344) +* HISTCMD: Bash Variables. (line 359) +* HISTCONTROL: Bash Variables. (line 364) +* HISTFILE: Bash Variables. (line 380) +* HISTFILESIZE: Bash Variables. (line 384) +* HISTIGNORE: Bash Variables. (line 395) * history-preserve-point: Readline Init File Syntax. (line 165) * history-size: Readline Init File Syntax. (line 171) -* HISTSIZE: Bash Variables. (line 387) -* HISTTIMEFORMAT: Bash Variables. (line 394) +* HISTSIZE: Bash Variables. (line 415) +* HISTTIMEFORMAT: Bash Variables. (line 422) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 180) -* HOSTFILE: Bash Variables. (line 402) -* HOSTNAME: Bash Variables. (line 413) -* HOSTTYPE: Bash Variables. (line 416) +* HOSTFILE: Bash Variables. (line 430) +* HOSTNAME: Bash Variables. (line 441) +* HOSTTYPE: Bash Variables. (line 444) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 419) +* IGNOREEOF: Bash Variables. (line 447) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 429) +* INPUTRC: Bash Variables. (line 457) * isearch-terminators: Readline Init File Syntax. (line 195) * keymap: Readline Init File Syntax. (line 202) -* LANG: Bash Variables. (line 433) -* LC_ALL: Bash Variables. (line 437) -* LC_COLLATE: Bash Variables. (line 441) -* LC_CTYPE: Bash Variables. (line 448) +* LANG: Bash Variables. (line 461) +* LC_ALL: Bash Variables. (line 465) +* LC_COLLATE: Bash Variables. (line 469) +* LC_CTYPE: Bash Variables. (line 476) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 453) -* LC_NUMERIC: Bash Variables. (line 457) -* LC_TIME: Bash Variables. (line 461) -* LINENO: Bash Variables. (line 465) -* LINES: Bash Variables. (line 469) -* MACHTYPE: Bash Variables. (line 475) +* LC_MESSAGES <1>: Bash Variables. (line 481) +* LC_NUMERIC: Bash Variables. (line 485) +* LC_TIME: Bash Variables. (line 489) +* LINENO: Bash Variables. (line 493) +* LINES: Bash Variables. (line 497) +* MACHTYPE: Bash Variables. (line 503) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 479) +* MAILCHECK: Bash Variables. (line 507) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 487) +* MAPFILE: Bash Variables. (line 515) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -10935,42 +11166,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 491) +* OLDPWD: Bash Variables. (line 519) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 494) +* OPTERR: Bash Variables. (line 522) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 498) +* OSTYPE: Bash Variables. (line 526) * output-meta: Readline Init File Syntax. (line 254) * page-completions: Readline Init File Syntax. (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 501) -* POSIXLY_CORRECT: Bash Variables. (line 506) -* PPID: Bash Variables. (line 515) -* PROMPT_COMMAND: Bash Variables. (line 519) -* PROMPT_DIRTRIM: Bash Variables. (line 523) -* PS0: Bash Variables. (line 529) +* PIPESTATUS: Bash Variables. (line 529) +* POSIXLY_CORRECT: Bash Variables. (line 534) +* PPID: Bash Variables. (line 543) +* PROMPT_COMMAND: Bash Variables. (line 547) +* PROMPT_DIRTRIM: Bash Variables. (line 551) +* PS0: Bash Variables. (line 557) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 534) -* PS4: Bash Variables. (line 539) -* PWD: Bash Variables. (line 545) -* RANDOM: Bash Variables. (line 548) -* READLINE_LINE: Bash Variables. (line 553) -* READLINE_POINT: Bash Variables. (line 557) -* REPLY: Bash Variables. (line 561) +* PS3: Bash Variables. (line 562) +* PS4: Bash Variables. (line 567) +* PWD: Bash Variables. (line 575) +* RANDOM: Bash Variables. (line 578) +* READLINE_LINE: Bash Variables. (line 583) +* READLINE_POINT: Bash Variables. (line 587) +* REPLY: Bash Variables. (line 591) * revert-all-at-newline: Readline Init File Syntax. (line 270) -* SECONDS: Bash Variables. (line 564) -* SHELL: Bash Variables. (line 570) -* SHELLOPTS: Bash Variables. (line 575) -* SHLVL: Bash Variables. (line 584) +* SECONDS: Bash Variables. (line 594) +* SHELL: Bash Variables. (line 600) +* SHELLOPTS: Bash Variables. (line 605) +* SHLVL: Bash Variables. (line 614) * show-all-if-ambiguous: Readline Init File Syntax. (line 276) * show-all-if-unmodified: Readline Init File Syntax. @@ -10981,16 +11212,16 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 589) -* TMOUT: Bash Variables. (line 627) -* TMPDIR: Bash Variables. (line 639) -* UID: Bash Variables. (line 643) +* TIMEFORMAT: Bash Variables. (line 619) +* TMOUT: Bash Variables. (line 657) +* TMPDIR: Bash Variables. (line 669) +* UID: Bash Variables. (line 673) * vi-cmd-mode-string: Readline Init File Syntax. (line 310) * vi-ins-mode-string: Readline Init File Syntax. - (line 320) + (line 321) * visible-stats: Readline Init File Syntax. - (line 330) + (line 332)  File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11006,7 +11237,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 124) + (line 125) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11021,10 +11252,10 @@ D.4 Function Index * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 42) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (line 47) +* clear-screen (C-l): Commands For Moving. (line 48) * complete (): Commands For Completion. (line 6) * complete-command (M-!): Commands For Completion. @@ -11054,56 +11285,56 @@ D.4 Function Index (line 46) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 109) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 74) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 86) * dump-variables (): Miscellaneous Commands. - (line 79) + (line 80) * dynamic-complete-history (M-): Commands For Completion. (line 90) -* edit-and-execute-command (C-xC-e): Miscellaneous Commands. - (line 138) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. (line 23) * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) + (line 37) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 31) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 91) + (line 92) * glob-expand-word (C-x *): Miscellaneous Commands. - (line 97) + (line 98) * glob-list-expansions (C-x g): Miscellaneous Commands. - (line 103) + (line 104) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 127) + (line 128) * history-expand-line (M-^): Miscellaneous Commands. - (line 117) + (line 118) * history-search-backward (): Commands For History. (line 53) * history-search-forward (): Commands For History. (line 47) -* history-substr-search-backward (): Commands For History. +* history-substring-search-backward (): Commands For History. (line 65) -* history-substr-search-forward (): Commands For History. +* history-substring-search-forward (): Commands For History. (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 61) * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 130) + (line 131) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11113,19 +11344,20 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 19) * magic-space (): Miscellaneous Commands. - (line 120) + (line 121) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. (line 38) * next-history (C-n): Commands For History. (line 17) +* next-screen-line (): Commands For Moving. (line 41) * non-incremental-forward-search-history (M-n): Commands For History. (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. (line 35) * operate-and-get-next (C-o): Miscellaneous Commands. - (line 133) + (line 134) * overwrite-mode (): Commands For Text. (line 65) * possible-command-completions (C-x !): Commands For Completion. (line 86) @@ -11140,38 +11372,39 @@ D.4 Function Index * possible-variable-completions (C-x $): Commands For Completion. (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) + (line 19) * previous-history (C-p): Commands For History. (line 13) +* previous-screen-line (): Commands For Moving. (line 34) * print-last-kbd-macro (): Keyboard Macros. (line 17) * quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. (line 6) -* redraw-current-line (): Commands For Moving. (line 38) +* redraw-current-line (): Commands For Moving. (line 52) * reverse-search-history (C-r): Commands For History. (line 27) * revert-line (M-r): Miscellaneous Commands. - (line 25) + (line 26) * self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 33) * shell-backward-kill-word (): Commands For Killing. (line 33) * shell-backward-word (): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 112) + (line 113) * shell-forward-word (): Commands For Moving. (line 26) * shell-kill-word (): Commands For Killing. (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) + (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. - (line 29) + (line 30) * transpose-chars (C-t): Commands For Text. (line 42) * transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) + (line 23) * universal-argument (): Numeric Arguments. (line 10) * unix-filename-rubout (): Commands For Killing. (line 41) @@ -11273,7 +11506,7 @@ D.5 Concept Index * history list: Bash History Facilities. (line 6) * History, how to use: A Programmable Completion Example. - (line 114) + (line 113) * identifier: Definitions. (line 51) * initialization file, readline: Readline Init File. (line 6) * installation: Basic Installation. (line 6) @@ -11351,134 +11584,134 @@ D.5 Concept Index  Tag Table: -Node: Top897 -Node: Introduction2817 -Node: What is Bash?3033 -Node: What is a shell?4147 -Node: Definitions6685 -Node: Basic Shell Features9636 -Node: Shell Syntax10855 -Node: Shell Operation11881 -Node: Quoting13174 -Node: Escape Character14474 -Node: Single Quotes14959 -Node: Double Quotes15307 -Node: ANSI-C Quoting16585 -Node: Locale Translation17838 -Node: Comments18734 -Node: Shell Commands19352 -Node: Simple Commands20224 -Node: Pipelines20855 -Node: Lists23598 -Node: Compound Commands25327 -Node: Looping Constructs26330 -Node: Conditional Constructs28793 -Node: Command Grouping39715 -Node: Coprocesses41194 -Node: GNU Parallel43026 -Node: Shell Functions46999 -Node: Shell Parameters52205 -Node: Positional Parameters56618 -Node: Special Parameters57518 -Node: Shell Expansions60855 -Node: Brace Expansion62949 -Node: Tilde Expansion65730 -Node: Shell Parameter Expansion68078 -Node: Command Substitution82210 -Node: Arithmetic Expansion83565 -Node: Process Substitution84497 -Node: Word Splitting85617 -Node: Filename Expansion87561 -Node: Pattern Matching89845 -Node: Quote Removal93543 -Node: Redirections93838 -Node: Executing Commands103258 -Node: Simple Command Expansion103928 -Node: Command Search and Execution105858 -Node: Command Execution Environment108194 -Node: Environment111178 -Node: Exit Status112837 -Node: Signals114507 -Node: Shell Scripts116474 -Node: Shell Builtin Commands118989 -Node: Bourne Shell Builtins121023 -Node: Bash Builtins141623 -Node: Modifying Shell Behavior170268 -Node: The Set Builtin170613 -Node: The Shopt Builtin181026 -Node: Special Builtins196825 -Node: Shell Variables197804 -Node: Bourne Shell Variables198241 -Node: Bash Variables200272 -Node: Bash Features228652 -Node: Invoking Bash229551 -Node: Bash Startup Files235500 -Node: Interactive Shells240603 -Node: What is an Interactive Shell?241013 -Node: Is this Shell Interactive?241662 -Node: Interactive Shell Behavior242477 -Node: Bash Conditional Expressions245852 -Node: Shell Arithmetic250092 -Node: Aliases252909 -Node: Arrays255457 -Node: The Directory Stack260541 -Node: Directory Stack Builtins261325 -Node: Controlling the Prompt264293 -Node: The Restricted Shell267039 -Node: Bash POSIX Mode268864 -Node: Job Control279215 -Node: Job Control Basics279675 -Node: Job Control Builtins284394 -Node: Job Control Variables288924 -Node: Command Line Editing290080 -Node: Introduction and Notation291751 -Node: Readline Interaction293374 -Node: Readline Bare Essentials294565 -Node: Readline Movement Commands296348 -Node: Readline Killing Commands297308 -Node: Readline Arguments299226 -Node: Searching300270 -Node: Readline Init File302456 -Node: Readline Init File Syntax303603 -Node: Conditional Init Constructs323790 -Node: Sample Init File326315 -Node: Bindable Readline Commands329432 -Node: Commands For Moving330636 -Node: Commands For History331779 -Node: Commands For Text336068 -Node: Commands For Killing339457 -Node: Numeric Arguments341938 -Node: Commands For Completion343077 -Node: Keyboard Macros347268 -Node: Miscellaneous Commands347955 -Node: Readline vi Mode353759 -Node: Programmable Completion354666 -Node: Programmable Completion Builtins362127 -Node: A Programmable Completion Example372013 -Node: Using History Interactively377265 -Node: Bash History Facilities377949 -Node: Bash History Builtins380950 -Node: History Interaction384947 -Node: Event Designators387911 -Node: Word Designators389130 -Node: Modifiers390767 -Node: Installing Bash392169 -Node: Basic Installation393306 -Node: Compilers and Options395997 -Node: Compiling For Multiple Architectures396738 -Node: Installation Names398401 -Node: Specifying the System Type399219 -Node: Sharing Defaults399935 -Node: Operation Controls400608 -Node: Optional Features401566 -Node: Reporting Bugs411823 -Node: Major Differences From The Bourne Shell413017 -Node: GNU Free Documentation License429869 -Node: Indexes455046 -Node: Builtin Index455500 -Node: Reserved Word Index462327 -Node: Variable Index464775 -Node: Function Index480234 -Node: Concept Index493391 +Node: Top891 +Node: Introduction2805 +Node: What is Bash?3021 +Node: What is a shell?4135 +Node: Definitions6673 +Node: Basic Shell Features9624 +Node: Shell Syntax10843 +Node: Shell Operation11869 +Node: Quoting13162 +Node: Escape Character14462 +Node: Single Quotes14947 +Node: Double Quotes15295 +Node: ANSI-C Quoting16573 +Node: Locale Translation17832 +Node: Comments18728 +Node: Shell Commands19346 +Node: Simple Commands20218 +Node: Pipelines20849 +Node: Lists23781 +Node: Compound Commands25520 +Node: Looping Constructs26532 +Node: Conditional Constructs29027 +Node: Command Grouping40082 +Node: Coprocesses41561 +Node: GNU Parallel43464 +Node: Shell Functions47438 +Node: Shell Parameters54521 +Node: Positional Parameters58934 +Node: Special Parameters59834 +Node: Shell Expansions63171 +Node: Brace Expansion65294 +Node: Tilde Expansion68018 +Node: Shell Parameter Expansion70366 +Node: Command Substitution84849 +Node: Arithmetic Expansion86204 +Node: Process Substitution87136 +Node: Word Splitting88256 +Node: Filename Expansion90200 +Node: Pattern Matching92730 +Node: Quote Removal96716 +Node: Redirections97011 +Node: Executing Commands106569 +Node: Simple Command Expansion107239 +Node: Command Search and Execution109169 +Node: Command Execution Environment111545 +Node: Environment114529 +Node: Exit Status116188 +Node: Signals117858 +Node: Shell Scripts119825 +Node: Shell Builtin Commands122340 +Node: Bourne Shell Builtins124378 +Node: Bash Builtins145036 +Node: Modifying Shell Behavior173944 +Node: The Set Builtin174289 +Node: The Shopt Builtin184702 +Node: Special Builtins201572 +Node: Shell Variables202551 +Node: Bourne Shell Variables202988 +Node: Bash Variables205092 +Node: Bash Features235106 +Node: Invoking Bash236005 +Node: Bash Startup Files241991 +Node: Interactive Shells247094 +Node: What is an Interactive Shell?247504 +Node: Is this Shell Interactive?248153 +Node: Interactive Shell Behavior248968 +Node: Bash Conditional Expressions252456 +Node: Shell Arithmetic256822 +Node: Aliases259639 +Node: Arrays262187 +Node: The Directory Stack267553 +Node: Directory Stack Builtins268337 +Node: Controlling the Prompt271305 +Node: The Restricted Shell274067 +Node: Bash POSIX Mode275892 +Node: Job Control286243 +Node: Job Control Basics286703 +Node: Job Control Builtins291671 +Node: Job Control Variables296398 +Node: Command Line Editing297554 +Node: Introduction and Notation299225 +Node: Readline Interaction300848 +Node: Readline Bare Essentials302039 +Node: Readline Movement Commands303822 +Node: Readline Killing Commands304782 +Node: Readline Arguments306700 +Node: Searching307744 +Node: Readline Init File309930 +Node: Readline Init File Syntax311077 +Node: Conditional Init Constructs331448 +Node: Sample Init File335644 +Node: Bindable Readline Commands338761 +Node: Commands For Moving339965 +Node: Commands For History341814 +Node: Commands For Text346109 +Node: Commands For Killing349498 +Node: Numeric Arguments351979 +Node: Commands For Completion353118 +Node: Keyboard Macros357309 +Node: Miscellaneous Commands357996 +Node: Readline vi Mode363949 +Node: Programmable Completion364856 +Node: Programmable Completion Builtins372450 +Node: A Programmable Completion Example382336 +Node: Using History Interactively387587 +Node: Bash History Facilities388271 +Node: Bash History Builtins391276 +Node: History Interaction395807 +Node: Event Designators398874 +Node: Word Designators400093 +Node: Modifiers401730 +Node: Installing Bash403132 +Node: Basic Installation404269 +Node: Compilers and Options407527 +Node: Compiling For Multiple Architectures408268 +Node: Installation Names409961 +Node: Specifying the System Type410779 +Node: Sharing Defaults411495 +Node: Operation Controls412168 +Node: Optional Features413126 +Node: Reporting Bugs423652 +Node: Major Differences From The Bourne Shell424846 +Node: GNU Free Documentation License441698 +Node: Indexes466875 +Node: Builtin Index467329 +Node: Reserved Word Index474156 +Node: Variable Index476604 +Node: Function Index492282 +Node: Concept Index505585  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index 2f64c6f5b..de5d31297 100644 Binary files a/doc/bash.pdf and b/doc/bash.pdf differ diff --git a/doc/bash.ps b/doc/bash.ps index 35da9d02a..deccb7a74 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:23:59 2016 +%%CreationDate: Mon Mar 19 09:43:22 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 78 +%%Pages: 80 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -245,7 +245,7 @@ BP 108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF (bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1 (COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q -(yright \251 1989-2016 by the Free Softw)-.1 E(are F)-.1 E +(yright \251 1989-2018 by the Free Softw)-.1 E(are F)-.1 E (oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0 .973(is an)3.474 F F2(sh)3.473 E F0 .973 (-compatible command language interpreter that e)B -.15(xe)-.15 G .973 @@ -257,19 +257,19 @@ BP ell and Utilities portion of the IEEE POSIX)3.027 F (speci\214cation \(IEEE Standard 1003.1\).)108 223.2 Q F2(Bash)5 E F0 (can be con\214gured to be POSIX-conformant by def)2.5 E(ault.)-.1 E F1 -(OPTIONS)72 240 Q F0 .766(All of the single-character shell options doc\ -umented in the description of the)108 252 R F2(set)3.266 E F0 -.2(bu) -3.266 G .766(iltin command can be).2 F 1.284 -(used as options when the shell is in)108 264 R -.2(vo)-.4 G -.1(ke).2 G -3.785(d. In).1 F(addition,)3.785 E F2(bash)3.785 E F0 1.285 -(interprets the follo)3.785 F 1.285(wing options when it is)-.25 F(in) -108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 292.8 Q F0 .881 -(If the)158 292.8 R F23.381 E F0 .881(option is present, then com\ -mands are read from the \214rst non-option ar)3.381 F(gument)-.18 E F3 -(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G 3.243(ft)-5.743 G -.743(here are ar)-3.243 F .743(guments after the)-.18 F F3 -(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 F -.744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 +(OPTIONS)72 240 Q F0 .483(All of the single-character shell options doc\ +umented in the description of the)108 252 R F2(set)2.983 E F0 -.2(bu) +2.983 G .483(iltin command, includ-).2 F(ing)108 264 Q F22.718 E +F0 2.718(,c)C .218(an be used as options when the shell is in)-2.718 F +-.2(vo)-.4 G -.1(ke).2 G 2.718(d. In).1 F(addition,)2.719 E F2(bash) +2.719 E F0 .219(interprets the follo)2.719 F .219(wing options)-.25 F +(when it is in)108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 +292.8 Q F0 .881(If the)158 292.8 R F23.381 E F0 .881(option is pr\ +esent, then commands are read from the \214rst non-option ar)3.381 F +(gument)-.18 E F3(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G +3.243(ft)-5.743 G .743(here are ar)-3.243 F .743(guments after the)-.18 +F F3(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 +F .744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 (and an)2.919 F 2.919(yr)-.15 G .419(emaining ar)-2.919 F .418 (guments are assigned to the positional parameters.)-.18 F .418 (The assignment)5.418 F(to)158 328.8 Q F2($0)2.5 E F0 @@ -288,14 +288,14 @@ E F2108 376.8 Q F0 .602(If the)158 376.8 R F23.102 E F0 .602 (guments remain after option processing, then commands)-.18 F .617 (are read from the standard input.)158 388.8 R .617(This option allo) 5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158 -400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) -.15 E F2108 412.8 Q F0 3.183(Al)158 412.8 S .683 -(ist of all double-quoted strings preceded by)-3.183 F F2($)3.184 E F0 -.684(is printed on the standard output.)3.184 F .684(These are)5.684 F -.458(the strings that are subject to language translation when the curr\ -ent locale is not)158 424.8 R F2(C)2.958 E F0(or)2.958 E F2(POSIX)2.958 -E F0(.)A(This implies the)158 436.8 Q F22.5 E F0 -(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 +400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H +(hell or when reading input through a pipe.).15 E F2108 412.8 Q F0 +3.183(Al)158 412.8 S .683(ist of all double-quoted strings preceded by) +-3.183 F F2($)3.184 E F0 .684(is printed on the standard output.)3.184 F +.684(These are)5.684 F .458(the strings that are subject to language tr\ +anslation when the current locale is not)158 424.8 R F2(C)2.958 E F0(or) +2.958 E F2(POSIX)2.958 E F0(.)A(This implies the)158 436.8 Q F22.5 +E F0(option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 ([\255+]O [)108 448.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 460.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2 (shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097 @@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E 1.598(instead of the standard personal initialization \214le)4.279 F F3 (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E -(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(1)197.055 E 0 Cg EP +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(1)198.45 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -462,8 +462,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(2) -197.055 E 0 Cg EP +F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(2)198.45 E +0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -598,8 +598,7 @@ F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389 -.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) --2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(3)197.055 E 0 Cg -EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(3)198.45 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -667,2943 +666,3036 @@ F(ariables)-.92 E F0(belo)108 348 Q -.65(w.)-.25 G .85 (total user and system time consumed by the shell and its children.)108 376.8 R(The)6.073 E F4(TIMEFORMA)3.573 E(T)-.855 E F0 -.25(va)3.323 G 1.073(riable may be).25 F -(used to specify the format of the time information.)108 388.8 Q -(Each command in a pipeline is e)108 405.6 Q -.15(xe)-.15 G -(cuted as a separate process \(i.e., in a subshell\).).15 E F2(Lists)87 -422.4 Q F0(A)108 434.4 Q F1(list)2.849 E F0 .349(is a sequence of one o\ -r more pipelines separated by one of the operators)2.849 F F2(;)2.85 E -F0(,)A F2(&)2.85 E F0(,)A F2(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 -E F0 2.85(,a)C .35(nd option-)-2.85 F(ally terminated by one of)108 -446.4 Q F2(;)2.5 E F0(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2() -2.5 E F0(.)A .961(Of these list operators,)108 463.2 R F2(&&)3.461 E F0 -(and)3.461 E F2(||)3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961 -(qual precedence, follo).15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 -E F2(&)3.46 E F0 3.46(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96 -(qual prece-).15 F(dence.)108 475.2 Q 2.5(As)108 492 S -(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F1(list) -2.5 E F0(instead of a semicolon to delimit commands.)2.5 E .029 -(If a command is terminated by the control operator)108 508.8 R F2(&) +(used to specify the format of the time information.)108 388.8 Q .655 +(Each command in a pipeline is e)108 405.6 R -.15(xe)-.15 G .656 +(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.656 E +F4 .656(COMMAND EXE-)3.156 F 1.106(CUTION ENVIR)108 417.6 R(ONMENT)-.27 +E F0 1.106(for a description of a subshell en)3.356 F 3.606 +(vironment. If)-.4 F(the)3.606 E F2(lastpipe)3.606 E F0 1.105 +(option is enabled)3.606 F .744(using the)108 429.6 R F2(shopt)3.244 E +F0 -.2(bu)3.244 G .744(iltin \(see the description of).2 F F2(shopt) +3.245 E F0(belo)3.245 E .745 +(w\), the last element of a pipeline may be run by)-.25 F +(the shell process.)108 441.6 Q F2(Lists)87 458.4 Q F0(A)108 470.4 Q F1 +(list)2.85 E F0 .35(is a sequence of one or more pipelines separated by\ + one of the operators)2.85 F F2(;)2.849 E F0(,)A F2(&)2.849 E F0(,)A F2 +(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F2(||)2.849 E F0 2.849(,a)C .349 +(nd option-)-2.849 F(ally terminated by one of)108 482.4 Q F2(;)2.5 E F0 +(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2()2.5 E F0(.)A .96 +(Of these list operators,)108 499.2 R F2(&&)3.46 E F0(and)3.46 E F2(||) +3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15 +F .961(wed by)-.25 F F2(;)3.461 E F0(and)3.461 E F2(&)3.461 E F0 3.461 +(,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F +(dence.)108 511.2 Q 2.5(As)108 528 S(equence of one or more ne)-2.5 E +(wlines may appear in a)-.25 E F1(list)2.5 E F0 +(instead of a semicolon to delimit commands.)2.5 E .029 +(If a command is terminated by the control operator)108 544.8 R F2(&) 2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 -(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.529 E 2.876(as)108 520.8 S 2.876(ubshell. The)-2.876 F .376 -(shell does not w)2.876 F .375 -(ait for the command to \214nish, and the return status is 0.)-.1 F .375 -(Commands sepa-)5.375 F .848(rated by a)108 532.8 R F2(;)3.348 E F0 .848 -(are e)3.348 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F -.849(aits for each command to terminate in turn.)-.1 F .849(The return) -5.849 F(status is the e)108 544.8 Q(xit status of the last command e) +(cutes the command in the).15 F F1(bac)2.528 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.528 E 2.875(as)108 556.8 S 2.875(ubshell. The)-2.875 F .375 +(shell does not w)2.875 F .375 +(ait for the command to \214nish, and the return status is 0.)-.1 F .376 +(Commands sepa-)5.376 F .849(rated by a)108 568.8 R F2(;)3.349 E F0 .849 +(are e)3.349 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F +.848(aits for each command to terminate in turn.)-.1 F .848(The return) +5.848 F(status is the e)108 580.8 Q(xit status of the last command e) -.15 E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences \ -of one or more pipelines separated by the)108 561.6 R F2(&&)3.436 E F0 -(and)3.436 E F2(||)3.436 E F0 .936(control operators,)3.436 F(respecti) -108 573.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 +of one or more pipelines separated by the)108 597.6 R F2(&&)3.437 E F0 +(and)3.437 E F2(||)3.437 E F0 .937(control operators,)3.437 F(respecti) +108 609.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G -2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 590.4 Q F2(&&) -2.5 E F1(command2)2.5 E(command2)108.2 607.2 Q F0(is e)2.52 E -.15(xe) +2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 626.4 Q F2(&&) +2.5 E F1(command2)2.5 E(command2)108.2 643.2 Q F0(is e)2.52 E -.15(xe) -.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e) -2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 624 Q F1 -(command1)144 640.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)108.2 657.6 -Q F0 .728(is e)3.248 F -.15(xe)-.15 G .729(cuted if and only if).15 F F1 -(command1)3.429 E F0 .729(returns a non-zero e)3.229 F .729(xit status.) --.15 F .729(The return status of AND)5.729 F(and OR lists is the e)108 -669.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E F2(Compound Commands)87 686.4 Q F0(A)108 698.4 -Q F1 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F -3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F1(list)3.553 E F0 -1.053(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be) --3.553 F 1.026(separated from the rest of the command by one or more ne) -108 710.4 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 -F 1.027(wline in)-.25 F(place of a semicolon.)108 722.4 Q(GNU Bash 4.4) -72 768 Q(2016 August 26)142.895 E(4)197.055 E 0 Cg EP +2.5 E(xit status of zero \(success\).)-.15 E(An OR list has the form)108 +660 Q F1(command1)144 676.8 Q F2(||)2.5 E F1(command2)2.5 E(command2) +108.2 693.6 Q F0 .435(is e)2.955 F -.15(xe)-.15 G .435 +(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435 +(returns a non-zero e)2.935 F .435(xit status.)-.15 F .434 +(The return status of AND)5.434 F(and OR lists is the e)108 705.6 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E +(4)198.45 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(\()108 84 Q/F1 10 -/Times-Italic@0 SF(list)A F0(\))A F1(list)144 84 Q F0 .011(is e)2.512 F --.15(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see) --.4 F/F2 9/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT) --.27 E F0(belo)2.261 E(w\).)-.25 E -1.11(Va)144 96 S 1.063 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.053 +(compound command)3.553 F F0 1.053(is one of the follo)3.553 F 3.553 +(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.054 +(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be)-3.554 F +1.027(separated from the rest of the command by one or more ne)108 108 R +1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 F 1.026 +(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list) +A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.511 F -.15(xe)-.15 G .011 +(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9 +/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0 +(belo)2.262 E(w\).)-.25 E -1.11(Va)144 148.8 S 1.064 (riable assignments and b)1.11 F 1.064(uiltin commands that af)-.2 F 1.064(fect the shell')-.25 F 3.564(se)-.55 G -.4(nv)-3.564 G 1.064 -(ironment do not remain in).4 F(ef)144 108 Q +(ironment do not remain in).4 F(ef)144 160.8 Q (fect after the command completes.)-.25 E(The return status is the e)5 E -(xit status of)-.15 E F1(list)2.5 E F0(.)A({)108 124.8 Q F1(list)2.5 E -F0 2.5(;})C F1(list)144 124.8 Q F0 .402(is simply e)2.902 F -.15(xe)-.15 -G .401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list) -5.401 E F0 .401(must be terminated with a ne)2.901 F .401(wline or)-.25 -F 3.214(semicolon. This)144 136.8 R .714(is kno)3.214 F .714(wn as a) --.25 F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 -(he return status is the e)-5.715 F .715(xit status of)-.15 F F1(list) -3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 148.8 R 2.72(et) --.1 G .22(he metacharacters)-2.72 F/F3 10/Times-Bold@0 SF(\()2.72 E F0 -(and)2.72 E F3(\))2.72 E F0(,)A F3({)2.72 E F0(and)2.72 E F3(})2.719 E -F0(are)2.719 E F1 -.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 -.219(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 160.8 S -.256(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756 -(yd)-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257 -(ord break, the)-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F -(from)144 172.8 Q F1(list)2.5 E F0 -(by whitespace or another shell metacharacter)2.5 E(.)-.55 E(\(\()108 -189.6 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 201.6 Q F1 --.2(ex)2.552 G(pr).2 E(ession)-.37 E F0 .052(is e)2.552 F -.25(va)-.25 G -.051(luated according to the rules described belo).25 F 2.551(wu)-.25 G -(nder)-2.551 E F2 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E(A-)-.54 E -(TION)144 213.6 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)4.91 F .411 -(alue of the e)-.25 F .411(xpression is non-zero, the return status is \ -0; otherwise the return status)-.15 F(is 1.)144 225.6 Q(This is e)5 E -(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F3(let ")2.5 E F1 -.2 -(ex)C(pr).2 E(ession)-.37 E F3(")A F0(.)A F3([[)108 242.4 Q F1 -.2(ex) -2.5 G(pr).2 E(ession)-.37 E F3(]])2.5 E F0 1.3 -(Return a status of 0 or 1 depending on the e)144 254.4 R -.25(va)-.25 G -1.299(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex) -3.799 G(pr).2 E(ession)-.37 E F0(.)A 2.273 -(Expressions are composed of the primaries described belo)144 266.4 R -4.774(wu)-.25 G(nder)-4.774 E F2(CONDITION)4.774 E 2.274(AL EXPRES-)-.18 -F(SIONS)144 278.4 Q F4(.)A F0 -.8(Wo)5.633 G 1.133 +(xit status of)-.15 E F2(list)2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E +F0 2.5(;})C F2(list)144 177.6 Q F0 .401(is simply e)2.901 F -.15(xe)-.15 +G .401(cuted in the current shell en).15 F(vironment.)-.4 E F2(list) +5.401 E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25 +F 3.215(semicolon. This)144 189.6 R .715(is kno)3.215 F .715(wn as a) +-.25 F F2(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 +(he return status is the e)-5.715 F .714(xit status of)-.15 F F2(list) +3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 201.6 R 2.719(et) +-.1 G .219(he metacharacters)-2.719 F F1(\()2.719 E F0(and)2.719 E F1 +(\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719 +E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22 +(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 213.6 S .257 +(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd) +-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the) +-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 225.6 Q F2 +(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55 +E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 +254.4 Q F2 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F +-.25(va)-.25 G .051(luated according to the rules described belo).25 F +2.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E +(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v) +4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\ +n status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q +(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ") +2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q +F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 1.299 +(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G +1.3(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)3.8 G +(pr).2 E(ession)-.37 E F0(.)A 2.274 +(Expressions are composed of the primaries described belo)144 319.2 R +4.773(wu)-.25 G(nder)-4.773 E F3(CONDITION)4.773 E 2.273(AL EXPRES-)-.18 +F(SIONS)144 331.2 Q F4(.)A F0 -.8(Wo)5.632 G 1.133 (rd splitting and pathname e).8 F 1.133 (xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F -F3([[)3.632 E F0(and)144 290.4 Q F3(]])2.963 E F0 2.963(;t)C .463 -(ilde e)-2.963 F .464(xpansion, parameter and v)-.15 F .464(ariable e) --.25 F .464(xpansion, arithmetic e)-.15 F .464 +F1([[)3.633 E F0(and)144 343.2 Q F1(]])2.964 E F0 2.964(;t)C .464 +(ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e) +-.25 F .463(xpansion, arithmetic e)-.15 F .463 (xpansion, command substi-)-.15 F 1.081 -(tution, process substitution, and quote remo)144 302.4 R -.25(va)-.15 G +(tution, process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.581(la).25 G 1.081(re performed.)-3.581 F 1.081 -(Conditional operators such as)6.081 F F33.58 E F0 -(must be unquoted to be recognized as primaries.)144 314.4 Q -(When used with)144 332.4 Q F3([[)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E -F0(and)2.5 E F3(>)2.5 E F0(operators sort le)2.5 E -(xicographically using the current locale.)-.15 E .502(When the)144 -350.4 R F3(==)3.002 E F0(and)3.002 E F3(!=)3.002 E F0 .502(operators ar\ +(Conditional operators such as)6.081 F F13.581 E F0 +(must be unquoted to be recognized as primaries.)144 367.2 Q +(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E +F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E +(xicographically using the current locale.)-.15 E .503(When the)144 +403.2 R F1(==)3.003 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\ e used, the string to the right of the operator is considered a pat-) 3.002 F .81(tern and matched according to the rules described belo)144 -362.4 R 3.31(wu)-.25 G(nder)-3.31 E F3 -.1(Pa)3.31 G(tter).1 E 3.31(nM) +415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM) -.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) --3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.389 -(shell option were enabled.)3.889 F(The)6.389 E F3(=)3.889 E F0 1.389 -(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F3(==)3.89 -E F0 6.39(.I)C 3.89(ft)-6.39 G(he)-3.89 E F3(nocasematch)3.89 E F0 -(shell)3.89 E .272(option is enabled, the match is performed without re) -144 386.4 R -.05(ga)-.15 G .271 -(rd to the case of alphabetic characters.).05 F(The)5.271 E 1.067 -(return v)144 398.4 R 1.068(alue is 0 if the string matches \()-.25 F F3 -(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()-3.568 F -F3(!=)A F0 3.568(\)t)C 1.068(he pattern, and 1 otherwise.)-3.568 F(An) -144 410.4 Q 2.5(yp)-.15 G(art of the pattern may be quoted to force the\ - quoted portion to be matched as a string.)-2.5 E .243 -(An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0 +-3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 1.39 +(shell option were enabled.)3.89 F(The)6.39 E F1(=)3.889 E F0 1.389 +(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F1(==)3.889 +E F0 6.389(.I)C 3.889(ft)-6.389 G(he)-3.889 E F1(nocasematch)3.889 E F0 +(shell)3.889 E .271 +(option is enabled, the match is performed without re)144 439.2 R -.05 +(ga)-.15 G .272(rd to the case of alphabetic characters.).05 F(The)5.272 +E 1.068(return v)144 451.2 R 1.068(alue is 0 if the string matches \() +-.25 F F1(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \() +-3.568 F F1(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.) +-3.568 F(An)144 463.2 Q 2.5(yp)-.15 G(art of the pattern may be quoted \ +to force the quoted portion to be matched as a string.)-2.5 E .243 +(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0 2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 -(ilable, with the same precedence as).25 F F3(==)2.743 E F0(and)2.743 E -F3(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 +(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E +F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 (used, the string to the right of the operator is considered an e)144 -440.4 R 1.954(xtended re)-.15 F 1.954(gular e)-.15 F 1.954 -(xpression and)-.15 F .207(matched accordingly \(as in)144 452.4 R F1 +493.2 R 1.953(xtended re)-.15 F 1.953(gular e)-.15 F 1.953 +(xpression and)-.15 F .207(matched accordingly \(as in)144 505.2 R F2 -.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207 (return v)2.707 F .207 -(alue is 0 if the string matches the pattern, and 1)-.25 F 3.345 -(otherwise. If)144 464.4 R .845(the re)3.345 F .845(gular e)-.15 F .846 +(alue is 0 if the string matches the pattern, and 1)-.25 F 3.346 +(otherwise. If)144 517.2 R .846(the re)3.346 F .846(gular e)-.15 F .845 (xpression is syntactically incorrect, the conditional e)-.15 F -(xpression')-.15 E 3.346(sr)-.55 G(eturn)-3.346 E -.25(va)144 476.4 S -.667(lue is 2.).25 F .667(If the)5.667 F F3(nocasematch)3.167 E F0 .667 +(xpression')-.15 E 3.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 529.2 S +.666(lue is 2.).25 F .667(If the)5.667 F F1(nocasematch)3.167 E F0 .667 (shell option is enabled, the match is performed without re)3.167 F -.05 -(ga)-.15 G .666(rd to).05 F .592(the case of alphabetic characters.)144 -488.4 R(An)5.592 E 3.092(yp)-.15 G .593 -(art of the pattern may be quoted to force the quoted por)-3.092 F(-)-.2 -E 1.016(tion to be matched as a string.)144 500.4 R(Brack)6.016 E 1.016 +(ga)-.15 G .667(rd to).05 F .593(the case of alphabetic characters.)144 +541.2 R(An)5.593 E 3.093(yp)-.15 G .592 +(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2 +E 1.016(tion to be matched as a string.)144 553.2 R(Brack)6.016 E 1.016 (et e)-.1 F 1.016(xpressions in re)-.15 F 1.016(gular e)-.15 F 1.016 -(xpressions must be treated care-)-.15 F(fully)144 512.4 Q 4.435(,s)-.65 -G 1.935 -(ince normal quoting characters lose their meanings between brack)-4.435 -F 4.436(ets. If)-.1 F 1.936(the pattern is)4.436 F .265 -(stored in a shell v)144 524.4 R .265(ariable, quoting the v)-.25 F .264 -(ariable e)-.25 F .264 -(xpansion forces the entire pattern to be matched as)-.15 F 3.773(as)144 -536.4 S 3.773(tring. Substrings)-3.773 F 1.274 -(matched by parenthesized sube)3.773 F 1.274(xpressions within the re) --.15 F 1.274(gular e)-.15 F 1.274(xpression are)-.15 F(sa)144 548.4 Q --.15(ve)-.2 G 3.097(di).15 G 3.097(nt)-3.097 G .597(he array v)-3.097 F -(ariable)-.25 E F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0 -.597(The element of)5.097 F F2 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E -F0 .597(with inde)2.847 F 3.097(x0)-.15 G(is)-.001 E .049 -(the portion of the string matching the entire re)144 560.4 R .049 -(gular e)-.15 F 2.549(xpression. The)-.15 F .05(element of)2.55 F F2 --.27(BA)2.55 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 572.4 Q(x)-.15 -E F1(n)2.5 E F0(is the portion of the string matching the)2.5 E F1(n)2.5 -E F0(th parenthesized sube)A(xpression.)-.15 E .786 -(Expressions may be combined using the follo)144 590.4 R .785 +(xpressions must be treated care-)-.15 F(fully)144 565.2 Q 4.436(,s)-.65 +G 1.936 +(ince normal quoting characters lose their meanings between brack)-4.436 +F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264 +(stored in a shell v)144 577.2 R .264(ariable, quoting the v)-.25 F .264 +(ariable e)-.25 F .265 +(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144 +589.2 S 3.774(tring. Substrings)-3.774 F 1.274 +(matched by parenthesized sube)3.774 F 1.273(xpressions within the re) +-.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 601.2 Q +-.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F +(ariable)-.25 E F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0 +.597(The element of)5.097 F F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E +F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 +(the portion of the string matching the entire re)144 613.2 R .049 +(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 F F3 +-.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 625.2 Q(x) +-.15 E F2(n)2.5 E F0(is the portion of the string matching the)2.5 E F2 +(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785 +(Expressions may be combined using the follo)144 643.2 R .786 (wing operators, listed in decreasing order of prece-)-.25 F(dence:)144 -602.4 Q F3(\()144 620.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F3(\)) -2.5 E F0 .522(Returns the v)180 632.4 R .522(alue of)-.25 F F1 -.2(ex) +655.2 Q F1(\()144 673.2 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(\)) +2.5 E F0 .523(Returns the v)180 685.2 R .522(alue of)-.25 F F2 -.2(ex) 3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o) -5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F -(operators.)180 644.4 Q F3(!)144 656.4 Q F1 -.2(ex)2.5 G(pr).2 E(ession) --.37 E F0 -.35(Tr)180 668.4 S(ue if).35 E F1 -.2(ex)2.5 G(pr).2 E -(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F1 -.2(ex)144 680.4 S(pr).2 E -(ession1)-.37 E F3(&&)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 --.35(Tr)180 692.4 S(ue if both).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1) --.37 E F0(and)2.5 E F1 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.) -2.52 E F1 -.2(ex)144 704.4 S(pr).2 E(ession1)-.37 E F3(||)2.5 E F1 -.2 -(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35 -E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr) -.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(5)197.055 E 0 Cg EP +(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(5) +198.45 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The)144 84 Q/F1 10 -/Times-Bold@0 SF(&&)3.641 E F0(and)3.641 E F1(||)3.641 E F0 1.141 -(operators do not e)3.641 F -.25(va)-.25 G(luate).25 E/F2 10 -/Times-Italic@0 SF -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141 -(if the v)3.641 F 1.14(alue of)-.25 F F2 -.2(ex)3.64 G(pr).2 E(ession1) --.37 E F0 1.14(is suf)3.64 F 1.14(\214cient to)-.25 F -(determine the return v)144 96 Q(alue of the entire conditional e)-.25 E -(xpression.)-.15 E F1 -.25(fo)108 112.8 S(r).25 E F2(name)2.5 E F0 2.5 -([[)2.5 G F1(in)A F0([)2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5 -(]];])2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .423 -(The list of w)144 124.8 R .423(ords follo)-.1 F(wing)-.25 E F1(in)2.923 -E F0 .423(is e)2.923 F .423(xpanded, generating a list of items.)-.15 F -.424(The v)5.424 F(ariable)-.25 E F2(name)2.924 E F0 .424(is set to) -2.924 F .653(each element of this list in turn, and)144 136.8 R F2(list) -3.153 E F0 .653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F -.653(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 -(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .648(command e) -144 148.8 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(!)144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 E +F0 -.35(Tr)180 96 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 +(is f)2.74 E(alse.)-.1 E F2 -.2(ex)144 108 S(pr).2 E(ession1)-.37 E F1 +(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 120 S +(ue if both).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.)2.52 E F2 -.2(ex)144 +132 S(pr).2 E(ession1)-.37 E F1(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E +(ession2)-.37 E F0 -.35(Tr)180 144 S(ue if either).35 E F2 -.2(ex)2.5 G +(pr).2 E(ession1)-.37 E F0(or)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 +E F0(is true.)2.52 E(The)144 160.8 Q F1(&&)3.64 E F0(and)3.64 E F1(||) +3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E F2 +-.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141(if the v)3.641 F 1.141 +(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E(ession1)-.37 E F0 1.141 +(is suf)3.641 F 1.141(\214cient to)-.25 F(determine the return v)144 +172.8 Q(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 +-.25(fo)108 189.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([) +2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2 +(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 201.6 R +.424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F +.423(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F +(ariable)-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653 +(each element of this list in turn, and)144 213.6 R F2(list)3.153 E F0 +.653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653 +(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653 +(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e) +144 225.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 (once for each positional parameter that is set \(see)3.148 F/F3 9 -/Times-Bold@0 SF -.666(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).) --.25 E .154(The return status is the e)144 160.8 R .153 -(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653 -(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F -(follo)144 172.8 Q(wing)-.25 E F1(in)2.5 E F0 +/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) +-.25 E .153(The return status is the e)144 237.6 R .153 +(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654 +(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F +(follo)144 249.6 Q(wing)-.25 E F1(in)2.5 E F0 (results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G -(cuted, and the return status is 0.).15 E F1 -.25(fo)108 189.6 S(r).25 E +(cuted, and the return status is 0.).15 E F1 -.25(fo)108 266.4 S(r).25 E F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2 -(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.235(First, the arithmetic e) -144 201.6 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e) -3.735 F -.25(va)-.25 G 1.236 -(luated according to the rules described belo).25 F 3.736(wu)-.25 G -(nder)-3.736 E F3 .562(ARITHMETIC EV)144 213.6 R(ALU)-1.215 E -.855(AT) --.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e) -5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e) -3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144 -225.6 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 F +(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e) +144 278.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) +3.736 F -.25(va)-.25 G 1.235 +(luated according to the rules described belo).25 F 3.735(wu)-.25 G +(nder)-3.735 E F3 .561(ARITHMETIC EV)144 290.4 R(ALU)-1.215 E -.855(AT) +-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) +5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) +3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 +302.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592 -(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e) -3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144 -237.6 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 F +(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e) +3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 +314.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F -.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229 (xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G -2.729(si)-2.729 G 2.729(fi)-2.729 G 2.728(te)-2.729 G -.25(va)-2.978 G -.228(luates to 1.).25 F .227(The return v)144 249.6 R .227 -(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2 -(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f) -.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728 -E -.15(ex)144 261.6 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 -(select)108 278.4 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) +2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G +.229(luates to 1.).25 F .228(The return v)144 326.4 R .228 +(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 +(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) +.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 +E -.15(ex)144 338.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1 +(select)108 355.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d) -.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 -.433(The list of w)144 290.4 R .433(ords follo)-.1 F(wing)-.25 E F1(in) -2.933 E F0 .432(is e)2.933 F .432(xpanded, generating a list of items.) --.15 F .432(The set of e)5.432 F .432(xpanded w)-.15 F(ords)-.1 E .842 -(is printed on the standard error)144 302.4 R 3.342(,e)-.4 G .842 +.432(The list of w)144 367.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in) +2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) +-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 +(is printed on the standard error)144 379.2 R 3.342(,e)-.4 G .842 (ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he) --3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .843 -(is omitted, the posi-)3.343 F .201(tional parameters are printed \(see) -144 314.4 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 +-3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842 +(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) +144 391.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701 (w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a) -2.451 F .213(line read from the standard input.)144 326.4 R .213 -(If the line consists of a number corresponding to one of the dis-)5.213 -F 1.538(played w)144 338.4 R 1.538(ords, then the v)-.1 F 1.538(alue of) --.25 F F2(name)4.398 E F0 1.537(is set to that w)4.218 F 4.037(ord. If) --.1 F 1.537(the line is empty)4.037 F 4.037(,t)-.65 G 1.537(he w)-4.037 -F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 350.4 R 2.565 -(ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An) -5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25 -F F2(name)144.36 362.4 Q F0 .954(to be set to null.)3.634 F .954 -(The line read is sa)5.954 F -.15(ve)-.2 G 3.453(di).15 G 3.453(nt) --3.453 G .953(he v)-3.453 F(ariable)-.25 E F3(REPL)3.453 E(Y)-.828 E F4 -(.)A F0(The)5.453 E F2(list)3.543 E F0 .953(is e)4.133 F -.15(xe)-.15 G -.953(cuted after).15 F .071(each selection until a)144 374.4 R F1(br) +2.451 F .214(line read from the standard input.)144 403.2 R .213 +(If the line consists of a number corresponding to one of the dis-)5.214 +F 1.537(played w)144 415.2 R 1.537(ords, then the v)-.1 F 1.537(alue of) +-.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) +-.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 +F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 427.2 R 2.566 +(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) +5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 +F F2(name)144.36 439.2 Q F0 .953(to be set to null.)3.633 F .953 +(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt) +-3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4 +(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G +.954(cuted after).15 F .072(each selection until a)144 451.2 R F1(br) 2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 (cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) -2.571 E F0 .071(is the e)2.571 F .072(xit status of the)-.15 F -(last command e)144 386.4 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E +2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F +(last command e)144 463.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe) --.15 G(cuted.).15 E F1(case)108 403.2 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 -E F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 +-.15 G(cuted.).15 E F1(case)108 480 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E +F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2 (pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...) -2.5 E F1(esac)2.5 E F0(A)144 415.2 Q F1(case)3.265 E F0 .764 -(command \214rst e)3.265 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 +2.5 E F1(esac)2.5 E F0(A)144 492 Q F1(case)3.264 E F0 .764 +(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0 3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F -F2(pattern)3.264 E F0 .764(in turn, using the)3.264 F .595 -(same matching rules as for pathname e)144 427.2 R .595(xpansion \(see) --.15 F F1 -.1(Pa)3.095 G .596(thname Expansion).1 F F0(belo)3.096 E -3.096(w\). The)-.25 F F2(wor)3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 -439.2 S 1.72(panded using tilde e).15 F 1.72(xpansion, parameter and v) --.15 F 1.72(ariable e)-.25 F 1.72(xpansion, arithmetic e)-.15 F 1.72 -(xpansion, com-)-.15 F 1.268 -(mand substitution, process substitution and quote remo)144 451.2 R -.25 -(va)-.15 G 3.768(l. Each).25 F F2(pattern)3.768 E F0 -.15(ex)3.768 G -1.269(amined is e).15 F(xpanded)-.15 E .203(using tilde e)144 463.2 R -.203(xpansion, parameter and v)-.15 F .203(ariable e)-.25 F .203 -(xpansion, arithmetic e)-.15 F .203(xpansion, command substitu-)-.15 F -.232(tion, and process substitution.)144 475.2 R .233(If the)5.233 F F1 -(nocasematch)2.733 E F0 .233 -(shell option is enabled, the match is performed)2.733 F .234 -(without re)144 487.2 R -.05(ga)-.15 G .234 -(rd to the case of alphabetic characters.).05 F .234 -(When a match is found, the corresponding)5.234 F F2(list)2.734 E F0 -.625(is e)144 499.2 R -.15(xe)-.15 G 3.125(cuted. If).15 F(the)3.125 E -F1(;;)3.125 E F0 .625(operator is used, no subsequent matches are attem\ -pted after the \214rst pattern)3.125 F 2.932(match. Using)144 511.2 R F1 -(;&)2.932 E F0 .432(in place of)2.932 F F1(;;)2.932 E F0 .432(causes e) -2.932 F -.15(xe)-.15 G .432(cution to continue with the).15 F F2(list) -2.932 E F0 .431(associated with the ne)2.931 F(xt)-.15 E .866 -(set of patterns.)144 523.2 R(Using)5.866 E F1(;;&)3.366 E F0 .866 -(in place of)3.366 F F1(;;)3.366 E F0 .866 -(causes the shell to test the ne)3.366 F .866 -(xt pattern list in the state-)-.15 F .878(ment, if an)144 535.2 R 2.178 --.65(y, a)-.15 H .878(nd e).65 F -.15(xe)-.15 G .878(cute an).15 F 3.378 -(ya)-.15 G(ssociated)-3.378 E F2(list)3.378 E F0 .878 -(on a successful match.)3.378 F .878(The e)5.878 F .877 -(xit status is zero if no)-.15 F(pattern matches.)144 547.2 Q -(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E -.15 -(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2(list) -2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list) -2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1 -(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) -2.977 E F2(list)3.067 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 -(cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F -F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G -2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.978 E F2(list)2.978 -E F0 1.088(is e)144 588 R -.15(xe)-.15 G 1.088 -(cuted in turn, and if its e).15 F 1.087 +F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F 2.218 +(matching rules described under)144 504 R F1 -.1(Pa)4.718 G(tter).1 E +4.718(nM)-.15 G(atching)-4.718 E F0(belo)4.718 E 6.017 -.65(w. T)-.25 H +(he).65 E F2(wor)4.717 E(d)-.37 E F0 2.217(is e)4.717 F 2.217 +(xpanded using tilde)-.15 F -.15(ex)144 516 S 3.968 +(pansion, parameter and v).15 F 3.969(ariable e)-.25 F 3.969 +(xpansion, arithmetic e)-.15 F 3.969(xpansion, command substitution,) +-.15 F .042(process substitution and quote remo)144 528 R -.25(va)-.15 G +2.542(l. Each).25 F F2(pattern)2.542 E F0 -.15(ex)2.542 G .042 +(amined is e).15 F .041(xpanded using tilde e)-.15 F(xpansion,)-.15 E .8 +(parameter and v)144 540 R .8(ariable e)-.25 F .8 +(xpansion, arithmetic e)-.15 F .8 +(xpansion, command substitution, and process sub-)-.15 F 2.583 +(stitution. If)144 552 R(the)2.583 E F1(nocasematch)2.583 E F0 .083 +(shell option is enabled, the match is performed without re)2.583 F -.05 +(ga)-.15 G .082(rd to the).05 F .278(case of alphabetic characters.)144 +564 R .279(When a match is found, the corresponding)5.278 F F2(list) +2.779 E F0 .279(is e)2.779 F -.15(xe)-.15 G 2.779(cuted. If).15 F(the) +2.779 E F1(;;)2.779 E F0 .812(operator is used, no subsequent matches a\ +re attempted after the \214rst pattern match.)144 576 R(Using)5.812 E F1 +(;&)3.312 E F0(in)3.312 E .007(place of)144 588 R F1(;;)2.507 E F0 .007 +(causes e)2.507 F -.15(xe)-.15 G .007(cution to continue with the).15 F +F2(list)2.507 E F0 .007(associated with the ne)2.507 F .007 +(xt set of patterns.)-.15 F(Using)5.008 E F1(;;&)144 600 Q F0 .561 +(in place of)3.061 F F1(;;)3.061 E F0 .561 +(causes the shell to test the ne)3.061 F .56 +(xt pattern list in the statement, if an)-.15 F 1.86 -.65(y, a)-.15 H +.56(nd e).65 F -.15(xe)-.15 G(cute).15 E(an)144 612 Q 2.568(ya)-.15 G +(ssociated)-2.568 E F2(list)2.568 E F0 .068(on a successful match.)2.568 +F .068(The e)5.068 F .068(xit status is zero if no pattern matches.)-.15 +F(Otherwise,)5.069 E(it is the e)144 624 Q +(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E +F2(list)2.5 E F0(.)A F1(if)108 640.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 +E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E +F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 +2.5(;])C F1<8c>A F0(The)144 652.8 Q F1(if)2.978 E F2(list)3.068 E F0 +.478(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 +F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 +.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each) +2.978 E F1(elif)2.977 E F2(list)2.977 E F0 1.087(is e)144 664.8 R -.15 +(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087 (xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list) -3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F -.103(command completes.)144 600 R .103(Otherwise, the)5.103 F F1(else) +3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F +.104(command completes.)144 676.8 R .103(Otherwise, the)5.104 F F1(else) 2.603 E F2(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103 (cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e) --.15 F .104(xit sta-)-.15 F(tus of the last command e)144 612 Q -.15(xe) --.15 G(cuted, or zero if no condition tested true.).15 E F1(while)108 -628.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 -(done)2.5 E(until)108 640.8 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2 -(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 652.8 Q F1(while)3.45 E F0 -.95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15 -F F2(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F -F2(list-1)144 664.8 Q F0 .205(returns an e)2.705 F .205 -(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205 -(command is identical to the)2.705 F F1(while)2.705 E F0 .205 -(command, e)2.705 F(xcept)-.15 E .6(that the test is ne)144 676.8 R -.05 -(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F -.15(xe)-.15 G -.599(cuted as long as the last command in).15 F F2(list-1)3.189 E F0 -.599(returns a non-zero)3.099 F -.15(ex)144 688.8 S .204(it status.).15 -F .204(The e)5.204 F .204(xit status of the)-.15 F F1(while)2.704 E F0 -(and)2.704 E F1(until)2.704 E F0 .205(commands is the e)2.704 F .205 -(xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15 -E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) --.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(6)197.055 E 0 Cg EP +-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 688.8 Q -.15 +(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while) +108 705.6 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1 +(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(6)198.45 E 0 +Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(Copr)87 84 Q(ocesses)-.18 E F0(A)108 96 Q/F2 10/Times-Italic@0 SF -(copr)3.713 E(ocess)-.45 E F0 1.213(is a shell command preceded by the) -3.713 F F1(copr)3.712 E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F -3.712(ord. A)-.1 F 1.212(coprocess is e)3.712 F -.15(xe)-.15 G 1.212 -(cuted asyn-).15 F .574(chronously in a subshell, as if the command had\ - been terminated with the)108 108 R F1(&)3.075 E F0 .575 -(control operator)3.075 F 3.075(,w)-.4 G .575(ith a tw)-3.075 F(o-)-.1 E --.1(wa)108 120 S 2.5(yp).1 G(ipe established between the e)-2.5 E -.15 -(xe)-.15 G(cuting shell and the coprocess.).15 E -(The format for a coprocess is:)108 136.8 Q F1(copr)144 153.6 Q(oc)-.18 -E F0([)2.5 E F2 -.27(NA)C(ME).27 E F0(])A F2(command)2.5 E F0([)2.5 E F2 --.37(re)C(dir).37 E(ections)-.37 E F0(])A .709 -(This creates a coprocess named)108 170.4 R F2 -.27(NA)3.208 G(ME).27 E -F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708 -(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208 -E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64 -(must not be supplied if)108 182.4 R F2(command)3.14 E F0 .64(is a)3.14 +SF(until)108 84 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5 +E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 96 Q F1(while)3.45 E +F0 .95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list) +.15 F F2(list-2)3.45 E F0 .95(as long as the last command in the list) +3.45 F F2(list-1)144 108 Q F0 .205(returns an e)2.705 F .205 +(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205 +(command is identical to the)2.705 F F1(while)2.705 E F0 .205 +(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 120 R -.05 +(ga)-.15 G(ted:).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15(xe) +-.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 E F0 +.6(returns a non-zero)3.1 F -.15(ex)144 132 S .205(it status.).15 F .205 +(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0(and) +2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204 +(xit status of the last command)-.15 F -.15(exe)144 144 S(cuted in).15 E +F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)-.1 +E -.15(xe)-.15 G(cuted.).15 E F1(Copr)87 160.8 Q(ocesses)-.18 E F0(A)108 +172.8 Q F2(copr)3.712 E(ocess)-.45 E F0 1.212 +(is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0 +(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213 +(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\ +onously in a subshell, as if the command had been terminated with the) +108 184.8 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G +.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 196.8 S 2.5(yp).1 G +(ipe established between the e)-2.5 E -.15(xe)-.15 G +(cuting shell and the coprocess.).15 E(The format for a coprocess is:) +108 213.6 Q F1(copr)144 230.4 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27 +E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37 +E F0(])A .708(This creates a coprocess named)108 247.2 R F2 -.27(NA) +3.208 G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 +.708(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR) +3.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64 +(must not be supplied if)108 259.2 R F2(command)3.14 E F0 .64(is a)3.14 F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 -194.4 S 1.44(rd of the simple command.).1 F 1.44 +271.2 S 1.44(rd of the simple command.).1 F 1.44 (When the coprocess is e)6.44 F -.15(xe)-.15 G 1.44 (cuted, the shell creates an array v).15 F 1.44(ariable \(see)-.25 F F1 -(Arrays)108 206.4 Q F0(belo)3.67 E 1.17(w\) named)-.25 F F2 -.27(NA)3.67 -G(ME).27 E F0 1.17(in the conte)3.67 F 1.171(xt of the e)-.15 F -.15(xe) --.15 G 1.171(cuting shell.).15 F 1.171(The standard output of)6.171 F F2 -(command)3.871 E F0(is)4.441 E 2.029 -(connected via a pipe to a \214le descriptor in the e)108 218.4 R -.15 +(Arrays)108 283.2 Q F0(belo)3.671 E 1.171(w\) named)-.25 F F2 -.27(NA) +3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F +-.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of) +6.17 F F2(command)3.87 E F0(is)4.44 E 2.029 +(connected via a pipe to a \214le descriptor in the e)108 295.2 R -.15 (xe)-.15 G 2.029 (cuting shell, and that \214le descriptor is assigned to).15 F F2 -.27 -(NA)108 230.4 S(ME).27 E F0 3.856([0]. The)B 1.356(standard input of) -3.856 F F2(command)4.056 E F0 1.357 -(is connected via a pipe to a \214le descriptor in the e)4.626 F -.15 +(NA)108 307.2 S(ME).27 E F0 3.857([0]. The)B 1.357(standard input of) +3.857 F F2(command)4.057 E F0 1.356 +(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15 (xe)-.15 G(cuting).15 E .103 -(shell, and that \214le descriptor is assigned to)108 242.4 R F2 -.27 +(shell, and that \214le descriptor is assigned to)108 319.2 R F2 -.27 (NA)2.603 G(ME).27 E F0 2.603([1]. This)B .103 -(pipe is established before an)2.603 F 2.603(yr)-.15 G .103 -(edirections spec-)-2.603 F 1.271(i\214ed by the command \(see)108 254.4 +(pipe is established before an)2.603 F 2.604(yr)-.15 G .104 +(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 331.2 R/F3 9/Times-Bold@0 SF(REDIRECTION)3.771 E F0(belo)3.521 E 3.771 (w\). The)-.25 F 1.271(\214le descriptors can be utilized as ar)3.771 F -1.272(guments to)-.18 F .515 -(shell commands and redirections using standard w)108 266.4 R .515 -(ord e)-.1 F 3.015(xpansions. The)-.15 F .515 -(\214le descriptors are not a)3.015 F -.25(va)-.2 G .515(ilable in).25 F -3.636(subshells. The)108 278.4 R 1.136(process ID of the shell spa)3.636 -F 1.137(wned to e)-.15 F -.15(xe)-.15 G 1.137(cute the coprocess is a) -.15 F -.25(va)-.2 G 1.137(ilable as the v).25 F 1.137(alue of the)-.25 F --.25(va)108 290.4 S(riable).25 E F2 -.27(NA)2.5 G(ME).27 E F0 2.5 -(_PID. The)B F1(wait)2.5 E F0 -.2(bu)2.5 G -(iltin command may be used to w).2 E +1.271(guments to)-.18 F 1.719 +(shell commands and redirections using standard w)108 343.2 R 1.719 +(ord e)-.1 F 4.219(xpansions. Other)-.15 F 1.72(than those created to e) +4.219 F -.15(xe)-.15 G(cute).15 E .945 +(command and process substitutions, the \214le descriptors are not a)108 +355.2 R -.25(va)-.2 G .945(ilable in subshells.).25 F .944 +(The process ID of)5.944 F .597(the shell spa)108 367.2 R .597 +(wned to e)-.15 F -.15(xe)-.15 G .597(cute the coprocess is a).15 F -.25 +(va)-.2 G .597(ilable as the v).25 F .597(alue of the v)-.25 F(ariable) +-.25 E F2 -.27(NA)3.097 G(ME).27 E F0 3.097(_PID. The)B F1(wait)3.098 E +F0 -.2(bu)108 379.2 S(iltin command may be used to w).2 E (ait for the coprocess to terminate.)-.1 E .336 -(Since the coprocess is created as an asynchronous command, the)108 -307.2 R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 -G .335(ys returns success.).1 F -(The return status of a coprocess is the e)108 319.2 Q(xit status of) --.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 336 Q -F0 2.697(As)108 348 S .198 +(Since the coprocess is created as an asynchronous command, the)108 396 +R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 G .335 +(ys returns success.).1 F(The return status of a coprocess is the e)108 +408 Q(xit status of)-.15 E F2(command)2.5 E F0(.)A F1 +(Shell Function De\214nitions)87 424.8 Q F0 2.697(As)108 436.8 S .198 (hell function is an object that is called lik)-2.697 F 2.698(eas)-.1 G .198(imple command and e)-2.698 F -.15(xe)-.15 G .198 -(cutes a compound command with).15 F 2.5(an)108 360 S .5 -.25(ew s)-2.5 -H(et of positional parameters.).25 E -(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 376.8 +(cutes a compound command with).15 F 2.5(an)108 448.8 S .5 -.25(ew s) +-2.5 H(et of positional parameters.).25 E +(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 465.6 Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C -(dir).37 E(ection)-.37 E F0(])A F1(function)108 388.8 Q F2(name)2.5 E F0 +(dir).37 E(ection)-.37 E F0(])A F1(function)108 477.6 Q F2(name)2.5 E F0 ([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C(dir) .37 E(ection)-.37 E F0(])A 1.403(This de\214nes a function named)144 -400.8 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 +489.6 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402 (ed w)-.15 F(ord)-.1 E F1(function)3.902 E F0 1.402(is optional.)3.902 F -1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 412.8 Q .162 +1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 501.6 Q .162 (ed w)-.15 F .162(ord is supplied, the parentheses are optional.)-.1 F (The)5.162 E F2(body)2.662 E F0 .162(of the function is the compound) -2.662 F(command)144 424.8 Q F2(compound\255command)2.784 E F0(\(see) +2.662 F(command)144 513.6 Q F2(compound\255command)2.784 E F0(\(see) 3.354 E F1 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G -2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 436.8 +2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 525.6 Q F0 .044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F 2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044 -(Compound Commands)2.544 F F0(abo)144 448.8 Q -.15(ve)-.15 G 2.902(,w) +(Compound Commands)2.544 F F0(abo)144 537.6 Q -.15(ve)-.15 G 2.902(,w) .15 G .402(ith one e)-2.902 F .402(xception: If the)-.15 F F1(function) 2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F .401(ut the parentheses are not sup-)-.2 F .047 -(plied, the braces are required.)144 460.8 R F2(compound\255command) +(plied, the braces are required.)144 549.6 R F2(compound\255command) 5.047 E F0 .047(is e)2.547 F -.15(xe)-.15 G .047(cuted whene).15 F -.15 (ve)-.25 G(r).15 E F2(name)2.547 E F0 .047(is speci\214ed as the)2.547 F -1.68(name of a simple command.)144 472.8 R 1.68(When in)6.68 F F2 1.68 +1.68(name of a simple command.)144 561.6 R 1.68(When in)6.68 F F2 1.68 (posix mode)4.18 F F0(,)A F2(name)4.179 E F0 1.679 -(may not be the name of one of the)4.179 F(POSIX)144 484.8 Q F2 .014 +(may not be the name of one of the)4.179 F(POSIX)144 573.6 Q F2 .014 (special b)2.513 F(uiltins)-.2 E F0 5.014(.A)C .314 -.15(ny r)-5.014 H .014(edirections \(see).15 F F3(REDIRECTION)2.514 E F0(belo)2.264 E .014 (w\) speci\214ed when a function is)-.25 F 1.12 -(de\214ned are performed when the function is e)144 496.8 R -.15(xe)-.15 +(de\214ned are performed when the function is e)144 585.6 R -.15(xe)-.15 G 3.619(cuted. The).15 F -.15(ex)3.619 G 1.119 (it status of a function de\214nition is).15 F .217(zero unless a synta\ x error occurs or a readonly function with the same name already e)144 -508.8 R 2.717(xists. When)-.15 F -.15(exe)144 520.8 S .546(cuted, the e) +597.6 R 2.717(xists. When)-.15 F -.15(exe)144 609.6 S .546(cuted, the e) .15 F .546(xit status of a function is the e)-.15 F .545 (xit status of the last command e)-.15 F -.15(xe)-.15 G .545 -(cuted in the body).15 F(.)-.65 E(\(See)144 532.8 Q F3(FUNCTIONS)2.5 E +(cuted in the body).15 F(.)-.65 E(\(See)144 621.6 Q F3(FUNCTIONS)2.5 E F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF -(COMMENTS)72 549.6 Q F0 .982(In a non-interacti)108 561.6 R 1.282 -.15 +(COMMENTS)72 638.4 Q F0 .982(In a non-interacti)108 650.4 R 1.282 -.15 (ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G (_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2 -(bu)108 573.6 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F +(bu)108 662.4 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F (UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951 (causes that w)3.451 F(ord)-.1 E .604 -(and all remaining characters on that line to be ignored.)108 585.6 R +(and all remaining characters on that line to be ignored.)108 674.4 R .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) -.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 597.6 Q F0 +.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 686.4 Q F0 1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 (omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 -609.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 626.4 S -.438(OT) -.11 G(ING).438 E F2(Quoting)108 638.4 Q F0 .477(is used to remo)2.977 F -.777 -.15(ve t)-.15 H .477 -(he special meaning of certain characters or w).15 F .477 -(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 -(used to disable special treatment for special characters, to pre)108 -650.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 -(ords from being recognized as)-.1 F(such, and to pre)108 662.4 Q -.15 -(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 -679.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 -(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS) -2.788 E F0 .288(has special meaning to the shell and must be)2.538 F -(quoted if it is to represent itself.)108 691.2 Q 1.345 -(When the command history e)108 708 R 1.344(xpansion f)-.15 F 1.344 -(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 -(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) --.25 F F2(history e)108 720 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) --.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E --.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(7)197.055 E 0 Cg EP +698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(7)198.45 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(There are three quoting mechanisms: the)108 84 Q/F1 10/Times-Italic@0 -SF(escape c)2.5 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G -(ingle quotes, and double quotes.)-2.5 E 2.974(An)108 100.8 S .474 -(on-quoted backslash \()-2.974 F/F2 10/Times-Bold@0 SF(\\)A F0 2.974 -(\)i)C 2.974(st)-2.974 G(he)-2.974 E F1 .474(escape c)2.974 F(har)-.15 E -(acter)-.15 E F0 5.474(.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474 -(es the literal v)-.15 F .474(alue of the ne)-.25 F .475 -(xt character that)-.15 F(follo)108 112.8 Q 1.554(ws, with the e)-.25 F -1.553(xception of . If)-.25 F(a)4.053 E F2(\\) -4.053 E F0(. If)-.25 F(a)4.053 E F4(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.122 -(quoted, the)108 124.8 R F2(\\)3.622 E F0( is treated as a line continuation \(that is, it is remo)-.25 F -.15(ve)-.15 G 3.622(df).15 G 1.123(rom the input stream and)-3.622 F -(ef)108 136.8 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 -(Enclosing characters in single quotes preserv)108 153.6 R .295 +(ef)108 247.2 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 264 R .295 (es the literal v)-.15 F .295(alue of each character within the quotes.) -.25 F 2.795(As)5.295 G(in-)-2.795 E -(gle quote may not occur between single quotes, e)108 165.6 Q -.15(ve) --.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 -(Enclosing characters in double quotes preserv)108 182.4 R .034 +(gle quote may not occur between single quotes, e)108 276 Q -.15(ve)-.25 +G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 +(Enclosing characters in double quotes preserv)108 292.8 R .034 (es the literal v)-.15 F .034 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -194.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A -F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 -(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107 -(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C -(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F 1.397 -(special meaning within double quotes, e)108 206.4 R -.15(ve)-.25 G +304.8 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A +F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F 1.397 +(special meaning within double quotes, e)108 316.8 R -.15(ve)-.25 G 3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.) --.15 F 1.398(The characters)6.398 F F2($)3.898 E F0(and)3.898 E F2<92> +-.15 F 1.398(The characters)6.398 F F4($)3.898 E F0(and)3.898 E F4<92> 3.898 E F0 .045(retain their special meaning within double quotes.)108 -218.4 R .044(The backslash retains its special meaning only when fol-) -5.045 F(lo)108 230.4 Q .601(wed by one of the follo)-.25 F .602 -(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(") -3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2() +328.8 R .044(The backslash retains its special meaning only when fol-) +5.045 F(lo)108 340.8 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(") +3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4() 3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 -(double quotes by preceding it with a backslash.)108 242.4 R .131 +(double quotes by preceding it with a backslash.)108 352.8 R .131 (If enabled, history e)5.131 F .13(xpansion will be performed unless an) --.15 F F2(!)2.63 E F0 -(appearing in double quotes is escaped using a backslash.)108 254.4 Q -(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve) --.15 G(d.).15 E(The special parameters)108 271.2 Q F2(*)2.5 E F0(and)2.5 -E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H -(pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF --.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 288 -S .211(rds of the form).8 F F2($)2.711 E F0<08>A F1(string)A F0 2.711 -<0861>C .211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w) --5.211 F .211(ord e)-.1 F .212(xpands to)-.15 F F1(string)2.712 E F0 -2.712(,w)C .212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 -(acters replaced as speci\214ed by the ANSI C standard.)108 300 R .604 +-.15 F F4(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 364.8 Q +(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 381.6 Q F4(*)2.5 E F0(and)2.5 +E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G +(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 398.4 S .211 +(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C +.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F +.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C +.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 +(acters replaced as speci\214ed by the ANSI C standard.)108 410.4 R .604 (Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 312 Q(ws:)-.25 E F2(\\a)144 324 Q F0(alert \(bell\))180 324 Q F2 -(\\b)144 336 Q F0(backspace)180 336 Q F2(\\e)144 348 Q(\\E)144 360 Q F0 -(an escape character)180 360 Q F2(\\f)144 372 Q F0(form feed)180 372 Q -F2(\\n)144 384 Q F0(ne)180 384 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 396 -Q F0(carriage return)180 396 Q F2(\\t)144 408 Q F0(horizontal tab)180 -408 Q F2(\\v)144 420 Q F0 -.15(ve)180 420 S(rtical tab).15 E F2(\\\\)144 -432 Q F0(backslash)180 432 Q F2<5c08>144 444 Q F0(single quote)180 444 Q -F2(\\")144 456 Q F0(double quote)180 456 Q F2(\\?)144 468 Q F0 -(question mark)180 468 Q F2(\\)144 480 Q F1(nnn)A F0 -(the eight-bit character whose v)180 480 Q(alue is the octal v)-.25 E -(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 -492 Q F1(HH)A F0(the eight-bit character whose v)180 492 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2 -(\\u)144 504 Q F1(HHHH)A F0 1.506 -(the Unicode \(ISO/IEC 10646\) character whose v)180 516 R 1.507 -(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) -4.007 E F0(\(one to four he)180 528 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 -(\\U)144 540 Q F1(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 552 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) -3.047 E(HHH)180 564 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) --2.5 E F2(\\c)144 576 Q F1(x)A F0 2.5(ac)180 576 S(ontrol-)-2.5 E F1(x)A -F0(character)2.5 E(The e)108 592.8 Q(xpanded result is single-quoted, a\ -s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 609.6 S -.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F2($)A F0 -(")A F1(string)A F0 .14 -("\) will cause the string to be translated according)B .496 -(to the current locale.)108 621.6 R .495(If the current locale is)5.496 -F F2(C)2.995 E F0(or)2.995 E F2(POSIX)2.995 E F0 2.995(,t)C .495 -(he dollar sign is ignored.)-2.995 F .495(If the string is trans-)5.495 -F(lated and replaced, the replacement is double-quoted.)108 633.6 Q/F4 -10.95/Times-Bold@0 SF -.81(PA)72 650.4 S(RAMETERS).81 E F0(A)108 662.4 Q -F1(par)4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F -3.342(alues. It)-.25 F .842(can be a)3.342 F F1(name)3.343 E F0 3.343 -(,an).18 G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843 -(ne of the special characters)-3.343 F .823(listed belo)108 674.4 R -3.323(wu)-.25 G(nder)-3.323 E F2 .823(Special P)3.323 F(arameters)-.1 E -F0 5.823(.A)C F1(variable)-2.21 E F0 .823(is a parameter denoted by a) -3.503 F F1(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 -(riable has a).25 F F1(value)108 686.4 Q F0 .368(and zero or more)2.868 -F F1(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 -(utes are assigned using the)-.2 F F2(declar)2.869 E(e)-.18 E F0 -.2(bu) -2.869 G .369(iltin command \(see).2 F F2(declar)2.869 E(e)-.18 E F0 -(belo)108 698.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 715.2 -S .255(arameter is set if it has been assigned a v)-2.755 F 2.754 -(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F -2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 -F(may be unset only by using the)108 727.2 Q F2(unset)2.5 E F0 -.2(bu) -2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(8)197.055 E 0 Cg EP +108 422.4 Q(ws:)-.25 E F4(\\a)144 434.4 Q F0(alert \(bell\))180 434.4 Q +F4(\\b)144 446.4 Q F0(backspace)180 446.4 Q F4(\\e)144 458.4 Q(\\E)144 +470.4 Q F0(an escape character)180 470.4 Q F4(\\f)144 482.4 Q F0 +(form feed)180 482.4 Q F4(\\n)144 494.4 Q F0(ne)180 494.4 Q 2.5(wl)-.25 +G(ine)-2.5 E F4(\\r)144 506.4 Q F0(carriage return)180 506.4 Q F4(\\t) +144 518.4 Q F0(horizontal tab)180 518.4 Q F4(\\v)144 530.4 Q F0 -.15(ve) +180 530.4 S(rtical tab).15 E F4(\\\\)144 542.4 Q F0(backslash)180 542.4 +Q F4<5c08>144 554.4 Q F0(single quote)180 554.4 Q F4(\\")144 566.4 Q F0 +(double quote)180 566.4 Q F4(\\?)144 578.4 Q F0(question mark)180 578.4 +Q F4(\\)144 590.4 Q F2(nnn)A F0(the eight-bit character whose v)180 +590.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(one to three octal digits\))2.5 E F4(\\x)144 602.4 Q F2(HH)A F0 +(the eight-bit character whose v)180 602.4 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 614.4 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 626.4 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 638.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F4 +(\\U)144 650.4 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 662.4 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 674.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F4(\\c)144 686.4 Q F2(x)A F0 2.5(ac)180 686.4 S(ontrol-) +-2.5 E F2(x)A F0(character)2.5 E(The e)108 703.2 Q(xpanded result is si\ +ngle-quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad) +108 720 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F +F4($)A F0(")A F2(string)A F0 .14 +("\) will cause the string to be translated according)B(GNU Bash 5.0)72 +768 Q(2018 March 15)144.29 E(8)198.45 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(A)108 84 Q/F1 10 -/Times-Italic@0 SF(variable)2.79 E F0 -(may be assigned to by a statement of the form)2.68 E F1(name)144 100.8 -Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.022 E F0 .232 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .496 +(to the current locale.)108 84 R .495(If the current locale is)5.496 F +/F1 10/Times-Bold@0 SF(C)2.995 E F0(or)2.995 E F1(POSIX)2.995 E F0 2.995 +(,t)C .495(he dollar sign is ignored.)-2.995 F .495 +(If the string is trans-)5.495 F +(lated and replaced, the replacement is double-quoted.)108 96 Q/F2 10.95 +/Times-Bold@0 SF -.81(PA)72 112.8 S(RAMETERS).81 E F0(A)108 124.8 Q/F3 +10/Times-Italic@0 SF(par)4.592 E(ameter)-.15 E F0 .842 +(is an entity that stores v)4.072 F 3.342(alues. It)-.25 F .842 +(can be a)3.342 F F3(name)3.343 E F0 3.343(,an).18 G(umber)-3.343 E +3.343(,o)-.4 G 3.343(ro)-3.343 G .843(ne of the special characters) +-3.343 F .823(listed belo)108 136.8 R 3.323(wu)-.25 G(nder)-3.323 E F1 +.823(Special P)3.323 F(arameters)-.1 E F0 5.823(.A)C F3(variable)-2.21 E +F0 .823(is a parameter denoted by a)3.503 F F3(name)3.323 E F0 5.823(.A) +.18 G -.25(va)-2.5 G .823(riable has a).25 F F3(value)108 148.8 Q F0 +.368(and zero or more)2.868 F F3(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C +(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E +(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar) +2.869 E(e)-.18 E F0(belo)108 160.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9 +/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9 +/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 177.6 S .255 +(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The) +-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754 +(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F +(may be unset only by using the)108 189.6 Q F1(unset)2.5 E F0 -.2(bu)2.5 +G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) +-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 206.4 Q F3(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F3(name)144 223.2 +Q F0(=[)A F3(value)A F0(])A(If)108 240 Q F3(value)3.022 E F0 .232 (is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.233 E F1(values)3.023 +(ariable is assigned the null string.)-.25 F(All)5.233 E F3(values)3.023 E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 -F .515(and v)108 129.6 R .515(ariable e)-.25 F .515 +F .515(and v)108 252 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) --3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 -141.6 Q 2.698(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its) --.25 F/F3 10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198 -(ute set, then)-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25 -G .199(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve) --.25 G(n).15 E .902(if the $\(\(...\)\) e)108 153.6 R .902 -(xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F -F0(belo)3.401 E 3.401(w\). W)-.25 F .901 -(ord splitting is not performed,)-.8 F 1.178(with the e)108 165.6 R -1.178(xception of)-.15 F F3("$@")3.678 E F0 1.178(as e)3.678 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.179(Special P) +-3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 264 Q 2.698(w\). If) +-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E +F0(attrib)2.698 E .198(ute set, then)-.2 F F3(value)2.988 E F0 .198 +(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199 +(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e) +108 276 R .902(xpansion is not used \(see)-.15 F F1 .901 +(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901 +(ord splitting is not performed,)-.8 F 1.178(with the e)108 288 R 1.178 +(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P) 3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 -(xpansion is not)-.15 F 3.649(performed. Assignment)108 177.6 R 1.149 -(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F3 -(alias)3.648 E F0(,)A F3(declar)3.648 E(e)-.18 E F0(,)A F3(typeset)3.648 -E F0(,)A F3(export)3.648 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0 -3.288(,a)C(nd)-3.288 E F3(local)3.288 E F0 -.2(bu)3.288 G .788 -(iltin commands \().2 F F1(declar)A(ation)-.15 E F0 3.288 -(commands\). When)3.288 F(in)3.289 E F1 .789(posix mode)3.289 F F0 3.289 +(xpansion is not)-.15 F 3.649(performed. Assignment)108 300 R 1.149 +(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1 +(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648 +E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 312 S(adonly).18 E F0 +3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788 +(iltin commands \().2 F F3(declar)A(ation)-.15 E F0 3.288 +(commands\). When)3.288 F(in)3.289 E F3 .789(posix mode)3.289 F F0 3.289 (,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 -(appear in a command after one or more instances of the)108 201.6 R F3 +(appear in a command after one or more instances of the)108 324 R F1 (command)3.996 E F0 -.2(bu)3.996 G 1.496 -(iltin and retain these assignment).2 F(statement properties.)108 213.6 -Q .376(In the conte)108 230.4 R .376 +(iltin and retain these assignment).2 F(statement properties.)108 336 Q +.376(In the conte)108 352.8 R .376 (xt where an assignment statement is assigning a v)-.15 F .376 (alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 (x, the +=)-.15 F 1.631 -(operator can be used to append to or add to the v)108 242.4 R(ariable') +(operator can be used to append to or add to the v)108 364.8 R(ariable') -.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) --.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 254.4 S -.163(iltin commands such as).2 F F3(declar)2.664 E(e)-.18 E F0 .164 -(that accept assignment statements \()2.664 F F1(declar)A(ation)-.15 E +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 376.8 S +.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164 +(that accept assignment statements \()2.664 F F3(declar)A(ation)-.15 E F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 -(applied to a v)108 266.4 R .252(ariable for which the)-.25 F F1(inte) +(applied to a v)108 388.8 R .252(ariable for which the)-.25 F F3(inte) 2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 -F F1(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 +F F3(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 (luated as an arithmetic e).25 F(xpres-)-.15 E .05 -(sion and added to the v)108 278.4 R(ariable')-.25 E 2.55(sc)-.55 G .05 +(sion and added to the v)108 400.8 R(ariable')-.25 E 2.55(sc)-.55 G .05 (urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 (luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E -.459(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E +.459(able using compound assignment \(see)108 412.8 R F1(Arrays)2.959 E F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G .459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) -108 302.4 R 2.765(wv)-.25 G .265(alues are appended to the array be) +108 424.8 R 2.765(wv)-.25 G .265(alues are appended to the array be) -3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) -.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 -314.4 Q -.15(xe)-.15 G 3.402(da).15 G .902 +436.8 Q -.15(xe)-.15 G 3.402(da).15 G .902 (rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 (alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E -5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 326.4 -S(lued v).25 E(ariable,)-.25 E F1(value)2.5 E F0(is e)2.5 E +5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 448.8 +S(lued v).25 E(ariable,)-.25 E F3(value)2.5 E F0(is e)2.5 E (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.382(Av)108 343.2 S .882(ariable can be assigned the) --3.632 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 -(ute using the)-.2 F F33.382 E F0 .882(option to the)3.382 F F3 -(declar)3.382 E(e)-.18 E F0(or)3.383 E F3(local)3.383 E F0 -.2(bu)3.383 -G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 355.2 R -F3(declar)2.816 E(e)-.18 E F0(and)2.816 E F3(local)2.816 E F0(belo)2.816 -E .316(w\) to create a)-.25 F F1(namer)2.815 E(ef)-.37 E F0 2.815(,o)C +(alue.)-2.75 E 3.382(Av)108 465.6 S .882(ariable can be assigned the) +-3.632 F F3(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(ute using the)-.2 F F13.382 E F0 .882(option to the)3.382 F F1 +(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383 +G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 477.6 R +F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 +E .316(w\) to create a)-.25 F F3(namer)2.815 E(ef)-.37 E F0 2.815(,o)C 2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04 -(able. This)108 367.2 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 +(able. This)108 489.6 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 (ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54 E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54 (ariable is referenced,)-.25 F .54 -(assigned to, unset, or has its attrib)108 379.2 R .54 -(utes modi\214ed \(other than using or changing the)-.2 F F1(namer)3.04 +(assigned to, unset, or has its attrib)108 501.6 R .54 +(utes modi\214ed \(other than using or changing the)-.2 F F3(namer)3.04 E(ef)-.37 E F0(attrib)3.04 E .54(ute itself\),)-.2 F .352 -(the operation is actually performed on the v)108 391.2 R .352 +(the operation is actually performed on the v)108 513.6 R .352 (ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.852(sv) -.55 G 2.852(alue. A)-3.102 F .352(nameref is)2.852 F .972 -(commonly used within shell functions to refer to a v)108 403.2 R .971 +(commonly used within shell functions to refer to a v)108 525.6 R .971 (ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F -2.5(function. F)108 415.2 R(or instance, if a v)-.15 E +2.5(function. F)108 537.6 R(or instance, if a v)-.15 E (ariable name is passed to a shell function as its \214rst ar)-.25 E -(gument, running)-.18 E/F4 10/Courier@0 SF(declare -n ref=$1)144 433.2 Q -F0 .302(inside the function creates a nameref v)108 451.2 R(ariable)-.25 -E F3 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) +(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 555.6 Q +F0 .302(inside the function creates a nameref v)108 573.6 R(ariable)-.25 +E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) -.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E -3.592(ment. References)108 463.2 R 1.092(and assignments to)3.592 F F3 +3.592(ment. References)108 585.6 R 1.092(and assignments to)3.592 F F1 -.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) -3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 -(ments, and attrib)108 475.2 R .144(ute modi\214cations to the v)-.2 F -.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F3($1)2.644 E +(ments, and attrib)108 597.6 R .144(ute modi\214cations to the v)-.2 F +.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 -(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .868 +(ariable in a)-.25 F F1 -.25(fo)108 609.6 S(r).25 E F0 .868 (loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 (ords can be a list of shell v)-.1 F .867 (ariables, and a name reference)-.25 F .509 -(will be established for each w)108 499.2 R .509 +(will be established for each w)108 621.6 R .509 (ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 (cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 -511.2 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F3(namer)4.193 E(ef) +633.6 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F1(namer)4.193 E(ef) -.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G 2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692 (ariables can reference array v)-.25 F 1.692(ariables and subscripted) --.25 F .101(array v)108 523.2 R 2.601(ariables. Namerefs)-.25 F .101 -(can be unset using the)2.601 F F32.602 E F0 .102(option to the) -2.602 F F3(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F -(if)2.602 E F3(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E -.443(cuted with the name of a nameref v)108 535.2 R .442 +-.25 F .101(array v)108 645.6 R 2.601(ariables. Namerefs)-.25 F .101 +(can be unset using the)2.601 F F12.602 E F0 .102(option to the) +2.602 F F1(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F +(if)2.602 E F1(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E +.443(cuted with the name of a nameref v)108 657.6 R .442 (ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 (ariable referenced by the nameref v)-.25 F(ariable)-.25 E -(will be unset.)108 547.2 Q F3 -.2(Po)87 564 S(sitional P).2 E -(arameters)-.1 E F0(A)108 576 Q F1 .705(positional par)4.455 F(ameter) +(will be unset.)108 669.6 Q F1 -.2(Po)87 686.4 S(sitional P).2 E +(arameters)-.1 E F0(A)108 698.4 Q F3 .705(positional par)4.455 F(ameter) -.15 E F0 .706(is a parameter denoted by one or more digits, other than\ the single digit 0.)3.935 F(Posi-)5.706 E .445 -(tional parameters are assigned from the shell')108 588 R 2.944(sa)-.55 -G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke) -.2 G .444(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.333 -E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\ - may not be assigned to with assignment statements.)5.833 F(The)5.834 E -(positional parameters are temporarily replaced when a shell function i\ -s e)108 612 Q -.15(xe)-.15 G(cuted \(see).15 E F2(FUNCTIONS)2.5 E F0 -(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ -f more than a single digit is e)108 628.8 R 1.403 -(xpanded, it must be enclosed in)-.15 F(braces \(see)108 640.8 Q F2(EXP) -2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F3(Special P)87 657.6 Q -(arameters)-.1 E F0 1.674(The shell treats se)108 669.6 R -.15(ve)-.25 G -1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 -(hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .224 -(Expands to the positional parameters, starting from one.)144 693.6 R -.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 -(quotes, each positional parameter e)144 705.6 R .662 -(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 -(xts where it is performed,)-.15 F 1.082(those w)144 717.6 R 1.082 -(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) --.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E -2.548(occurs within double quotes, it e)144 729.6 R 2.549 -(xpands to a single w)-.15 F 2.549(ord with the v)-.1 F 2.549 -(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(9)197.055 E 0 Cg EP +(tional parameters are assigned from the shell')108 710.4 R 2.944(sa) +-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1 +(ke).2 G .444(d, and may be reassigned using).1 F(the)108 722.4 Q F1 +(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\ + parameters may not be assigned to with assignment statements.)5.833 F +(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(9)198.45 E 0 +Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.068 -(separated by the \214rst character of the)144 84 R/F1 9/Times-Bold@0 SF -(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.067 -(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.567("i)C 5.567(se)-5.567 -G(qui)-5.567 E -.25(va)-.25 G 3.067(lent to).25 F(")144 96 Q F2($1)A/F3 -10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.519(", where)B F3 -(c)4.219 E F0 1.519(is the \214rst character of the v)4.329 F 1.52 -(alue of the)-.25 F F1(IFS)4.02 E F0 -.25(va)3.77 G 4.02(riable. If).25 -F F1(IFS)4.02 E F0 1.52(is unset, the)3.77 F .833 -(parameters are separated by spaces.)144 108 R(If)5.833 E F1(IFS)3.333 E -F0 .832(is null, the parameters are joined without interv)3.083 F(ening) --.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .605 -(Expands to the positional parameters, starting from one.)144 132 R .606 -(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 -(ble quotes, each parameter e)144 144 R .114(xpands to a separate w)-.15 -F 2.614(ord. That)-.1 F .113(is, ")2.613 F F2($@)A F0 2.613("i)C 2.613 -(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F2($1)A F0 -2.613("")C F2($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 -(If the double-quoted e)144 156 R .134(xpansion occurs within a w)-.15 F -.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined) --.15 F .151(with the be)144 168 R .151(ginning part of the original w) --.15 F .151(ord, and the e)-.1 F .15 -(xpansion of the last parameter is joined with)-.15 F .337 -(the last part of the original w)144 180 R 2.837(ord. When)-.1 F .338 -(there are no positional parameters, ")2.837 F F2($@)A F0 2.838("a)C(nd) --2.838 E F2($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E -(to nothing \(i.e., the)144 192 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) --.15 G(d\).).15 E F2(#)108 204 Q F0 -(Expands to the number of positional parameters in decimal.)144 204 Q F2 -(?)108 216 Q F0(Expands to the e)144 216 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(positional parame\ +ters are temporarily replaced when a shell function is e)108 84 Q -.15 +(xe)-.15 G(cuted \(see).15 E/F1 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0 +(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ +f more than a single digit is e)108 100.8 R 1.403 +(xpanded, it must be enclosed in)-.15 F(braces \(see)108 112.8 Q F1(EXP) +2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E/F2 10/Times-Bold@0 SF +(Special P)87 129.6 Q(arameters)-.1 E F0 1.674(The shell treats se)108 +141.6 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T) +-.65 G 1.675(hese parameters may only be referenced; assignment to) +-6.675 F(them is not allo)108 153.6 Q(wed.)-.25 E F2(*)108 165.6 Q F0 +.224(Expands to the positional parameters, starting from one.)144 165.6 +R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 +(quotes, each positional parameter e)144 177.6 R .662 +(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 +(xts where it is performed,)-.15 F 1.082(those w)144 189.6 R 1.082 +(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) +-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E +.914(occurs within double quotes, it e)144 201.6 R .914 +(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915 +(alue of each parameter sepa-)-.25 F .891 +(rated by the \214rst character of the)144 213.6 R F1(IFS)3.39 E F0 .89 +(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F2($*)A F0 +3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F +F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A +(where)144 225.6 Q F3(c)3.532 E F0 .832 +(is the \214rst character of the v)3.642 F .832(alue of the)-.25 F F1 +(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If).25 F F1(IFS)3.332 E F0 +.833(is unset, the parameters are)3.082 F(separated by spaces.)144 237.6 +Q(If)5 E F1(IFS)2.5 E F0 +(is null, the parameters are joined without interv)2.25 E +(ening separators.)-.15 E F2(@)108 249.6 Q F0 .606 +(Expands to the positional parameters, starting from one.)144 249.6 R +.605(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .113 +(ble quotes, each parameter e)144 261.6 R .113(xpands to a separate w) +-.15 F 2.614(ord. That)-.1 F .114(is, ")2.614 F F2($@)A F0 2.614("i)C +2.614(se)-2.614 G(qui)-2.614 E -.25(va)-.25 G .114(lent to ").25 F F2 +($1)A F0 2.614("")C F2($2)-2.614 E F0 2.614(".)C(..)-2.614 E .135 +(If the double-quoted e)144 273.6 R .135(xpansion occurs within a w)-.15 +F .135(ord, the e)-.1 F .134 +(xpansion of the \214rst parameter is joined)-.15 F .15(with the be)144 +285.6 R .15(ginning part of the original w)-.15 F .151(ord, and the e) +-.1 F .151(xpansion of the last parameter is joined with)-.15 F .338 +(the last part of the original w)144 297.6 R 2.838(ord. When)-.1 F .337 +(there are no positional parameters, ")2.838 F F2($@)A F0 2.837("a)C(nd) +-2.837 E F2($@)2.837 E F0 -.15(ex)2.837 G(pand).15 E +(to nothing \(i.e., the)144 309.6 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 +(ve)-.15 G(d\).).15 E F2(#)108 321.6 Q F0 +(Expands to the number of positional parameters in decimal.)144 321.6 Q +F2(?)108 333.6 Q F0(Expands to the e)144 333.6 Q (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 -E(ground pipeline.)-.15 E F2108 228 Q F0 .882 -(Expands to the current option \215ags as speci\214ed upon in)144 228 R --.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G -.881(iltin command, or).2 F(those set by the shell itself \(such as the) -144 240 Q F22.5 E F0(option\).)2.5 E F2($)108 252 Q F0 .214 -(Expands to the process ID of the shell.)144 252 R .214 +E(ground pipeline.)-.15 E F2108 345.6 Q F0 .881 +(Expands to the current option \215ags as speci\214ed upon in)144 345.6 +R -.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.382 E F0 -.2(bu)3.382 G +.882(iltin command, or).2 F(those set by the shell itself \(such as the) +144 357.6 Q F22.5 E F0(option\).)2.5 E F2($)108 369.6 Q F0 .214 +(Expands to the process ID of the shell.)144 369.6 R .214 (In a \(\) subshell, it e)5.214 F .214 (xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 264 Q F2(!)108 276 Q F0 .499(Expands to t\ -he process ID of the job most recently placed into the background, whet\ -her e)144 276 R -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 288 Q F2(bg)2.5 E F0 -.2 +(shell, not the subshell.)144 381.6 Q F2(!)108 393.6 Q F0 .499(Expands \ +to the process ID of the job most recently placed into the background, \ +whether e)144 393.6 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 405.6 Q F2(bg)2.5 E F0 -.2 (bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E -(w\).)-.25 E F2(0)108 300 Q F0 1.691 -(Expands to the name of the shell or shell script.)144 300 R 1.692 -(This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E -F0(is)4.192 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 -(ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578 -(is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E -F0 .577(is started with the)3.077 F F23.077 E F0 .368 -(option, then)144 324 R F2($0)2.869 E F0 .369(is set to the \214rst ar) -2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 -(cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E -(wise, it is set to the \214lename used to in)144 336 Q -.2(vo)-.4 G -.1 -(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H -2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F2(_)108 348 -Q F0 .055(At shell startup, set to the absolute pathname used to in)144 -348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .054 -(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .691 -(as passed in the en)144 360 R .691(vironment or ar)-.4 F .691 -(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692 -(xpands to the last ar)-3.341 F .692(gument to the)-.18 F(pre)144 372 Q -.571(vious command, after e)-.25 F 3.071(xpansion. Also)-.15 F .571 -(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .77 -.1(ke e) -.2 H .57(ach command).1 F -.15(exe)144 384 S 1.6 -(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 +(w\).)-.25 E F2(0)108 417.6 Q F0 1.692 +(Expands to the name of the shell or shell script.)144 417.6 R 1.691 +(This is set at shell initialization.)6.692 F(If)6.691 E F2(bash)4.191 E +F0(is)4.191 E(in)144 429.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.077(dw).1 G .577 +(ith a \214le of commands,)-3.077 F F2($0)3.077 E F0 .578 +(is set to the name of that \214le.)3.077 F(If)5.578 E F2(bash)3.078 E +F0 .578(is started with the)3.078 F F23.078 E F0 .369 +(option, then)144 441.6 R F2($0)2.869 E F0 .369 +(is set to the \214rst ar)2.869 F .369(gument after the string to be e) +-.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.368 E +(-)-.2 E(wise, it is set to the \214lename used to in)144 453.6 Q -.2 +(vo)-.4 G -.1(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25 +(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E +F2(_)108 465.6 Q F0 .054 +(At shell startup, set to the absolute pathname used to in)144 465.6 R +-.2(vo)-.4 G .255 -.1(ke t).2 H .055(he shell or shell script being e).1 +F -.15(xe)-.15 G(cuted).15 E .692(as passed in the en)144 477.6 R .692 +(vironment or ar)-.4 F .691(gument list.)-.18 F(Subsequently)5.691 E +3.191(,e)-.65 G .691(xpands to the last ar)-3.341 F .691(gument to the) +-.18 F(pre)144 489.6 Q .57(vious command, after e)-.25 F 3.07 +(xpansion. Also)-.15 F .571(set to the full pathname used to in)3.071 F +-.2(vo)-.4 G .771 -.1(ke e).2 H .571(ach command).1 F -.15(exe)144 501.6 +S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F (parameter holds the name of the mail \214le currently being check)144 -396 Q(ed.)-.1 E F2(Shell V)87 412.8 Q(ariables)-.92 E F0(The follo)108 -424.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) -108 441.6 S(SH).3 E F0(Expands to the full \214lename used to in)144 -441.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E -F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.549(Ac)144 465.6 S .049 -(olon-separated list of enabled shell options.)-2.549 F .049(Each w) +513.6 Q(ed.)-.1 E F2(Shell V)87 530.4 Q(ariables)-.92 E F0(The follo)108 +542.4 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) +108 559.2 S(SH).3 E F0(Expands to the full \214lename used to in)144 +559.2 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E +F0(.)A F2 -.3(BA)108 571.2 S(SHOPTS).3 E F0 2.548(Ac)144 583.2 S .049 +(olon-separated list of enabled shell options.)-2.548 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 477.6 +(gument for the)-.18 F F22.549 E F0 1.398(option to the)144 595.2 R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) -3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 -489.6 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) -2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976 -(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F -(vironment)-.4 E(when)144 501.6 Q F2(bash)3.141 E F0 .642(starts up, ea\ -ch shell option in the list will be enabled before reading an)3.141 F -3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 513.6 Q -(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 525.6 S(SHPID).3 E -F0 .188(Expands to the process ID of the current)144 537.6 R F2(bash) -2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F -F2($$)2.687 E F0 .187(under certain circum-)2.687 F -(stances, such as subshells that do not require)144 549.6 Q F2(bash)2.5 -E F0(to be re-initialized.)2.5 E F2 -.3(BA)108 561.6 S(SH_ALIASES).3 E -F0 1.195(An associati)144 573.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) -.15 F 1.195(ariable whose members correspond to the internal list of al\ -iases as main-)-.25 F .16(tained by the)144 585.6 R F2(alias)2.66 E F0 --.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144 +607.2 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as) +2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977 +(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 619.2 Q F2(bash)3.142 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.142 F +3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 631.2 Q +(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 643.2 S(SHPID).3 E +F0 .187(Expands to the process ID of the current)144 655.2 R F2(bash) +2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F +F2($$)2.688 E F0 .188(under certain circum-)2.688 F .548 +(stances, such as subshells that do not require)144 667.2 R F2(bash) +3.048 E F0 .548(to be re-initialized.)3.048 F .548(Assignments to)5.548 +F F1 -.27(BA)3.048 G(SHPID).27 E F0(ha)144 679.2 Q .3 -.15(ve n)-.2 H +2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F2 -.3(BA)2.5 G(SHPID).3 E +F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F2 -.3(BA)108 691.2 S(SH_ALIASES).3 E F0 1.195(An associati)144 +703.2 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose m\ +embers correspond to the internal list of aliases as main-)-.25 F .16 +(tained by the)144 715.2 R F2(alias)2.66 E F0 -.2(bu)2.66 G 2.66 +(iltin. Elements).2 F .16 (added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 (ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 -(array elements currently does not cause aliases to be remo)144 597.6 R +(array elements currently does not cause aliases to be remo)144 727.2 R -.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) -9.503 E F2 -.3(BA)144 609.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 F2 -.3(BA)108 621.6 S(SH_ARGC).3 E F0 .935(An array v)144 633.6 R -.935(ariable whose v)-.25 F .934 -(alues are the number of parameters in each frame of the current)-.25 F -F2(bash)3.434 E F0 -.15(exe)144 645.6 S .535(cution call stack.).15 F -.535(The number of parameters to the current subroutine \(shell functio\ -n or script)5.535 F -.15(exe)144 657.6 S .142(cuted with).15 F F2(.) -2.642 E F0(or)2.642 E F2(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa) --2.642 G 2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 -(When a subroutine is e)5.141 F -.15(xe)-.15 G .141 -(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 -669.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 -2.63(The shell sets)7.13 F F1 -.27(BA)5.131 G(SH_ARGC).27 E F0 2.631 -(only when in)4.881 F -.15(ex)144 681.6 S(tended deb).15 E -(ugging mode \(see the description of the)-.2 E F2(extdeb)2.5 E(ug)-.2 E -F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F2 -.3(BA)108 693.6 S(SH_ARGV).3 E F0 .98(An array v)144 -705.6 R .979(ariable containing all of the parameters in the current) --.25 F F2(bash)3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F -(The)5.979 E .275(\214nal parameter of the last subroutine call is at t\ -he top of the stack; the \214rst parameter of the initial)144 717.6 R -1.424(call is at the bottom.)144 729.6 R 1.424(When a subroutine is e) -6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F(GNU Bash 4.4)72 -768 Q(2016 August 26)142.895 E(10)192.055 E 0 Cg EP +9.503 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(10)193.45 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 -SF -.27(BA)144 84 S(SH_ARGV).27 E/F2 9/Times-Roman@0 SF(.)A F0 2.197 -(The shell sets)6.697 F F1 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197 -(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197 -(ugging mode \(see the)-.2 F(description of the)144 96 Q/F3 10 -/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F3(shopt) -2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F3 -.3(BA)108 108 S -(SH_CMDS).3 E F0 .668(An associati)144 120 R .968 -.15(ve a)-.25 H .668 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.3(BA)144 84 S(SH_ALIASES).3 E F0 +(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F1 -.3(BA)108 96 S(SH_ARGC).3 E F0 .935(An array v)144 108 R .935 +(ariable whose v)-.25 F .934 +(alues are the number of parameters in each frame of the current)-.25 F +F1(bash)3.434 E F0 -.15(exe)144 120 S .535(cution call stack.).15 F .535 +(The number of parameters to the current subroutine \(shell function or\ + script)5.535 F -.15(exe)144 132 S .142(cuted with).15 F F1(.)2.642 E F0 +(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G +2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 +(When a subroutine is e)5.141 F -.15(xe)-.15 G .141 +(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 +144 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9 +/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G +(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 156 S .284 +(tended deb).15 F .284(ugging mode \(see the description of the)-.2 F F1 +(extdeb)2.784 E(ug)-.2 E F0 .283(option to the)2.783 F F1(shopt)2.783 E +F0 -.2(bu)2.783 G .283(iltin belo).2 F(w\).)-.25 E(Setting)144 168 Q F1 +(extdeb)2.5 E(ug)-.2 E F0(after the shell has started to e)2.5 E -.15 +(xe)-.15 G(cute a script may result in inconsistent v).15 E(alues.)-.25 +E F1 -.3(BA)108 180 S(SH_ARGV).3 E F0 .979(An array v)144 192 R .979 +(ariable containing all of the parameters in the current)-.25 F F1(bash) +3.48 E F0 -.15(exe)3.48 G .98(cution call stack.).15 F(The)5.98 E .275(\ +\214nal parameter of the last subroutine call is at the top of the stac\ +k; the \214rst parameter of the initial)144 204 R 1.424 +(call is at the bottom.)144 216 R 1.424(When a subroutine is e)6.424 F +-.15(xe)-.15 G 1.424(cuted, the parameters supplied are pushed onto).15 +F F2 -.27(BA)144 228 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) +6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F +2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F .965 +(description of the)144 240 R F1(extdeb)3.465 E(ug)-.2 E F0 .966 +(option to the)3.465 F F1(shopt)3.466 E F0 -.2(bu)3.466 G .966 +(iltin belo).2 F 3.466(w\). Setting)-.25 F F1(extdeb)3.466 E(ug)-.2 E F0 +.966(after the shell)3.466 F(has started to e)144 252 Q -.15(xe)-.15 G +(cute a script may result in inconsistent v).15 E(alues.)-.25 E F1 -.3 +(BA)108 264 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144 276 R +.251(ariable e)-.25 F .251 +(xpands to the name of the shell or shell script \(identical to)-.15 F +F1($0)2.75 E F0 2.75(;s)C(ee)-2.75 E 1.224 +(the description of special parameter 0 abo)144 288 R -.15(ve)-.15 G +3.724(\). Assignment).15 F(to)3.724 E F1 -.3(BA)3.724 G(SH_ARGV0).3 E F0 +1.225(causes the v)3.724 F(alue)-.25 E .247 +(assigned to also be assigned to)144 300 R F1($0)2.747 E F0 5.247(.I)C +(f)-5.247 E F1 -.3(BA)2.747 G(SH_ARGV0).3 E F0 .247 +(is unset, it loses its special properties, e)2.747 F -.15(ve)-.25 G(n) +.15 E(if it is subsequently reset.)144 312 Q F1 -.3(BA)108 324 S +(SH_CMDS).3 E F0 .667(An associati)144 336 R .967 -.15(ve a)-.25 H .667 (rray v).15 F .668(ariable whose members correspond to the internal has\ -h table of commands)-.25 F .195(as maintained by the)144 132 R F3(hash) -2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 +h table of commands)-.25 F .196(as maintained by the)144 348 R F1(hash) +2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195 (added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 (ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ -t cause command names to be remo)144 144 R -.15(ve)-.15 G 3.352(df).15 G -.852(rom the hash)-3.352 F 2.5(table. If)144 156 R F3 -.3(BA)2.5 G +t cause command names to be remo)144 360 R -.15(ve)-.15 G 3.352(df).15 G +.853(rom the hash)-3.352 F 2.5(table. If)144 372 R F1 -.3(BA)2.5 G (SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 (ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F3 -.3(BA)108 168 S(SH_COMMAND).3 E F0 1.242 -(The command currently being e)144 180 R -.15(xe)-.15 G 1.243 -(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F +(ubsequently reset.)-2.5 E F1 -.3(BA)108 384 S(SH_COMMAND).3 E F0 1.243 +(The command currently being e)144 396 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.242 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -192 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F3 -.3(BA)108 -204 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 216 Q -(gument to the)-.18 E F32.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F3 -.3(BA)108 228 S(SH_LINENO).3 E F0 .693 -(An array v)144 240 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .969(member of)144 252 -R F1(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4 -(nv o)-3.469 H -.1(ke).4 G(d.).1 E F3(${B)5.969 E(ASH_LINENO[)-.3 E/F4 -10/Times-Italic@0 SF($i)A F3(]})A F0 .97 -(is the line number in the source)3.469 F 14.672(\214le \()144 264 R F3 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0 17.172(\)w)C(here)-17.172 -E F3(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F3(]})A F0 -.1(wa)17.172 G -17.171(sc).1 G 14.671(alled \(or)-17.171 F F3(${B)144 276 Q(ASH_LINENO[) --.3 E F4($i-1)A F3(]})A F0 .115 -(if referenced within another shell function\).)2.615 F(Use)5.115 E F1 +408 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 +420 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 432 Q +(gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G +(cation option.).2 E F1 -.3(BA)108 444 S(SH_LINENO).3 E F0 .692 +(An array v)144 456 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .97(member of)144 468 R +F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o) +-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10 +/Times-Italic@0 SF($i)A F1(]})A F0 .969 +(is the line number in the source)3.469 F 14.671(\214le \()144 480 R F1 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G +17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 492 Q(ASH_LINENO[) +-.3 E F4($i-1)A F1(]})A F0 .115 +(if referenced within another shell function\).)2.615 F(Use)5.115 E F2 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -288 Q(.)-.55 E F3 -.3(BA)108 300 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 312 S 1.57(olon-separated list of\ +504 Q(.)-.55 E F1 -.3(BA)108 516 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 528 S 1.57(olon-separated list of\ directories in which the shell looks for dynamically loadable b)-4.07 F -(uiltins)-.2 E(speci\214ed by the)144 324 Q F3(enable)2.5 E F0(command.) -2.5 E F3 -.3(BA)108 336 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 -348 R .005(ariable whose members are assigned by the)-.25 F F3(=~)2.506 -E F0 .006(binary operator to the)2.506 F F3([[)2.506 E F0 .006 -(conditional com-)2.506 F 2.507(mand. The)144 360 R .007 -(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 -(he portion of the string matching the entire re)-2.507 F .006(gular e) --.15 F(xpression.)-.15 E .997(The element with inde)144 372 R(x)-.15 E -F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F -F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 384 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F3 -.3(BA)108 396 S(SH_SOURCE).3 E F0 .126(An array v)144 408 R .125(ar\ +(uiltins)-.2 E(speci\214ed by the)144 540 Q F1(enable)2.5 E F0(command.) +2.5 E F1 -.3(BA)108 552 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 +564 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 +(conditional com-)2.505 F 2.506(mand. The)144 576 R .007 +(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .007(gular e) +-.15 F(xpression.)-.15 E .998(The element with inde)144 588 R(x)-.15 E +F4(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F +F4(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 600 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F1 -.3(BA)108 612 S(SH_SOURCE).3 E F0 .125(An array v)144 624 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .78(names in the)144 420 R F1(FUNCN)3.28 E(AME) +shell function)-.25 F .781(names in the)144 636 R F2(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F3(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F3(]})A -F0(is)3.281 E(de\214ned in the \214le)144 432 Q F3(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i)A F3(]})A F0(and called from)2.5 E F3(${B)2.5 E -(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0(.)A F3 -.3(BA)108 444 S -(SH_SUBSHELL).3 E F0 .296 -(Incremented by one within each subshell or subshell en)144 456 R .296 -(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E(in that en)144 468 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F3 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 2.644 -(Ar)144 492 S .144(eadonly array v)-2.644 F .144 +(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A +F0(is)3.28 E(de\214ned in the \214le)144 648 Q F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) +-.3 E F4($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 660 S(SH_SUBSHELL).3 E F0 +.296(Incremented by one within each subshell or subshell en)144 672 R +.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 684 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 696 S(SH_VERSINFO).3 E F0 2.645 +(Ar)144 708 S .145(eadonly array v)-2.645 F .144 (ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F3(bash)2.645 E F0 5.145 -(.T)C(he)-5.145 E -.25(va)144 504 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E F3 -.3 -(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F3(])A F0(The major v)264 522 Q -(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F3 -.3 -(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F3(])A F0(The minor v)264 534 Q -(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F3 -.3(BA) -144 546 S(SH_VERSINFO[).3 E F0(2)A F3(])A F0(The patch le)264 546 Q -.15 -(ve)-.25 G(l.).15 E F3 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F3(])A -F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F3 -.3(BA)144 570 S -(SH_VERSINFO[).3 E F0(4)A F3(])A F0(The release status \(e.g.,)264 570 Q -F4(beta1)2.5 E F0(\).)A F3 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F3 -(])A F0(The v)264 582 Q(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.495 E F2(.)A -F3 -.3(BA)108 594 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 606 Q -(ersion of this instance of)-.15 E F3(bash)2.5 E F0(.)A F3(COMP_CW)108 -618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E -F3(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 -(ord containing the current cursor position.)-.1 F .396(This v)5.396 F -(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F -1.181(acilities \(see)-.1 F F3(Pr)144 654 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F3(COMP_KEY)108 666 Q F0(The k)144 678 Q .3 --.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 --.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F3(COMP_LINE)108 690 Q F0 1.208 -(The current command line.)144 702 R 1.208(This v)6.208 F 1.208 -(ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F -2.848(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 -(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F3(Pr)5.349 E 2.849(ogrammable Completion)-.18 F -F0(belo)144 726 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(11)192.055 E 0 Cg EP +(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 +(.T)C(he)-5.144 E -.25(va)144 720 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(11)193.45 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167 -(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15 -(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666 -(ginning of the current command.)-.15 F .666(If the)5.666 F .534 +SF -.3(BA)144 84 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 84 +Q(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G +(lease).37 E F0(\).)A F1 -.3(BA)144 96 S(SH_VERSINFO[).3 E F0(1)A F1(])A +F0(The minor v)264 96 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 +E F0(\).)A F1 -.3(BA)144 108 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0 +(The patch le)264 108 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 120 S +(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 120 Q(uild v)-.2 E +(ersion.)-.15 E F1 -.3(BA)144 132 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0 +(The release status \(e.g.,)264 132 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA) +144 144 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 144 Q(alue of) +-.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE)-.495 E/F4 9/Times-Roman@0 +SF(.)A F1 -.3(BA)108 156 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 168 Q +(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 +180 Q(ORD)-.1 E F0 .396(An inde)144 192 R 2.896(xi)-.15 G(nto)-2.896 E +F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .397(This v)5.397 F +(ari-)-.25 E 1.181(able is a)144 204 R -.25(va)-.2 G 1.181 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 +(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F +1.18(acilities \(see)-.1 F F1(Pr)144 216 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 228 Q F0(The k)144 240 Q .3 +-.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 +-.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 +H(he current completion function.).1 E F1(COMP_LINE)108 252 Q F0 1.207 +(The current command line.)144 264 R 1.208(This v)6.208 F 1.208 +(ariable is a)-.25 F -.25(va)-.2 G 1.208 +(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F +2.849(mands in)144 276 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F +F0(belo)144 288 Q(w\).)-.25 E F1(COMP_POINT)108 300 Q F0 .666(The inde) +144 312 R 3.166(xo)-.15 G 3.166(ft)-3.166 G .666 +(he current cursor position relati)-3.166 F .966 -.15(ve t)-.25 H 3.166 +(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 +F .667(If the)5.667 F .535 (current cursor position is at the end of the current command, the v)144 -108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 120 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 -(ariable is a)-.25 F -.25(va)-.2 G 2.005 -(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 -F(in)144 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +324 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 336 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 +(ariable is a)-.25 F -.25(va)-.2 G 2.006 +(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 +F(in)144 348 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\ +360 Q F0 .042(Set to an inte)144 372 R .042(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 -(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2 -(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi) --2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.091(,f)C -1.591(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092 -(np)-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@) -4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w) --4.092 F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 192 R F2(%) -4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v) -6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.928 +-.25 F .337(function to be called:)144 384 R F2 -.5(TA)2.837 G(B).5 E F0 +2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f) +C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) +-.25 H(abs,).15 E F2(!)144 396 Q F0 4.092(,f)C 1.592 +(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) +-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092 +E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 +F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 408 R F2(%)4.052 E +F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F +1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 +(ilable only in shell functions and).25 F -.15(ex)144 420 S 2.929 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 -216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)-.1 E F0 -1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G -(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 -(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) -144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 -(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G -3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G -(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E -F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E -F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) --.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 300 R +(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 +432 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 444 Q(ORDBREAKS)-.1 E F0 +1.335(The set of characters that the)144 456 R F1 -.18(re)3.836 G +(adline).18 E F0 1.336(library treats as w)3.836 F 1.336 +(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) +144 468 R F3(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G +3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G +(ubse-)-3.125 E(quently reset.)144 480 Q F1(COMP_W)108 492 Q(ORDS)-.1 E +F0 .653(An array v)144 504 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E +F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) +-.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 516 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 -312 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 -(ariable is a)-.25 F -.25(va)-.2 G .831 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 -(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) -144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v) -144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 +528 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 +(ariable is a)-.25 F -.25(va)-.2 G .832 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 +(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) +144 540 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 552 Q(OC)-.3 E F0 .169(An array v) +144 564 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 384 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 576 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 588 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 600 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.094(Directories appear in the stack in the order the)144 396 R 3.594 -(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) -3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 -(members of this array v)144 408 R 1.432 +1.095(Directories appear in the stack in the order the)144 612 R 3.594 +(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) +3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 +(members of this array v)144 624 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.431(ut the)-.2 F F1(pushd)144 420 Q F0(and)2.746 E F1(popd)2.746 E +F 1.432(ut the)-.2 F F1(pushd)144 636 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .351(will not change the current directory)144 432 R +F(ariable)-.25 E .35(will not change the current directory)144 648 R 5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 -(ni).15 G(f)-2.85 E(it is subsequently reset.)144 444 Q F1(EUID)108 456 -Q F0 1.103(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25 -H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 +(ni).15 G(f)-2.851 E(it is subsequently reset.)144 660 Q F1(EPOCHREAL) +108 672 Q(TIME)-.92 E F0 .338 +(Each time this parameter is referenced, it e)144 684 R .337 +(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 +696 Q F2(time)2.916 E F0 .416(\(3\)\) as a \215oating point v)B .417 +(alue with micro-second granularity)-.25 F 5.417(.A)-.65 G .417 +(ssignments to)-5.417 F F3(EPOCHRE-)2.917 E(AL)144 708 Q(TIME)-.828 E F0 +1.091(are ignored.)3.341 F(If)6.091 E F3(EPOCHREAL)3.59 E(TIME)-.828 E +F0 1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 +G 3.59(ni).15 G 3.59(fi)-3.59 G 3.59(ti)-3.59 G(s)-3.59 E +(subsequently reset.)144 720 Q(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(12)193.45 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(EPOCHSECONDS)108 84 Q F0 .337 +(Each time this parameter is referenced, it e)144 96 R .338 +(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 +108 Q/F2 10/Times-Italic@0 SF(time)4.042 E F0 4.042 +(\(3\)\). Assignments)B(to)4.042 E/F3 9/Times-Bold@0 SF(EPOCHSECONDS) +4.042 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3(EPOCHSECONDS)4.041 E +F0 1.541(is unset, it)3.791 F(loses its special properties, e)144 120 Q +-.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G +(ubsequently reset.)-2.5 E F1(EUID)108 132 Q F0 1.103(Expands to the ef) +144 132 R(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103 +(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 (nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 -(ariable is)-.25 F(readonly)144 468 Q(.)-.65 E F1(FUNCN)108 480 Q(AME) --.2 E F0 .479(An array v)144 492 R .479 +(ariable is)-.25 F(readonly)144 144 Q(.)-.65 E F1(FUNCN)108 156 Q(AME) +-.2 E F0 .479(An array v)144 168 R .479 (ariable containing the names of all shell functions currently in the e) -.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 -(The element with inde)144 504 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 +(The element with inde)144 180 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 (he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 -(element \(the one with the highest inde)144 516 R .384(x\) is)-.15 F/F4 +(element \(the one with the highest inde)144 192 R .384(x\) is)-.15 F/F4 10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 (ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075 -(tion is e)144 528 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) +(tion is e)144 204 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) 2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H 2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E (AME)-.18 E F0 .076(is unset, it loses its)2.326 F -(special properties, e)144 540 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +(special properties, e)144 216 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144 -558 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +234 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 -(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 570 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 246 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 -(to describe the)3.904 F .012(call stack.)144 582 R -.15(Fo)5.012 G +(to describe the)3.904 F .012(call stack.)144 258 R -.15(Fo)5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) -2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183 -(at line number)144 594 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 +(at line number)144 270 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 (]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G 1.184(iltin displays the current call stack using).2 F -(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.229 -(An array v)144 630 R 1.228(ariable containing the list of groups of wh\ +(this information.)144 282 Q F1(GR)108 294 Q(OUPS)-.3 E F0 1.229 +(An array v)144 306 R 1.228(ariable containing the list of groups of wh\ ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E -.571(ments to)144 642 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 +.571(ments to)144 318 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3 (GR)3.072 E(OUPS)-.27 E F0 .572 (is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G 3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E -(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .356 -(The history number)144 678 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) +(subsequently reset.)144 330 Q F1(HISTCMD)108 342 Q F0 .356 +(The history number)144 354 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) -2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (he history list, of the current command.)-2.856 F(If)5.356 E F3 (HISTCMD)2.855 E F0 .355(is unset, it)2.605 F -(loses its special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G +(loses its special properties, e)144 366 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -(HOSTN)108 702 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 714 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(12)192.055 E 0 Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOSTTYPE)108 84 Q F0 .222(Automatically set to a string that uniquel\ -y describes the type of machine on which)144 96 R F1(bash)2.723 E F0 -.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 120 Q F0 1.408(Each\ +(HOSTN)108 378 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 390 Q F1 +(HOSTTYPE)108 402 Q F0 .222(Automatically set to a string that uniquely\ + describes the type of machine on which)144 414 R F1(bash)2.723 E F0 +.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 426 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 438 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 132 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 144 R .079 -(When not in a script or)5.078 F .307(function, the v)144 156 R .307 +ber representing the)144 450 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 462 R .079 +(When not in a script or)5.078 F .307(function, the v)144 474 R .307 (alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E -/F2 9/Times-Bold@0 SF(LINENO)2.806 E F0 .306(is unset, it loses its) -2.556 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5 -(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA) -108 180 Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that full\ -y describes the system type on which)144 192 R F1(bash)3.398 E F0 .899 -(is e)3.398 F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 -204 Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5 -(format. The)2.5 F(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE) -108 216 Q F0 .294(An array v)144 228 R .294(ariable \(see)-.25 F F1 -(Arrays)2.794 E F0(belo)2.794 E .294(w\) created to hold the te)-.25 F -.293(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 -(iltin when no).2 F -.25(va)144 240 S(riable name is supplied.).25 E F1 -(OLDPWD)108 252 Q F0(The pre)144 264 Q(vious w)-.25 E +F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F +(special properties, e)144 486 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 498 Q +(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ +es the system type on which)144 510 R F1(bash)3.398 E F0 .899(is e)3.398 +F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 522 Q F2 +(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E +(ault is system-dependent.)-.1 E F1(MAPFILE)108 534 Q F0 .294 +(An array v)144 546 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0 +(belo)2.794 E .294(w\) created to hold the te)-.25 F .293 +(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 +(iltin when no).2 F -.25(va)144 558 S(riable name is supplied.).25 E F1 +(OLDPWD)108 570 Q F0(The pre)144 582 Q(vious w)-.25 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 276 Q(ARG)-.9 E F0 1.626(The v)144 288 R 1.627 +(OPT)108 594 Q(ARG)-.9 E F0 1.626(The v)144 606 R 1.627 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2 -(SHELL)4.127 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.652(The inde)144 324 R 4.152 +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F3 +(SHELL)4.127 E -.09(BU)144 618 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 630 Q F0 1.652(The inde)144 642 R 4.152 (xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) -4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 336 +4.151 G 1.651(iltin command \(see).2 F F3(SHELL)4.151 E -.09(BU)144 654 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 -348 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 360 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) --.15 G 2.83(cuting. The).15 F(def)144 372 Q(ault is system-dependent.) --.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 -396 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 +666 Q F0 .329(Automatically set to a string that describes the operatin\ +g system on which)144 678 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) +-.15 G 2.83(cuting. The).15 F(def)144 690 Q(ault is system-dependent.) +-.1 E F1(PIPEST)108 702 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 +714 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 (w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 -(alues from the processes in)-.25 F(the most-recently-e)144 408 Q -.15 +(alues from the processes in)-.25 F(the most-recently-e)144 726 Q -.15 (xe)-.15 G(cuted fore).15 E -(ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 420 Q F0(The process ID of the shell')144 420 Q 2.5(sp)-.55 G +(ground pipeline \(which may contain only a single command\).)-.15 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(13)193.45 E 0 Cg EP +%%Page: 14 14 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(PPID)108 84 Q F0(The process ID of the shell')144 84 Q 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E -F1(PWD)108 432 Q F0(The current w)144 432 Q +F1(PWD)108 96 Q F0(The current w)144 96 Q (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 444 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 456 R .566 +(RANDOM)108 108 Q F0 .565 +(Each time this parameter is referenced, a random inte)144 120 R .566 (ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 -(sequence of random numbers may be initialized by assigning a v)144 468 -R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If) -4.51 E F2(RANDOM)2.51 E F0(is)2.26 E -(unset, it loses its special properties, e)144 480 Q -.15(ve)-.25 G 2.5 +(sequence of random numbers may be initialized by assigning a v)144 132 +R .01(alue to)-.25 F/F2 9/Times-Bold@0 SF(RANDOM)2.51 E/F3 9 +/Times-Roman@0 SF(.)A F0(If)4.51 E F2(RANDOM)2.51 E F0(is)2.26 E +(unset, it loses its special properties, e)144 144 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(READLINE_LINE)108 492 Q F0 1.546(The contents of the)144 504 R +-2.5 E F1(READLINE_LINE)108 156 Q F0 1.546(The contents of the)144 168 R F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) --.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF +-.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09 -E 1.547(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 528 Q F0 .314 -(The position of the insertion point in the)144 540 R F1 -.18(re)2.813 G +E 1.547(TIN COM-)-.828 F(MANDS)144 180 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 192 Q F0 .314 +(The position of the insertion point in the)144 204 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F2 -(SHELL)2.813 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 564 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 576 Q F1 -.18(re)2.5 G(ad).18 +.313(or use with)-2.813 F F4 .313(bind -x)2.813 F F0(\(see)2.813 E F2 +(SHELL)2.813 E -.09(BU)144 216 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 228 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 240 Q F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) --.18 E F1(SECONDS)108 588 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 600 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 612 R .712 -(alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712(the v) +-.18 E F1(SECONDS)108 252 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 264 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .713(If a v)144 276 R .712 +(alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v) 2.962 F .712(alue returned upon subsequent references is the number)-.25 -F .407(of seconds since the assignment plus the v)144 624 R .408 +F .407(of seconds since the assignment plus the v)144 288 R .408 (alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 -(is unset, it loses its special)2.658 F(properties, e)144 636 Q -.15(ve) +(is unset, it loses its special)2.658 F(properties, e)144 300 Q -.15(ve) -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.263(Ac)144 660 S +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 312 Q F0 3.263(Ac)144 324 S .763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 672 Q F0 1.173(option to the)3.673 F +(gument for the)-.18 F F1144 336 Q F0 1.173(option to the)3.673 F F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 (SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E -3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 684 R F2 -(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(on)2.749 E F0 -(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G -.019(his v)-2.519 F .019(ariable is in the en)-.25 F(vironment)-.4 E -(when)144 696 Q F1(bash)3.141 E F0 .642(starts up, each shell option in\ - the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G .642 -(tartup \214les.)-3.142 F(This v)144 708 Q(ariable is read-only)-.25 E -(.)-.65 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(13)192.055 E 0 -Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(SHL)108 84 Q(VL)-.92 E F0 -(Incremented by one each time an instance of)144 96 Q F1(bash)2.5 E F0 -(is started.)2.5 E F1(UID)108 108 Q F0 -(Expands to the user ID of the current user)144 108 Q 2.5(,i)-.4 G +3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 348 R F2 +(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10 +/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 360 Q F1(bash) +3.141 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 +F(This v)144 372 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 384 Q +(VL)-.92 E F0(Incremented by one each time an instance of)144 396 Q F1 +(bash)2.5 E F0(is started.)2.5 E F1(UID)108 408 Q F0 +(Expands to the user ID of the current user)144 408 Q 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .994(The follo)108 124.8 R .994(wing v)-.25 F .994 +E(.)-.65 E .994(The follo)108 424.8 R .994(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 (bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 -(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 136.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 153.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.192(The v)144 165.6 R 1.192(alue is used to set the shell')-.25 F +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 436.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 453.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +1.192(The v)144 465.6 R 1.192(alue is used to set the shell')-.25 F 3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693 (l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0 --.2(bu)3.693 G(iltin).2 E(belo)144 177.6 Q 2.872(wu)-.25 G(nder)-2.872 E +-.2(bu)3.693 G(iltin).2 E(belo)144 477.6 Q 2.872(wu)-.25 G(nder)-2.872 E F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372 (for a description of the v)2.872 F .371(arious compatibility le)-.25 F -(v-)-.25 E .36(els and their ef)144 189.6 R 2.86(fects. The)-.25 F -.25 +(v-)-.25 E .36(els and their ef)144 489.6 R 2.86(fects. The)-.25 F -.25 (va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .361(ger \(e.g., 42\) corre-)-.15 F 1.751 -(sponding to the desired compatibility le)144 201.6 R -.15(ve)-.25 G +(sponding to the desired compatibility le)144 501.6 R -.15(ve)-.25 G 4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75 (is unset or set to the empty)5.201 F .578(string, the compatibility le) -144 213.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 +144 513.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 (et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 (ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) -4.028 E .249(set to a v)144 225.6 R .249(alue that is not one of the v) +4.028 E .249(set to a v)144 525.6 R .249(alue that is not one of the v) -.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248 (ls, the shell prints an error message and).15 F 1.119 -(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.619(lt).15 G +(sets the compatibility le)144 537.6 R -.15(ve)-.25 G 3.619(lt).15 G 3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F -.15(ve)-.25 G(ls).15 E .576 -(correspond to the compatibility options accepted by the)144 249.6 R F1 +(correspond to the compatibility options accepted by the)144 549.6 R F1 (shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075 -(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 261.6 Q F1 +(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 561.6 Q F1 (compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5 (alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v) --.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 285.6 R F1(bash)3.005 E F0 .505(is e) +-.25 E(alue.)-.25 E F1 -.3(BA)108 573.6 S(SH_ENV).3 E F0 .505 +(If this parameter is set when)144 585.6 R F1(bash)3.005 E F0 .505(is e) 3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 (alue is interpreted as a \214lename)-.25 F .355 -(containing commands to initialize the shell, as in)144 297.6 R/F2 10 -/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354 -(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G -(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 309.6 -R .525(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 321.6 Q -F3 -.666(PA)5 G(TH)-.189 E F0 +(containing commands to initialize the shell, as in)144 597.6 R F5 +(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354 +(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected) +2.604 F .525(to parameter e)144 609.6 R .525 +(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 621.6 Q +F2 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 345.6 +108 633.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 645.6 R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F -(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x) -5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) --.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 -369.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) -2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 -G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ -empty string causes the trace output to be sent to the standard error) -144 381.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA) -144 393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ - \214le descriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 405.6 Q F1(CDP)108 417.6 Q -.95(AT) --.74 G(H).95 E F0 1.247(The search path for the)144 429.6 R F1(cd)3.747 -E F0 3.747(command. This)3.747 F 1.248 +(-)-.2 E 3.114(ated when)144 657.6 R F4 3.114(set -x)5.614 F F0 3.114 +(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114 +(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144 669.6 S +(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 F +2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638 G +(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ +mpty string causes the trace output to be sent to the standard error)144 +681.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA)144 +693.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \ +\214le descriptor\) and then unsetting it will result in the)2.991 F +(standard error being closed.)144 705.6 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(14)193.45 E 0 Cg EP +%%Page: 15 15 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(CDP)108 84 Q -.95(AT)-.74 G(H).95 E F0 1.247(The search path for the) +144 96 R F1(cd)3.747 E F0 3.747(command. This)3.747 F 1.248 (is a colon-separated list of directories in which the)3.747 F 3.796 -(shell looks for destination directories speci\214ed by the)144 441.6 R -F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 -(alue is)-.25 F F4(".:~:/usr")144 453.6 Q F0(.)A F1(CHILD_MAX)108 465.6 -Q F0 .997(Set the number of e)144 477.6 R .997(xited child status v)-.15 -F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 -(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 -489.6 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 -(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 -(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 501.6 Q -2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E -F1(COLUMNS)108 513.6 Q F0 .828(Used by the)144 525.6 R F1(select)3.328 E -F0 .829(compound command to determine the terminal width when printing \ -selection)3.328 F 4.507(lists. Automatically)144 537.6 R 2.007 +(shell looks for destination directories speci\214ed by the)144 108 R F1 +(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 +(alue is)-.25 F/F2 10/Courier@0 SF(".:~:/usr")144 120 Q F0(.)A F1 +(CHILD_MAX)108 132 Q F0 .997(Set the number of e)144 144 R .997 +(xited child status v)-.15 F .997(alues for the shell to remember)-.25 F +5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.498(wt)-.25 G(his) +-3.498 E -.25(va)144 156 S 1.078(lue to be decreased belo).25 F 3.577 +(waP)-.25 G 1.077(OSIX-mandated minimum, and there is a maximum v)-3.577 +F 1.077(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 +168 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.) +-.25 E F1(COLUMNS)108 180 Q F0 .828(Used by the)144 192 R F1(select) +3.328 E F0 .829(compound command to determine the terminal width when p\ +rinting selection)3.328 F 4.507(lists. Automatically)144 204 R 2.007 (set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 (option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H -2.006(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9 -/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .847 -(An array v)144 573.6 R .848(ariable from which)-.25 F F1(bash)3.348 E -F0 .848(reads the possible completions generated by a shell function) -3.348 F(in)144 585.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt) --2.785 G .285(he programmable completion f)-2.785 F .285(acility \(see) --.1 F F1(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E -2.785(w\). Each)-.25 F(array element contains one possible completion.) -144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.535 -E F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.536 E +2.006(hell upon).15 F(receipt of a)144 216 Q/F3 9/Times-Bold@0 SF +(SIGWINCH)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(COMPREPL)108 228 Q(Y)-.92 E +F0 .847(An array v)144 240 R .848(ariable from which)-.25 F F1(bash) +3.348 E F0 .848 +(reads the possible completions generated by a shell function)3.348 F +(in)144 252 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G +.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1 +(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785 +(w\). Each)-.25 F(array element contains one possible completion.)144 +264 Q F1(EMA)108 276 Q(CS)-.55 E F0(If)144 288 Q F1(bash)2.535 E F0 .035 +(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F2(t)2.536 E F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F -(shell is running in an Emacs shell b)144 633.6 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 645.6 Q F0(Similar to) -144 645.6 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 +(shell is running in an Emacs shell b)144 300 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F1(ENV)108 312 Q F0(Similar to) +144 312 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 2.717(Ac) -144 669.6 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 --.1(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C +2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 324 Q F0 2.717(Ac)144 +336 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 -.1 +(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216(e\214ning the list of \214lenames to be)-2.717 F .116 -(ignored by command search using)144 681.6 R F1 -.74(PA)2.616 G(TH)-.21 -E F0 5.116(.F)C .117 +(ignored by command search using)144 348 R F1 -.74(PA)2.616 G(TH)-.21 E +F0 5.116(.F)C .117 (iles whose full pathnames match one of these patterns)-5.116 F 1.433 -(are not considered e)144 693.6 R -.15(xe)-.15 G 1.432 +(are not considered e)144 360 R -.15(xe)-.15 G 1.432 (cutable \214les for the purposes of completion and command e).15 F -.15 -(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 705.6 S(TH)-.21 E F0 +(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 372 S(TH)-.21 E F0 2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha) -.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.909(commands. Full)2.908 F (pathnames)2.909 E .364(in the command hash table are not subject to)144 -717.6 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 -(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 729.6 -R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 +384 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 396 R +1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 (cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 -(cutable \214les.).15 F 1.37(The pattern matching)6.37 F(GNU Bash 4.4)72 -768 Q(2016 August 26)142.895 E(14)192.055 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(honors the setting of the)144 84 Q/F1 10/Times-Bold@0 SF(extglob)2.5 E -F0(shell option.)2.5 E F1(FCEDIT)108 96 Q F0(The def)144 108 Q -(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 -E F1(FIGNORE)108 120 Q F0 2.599(Ac)144 132 S .098 -(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 -(es to ignore when performing \214lename completion \(see)-.15 F/F2 9 -/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 144 Q 2.704(w\). A)-.25 F -.204(\214lename whose suf)2.704 F .205 -(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205 -(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.) -144 156 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF -(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 168 Q F0 .231 -(If set to a numeric v)144 180 R .231 +(cutable \214les.).15 F 1.37(The pattern matching)6.37 F +(honors the setting of the)144 408 Q F1(extglob)2.5 E F0(shell option.) +2.5 E F1(FCEDIT)108 420 Q F0(The def)144 432 Q(ault editor for the)-.1 E +F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F1(FIGNORE)108 444 Q F0 +2.599(Ac)144 456 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E +.098(es to ignore when performing \214lename completion \(see)-.15 F F3 +(READLINE)2.598 E F0(belo)144 468 Q 2.704(w\). A)-.25 F .204 +(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) +-.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 +(xcluded from the list)-.15 F(of matched \214lenames.)144 480 Q 2.5(As)5 +G(ample v)-2.5 E(alue is)-.25 E F2(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 +492 Q F0 .231(If set to a numeric v)144 504 R .231 (alue greater than 0, de\214nes a maximum function nesting le)-.25 F -.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E -(cations that e)144 192 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +(cations that e)144 516 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G 2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 -(GLOBIGNORE)108 204 Q F0 3.118(Ac)144 216 S .618(olon-separated list of\ - patterns de\214ning the set of \214lenames to be ignored by pathname e) --3.118 F(xpan-)-.15 E 3.132(sion. If)144 228 R 3.132<618c>3.132 G .632 -(lename matched by a pathname e)-3.132 F .632 -(xpansion pattern also matches one of the patterns in)-.15 F F2 -(GLOBIGNORE)144 240 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E --.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1 -(HISTCONTR)108 252 Q(OL)-.3 E F0 2.653(Ac)144 264 S .153 -(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F -2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 -G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .154(If the list) -5.153 F .491(of v)144 276 R .491(alues includes)-.25 F/F5 10 -/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G .491 -(ines which be)-2.991 F .491(gin with a)-.15 F F1(space)2.991 E F0 .49 -(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 -G .49(he his-)-2.99 F .557(tory list.)144 288 R 3.057(Av)5.557 G .557 -(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557 -(causes lines matching the pre)3.327 F .558 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.959 -(Av)144 300 S .459(alue of)-3.209 F F5(ignor)2.969 E(eboth)-.37 E F0 -.459(is shorthand for)3.239 F F5(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F5(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 -(lue of).25 F F5(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698 -(all pre)144 312 R .698 +(GLOBIGNORE)108 528 Q F0 2.923(Ac)144 540 S .423(olon-separated list of\ + patterns de\214ning the set of \214le names to be ignored by pathname \ +e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 552 R 2.948<618c>2.948 G .448 +(le name matched by a pathname e)-2.948 F .447 +(xpansion pattern also matches one of the patterns in)-.15 F F3 +(GLOBIGNORE)144 564 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df) +.15 G(rom the list of matches.)-2.5 E F1(HISTCONTR)108 576 Q(OL)-.3 E F0 +2.653(Ac)144 588 S .153(olon-separated list of v)-2.653 F .153 +(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 +F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) +-2.653 F .154(If the list)5.153 F .491(of v)144 600 R .491 +(alues includes)-.25 F/F5 10/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 +E F0 2.991(,l).18 G .491(ines which be)-2.991 F .491(gin with a)-.15 F +F1(space)2.991 E F0 .49(character are not sa)2.991 F -.15(ve)-.2 G 2.99 +(di).15 G 2.99(nt)-2.99 G .49(he his-)-2.99 F .557(tory list.)144 612 R +3.057(Av)5.557 G .557(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 +.557(causes lines matching the pre)3.327 F .558 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926 +(Av)144 624 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0 +.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and) +2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G +.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698 +(all pre)144 636 R .698 (vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G 3.198(df).15 G .699(rom the history list before that line is)-3.198 F -(sa)144 324 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 +(sa)144 648 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 (alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .263 -(is unset, or does not include)2.513 F 2.941(av)144 336 S .441(alid v) +(ist is ignored.).15 F(If)5.263 E F3(HISTCONTR)2.763 E(OL)-.27 E F0 .263 +(is unset, or does not include)2.513 F 2.941(av)144 660 S .441(alid v) -3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F -.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 -(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F2 -(HISTIGNORE)144 348 Q F4(.)A F0 1.981(The second and subsequent lines o\ +(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F3 +(HISTIGNORE)144 672 Q F4(.)A F0 1.981(The second and subsequent lines o\ f a multi-line compound command are not)6.482 F -(tested, and are added to the history re)144 360 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.) -A F1(HISTFILE)108 372 Q F0 .181 -(The name of the \214le in which command history is sa)144 384 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) +(tested, and are added to the history re)144 684 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E F3(HISTCONTR)2.5 E(OL)-.27 E F4(.) +A F1(HISTFILE)108 696 Q F0 .181 +(The name of the \214le in which command history is sa)144 708 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(HIST)2.681 E(OR)-.162 E(Y) -.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) --.1 F(alue)-.25 E(is)144 396 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 +-.1 F(alue)-.25 E(is)144 720 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 (fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 -(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 408 Q F0 -1.623(The maximum number of lines contained in the history \214le.)144 -420 R 1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25 -(va)144 432 S .931(lue, the history \214le is truncated, if necessary) -.25 F 3.432(,t)-.65 G 3.432(oc)-3.432 G .932 -(ontain no more than that number of lines by)-3.432 F(remo)144 444 Q +(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(15)193.45 E 0 Cg EP +%%Page: 16 16 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(HISTFILESIZE)108 84 Q F0 1.623 +(The maximum number of lines contained in the history \214le.)144 96 R +1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 +108 S .931(lue, the history \214le is truncated, if necessary).25 F +3.432(,t)-.65 G 3.432(oc)-3.432 G .932 +(ontain no more than that number of lines by)-3.432 F(remo)144 120 Q .871(ving the oldest entries.)-.15 F .87(The history \214le is also tru\ ncated to this size after writing it when a)5.871 F 1.244(shell e)144 -456 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 +132 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 (alue is 0, the history \214le is truncated to zero size.)-.25 F 1.245 -(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 468 R +(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 144 R 1.022(alues less than zero inhibit truncation.)-.25 F 1.022 (The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v) --.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 480 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 492 Q F0 -2.657(Ac)144 504 S .157(olon-separated list of patterns used to decide \ +-.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 156 Q F0(after reading an) +2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 168 Q F0 +2.657(Ac)144 180 S .157(olon-separated list of patterns used to decide \ which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G -2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 516 R .708 +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 528 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 +(\(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(HISTCONTR)144 -540 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +(ainst the line after the checks speci\214ed by)-.05 F/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 2.514(matches the pre)144 552 R 2.514(vious history line.) +F1(&)A F0(')A 2.514(matches the pre)144 228 R 2.514(vious history line.) -.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 564 +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 240 Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F .852(The second and subsequent lines of a multi-line compound)5.852 F -1.269(command are not tested, and are added to the history re)144 576 R +1.269(command are not tested, and are added to the history re)144 252 R -.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 -(HISTIGNORE)3.77 E F4(.)A F0 -(The pattern matching honors the setting of the)144 588 Q F1(extglob)2.5 -E F0(shell option.)2.5 E F1(HISTSIZE)108 600 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 612 +(HISTIGNORE)3.77 E/F3 9/Times-Roman@0 SF(.)A F0 +(The pattern matching honors the setting of the)144 264 Q F1(extglob)2.5 +E F0(shell option.)2.5 E F1(HISTSIZE)108 276 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 288 R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.887 E -.25(va)144 624 S 1.32(lue is 0, commands are not sa) +-.25 F(the)3.887 E -.25(va)144 300 S 1.32(lue is 0, commands are not sa) .25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 (he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 636 T .437 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 312 T .437 (ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 G .437(he history list \(there is no limit\).)-2.937 F .436 (The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 648 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F1(HISTTIMEFORMA)108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951 +(to 500 after reading an)144 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 F5(strftime)3.452 E F0 .952 -(\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 684 +(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 696 R +(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.145 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 708 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(15)192.055 E 0 Cg EP -%%Page: 16 16 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOME)108 84 Q F0 1.27 -(The home directory of the current user; the def)144 96 R 1.27(ault ar) + 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 .551 -(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.058(the shell is running; the ne)144 156 R 1.059 +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 168 Q F0 .138 +(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/F3 9/Times-Bold@0 SF -(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .138(ut has no v)-.2 F .138 -(alue, or)-.25 F .517(does not name a readable \214le,)144 180 R F1 -(bash)3.017 E F0 .517(attempts to read)3.017 F F2(/etc/hosts)4.684 E F0 -.518(to obtain the list of possible host-)4.684 F(name completions.)144 -192 Q(When)5 E F3(HOSTFILE)2.5 E F0 -(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) -144 204 Q F2 .556(Internal F)3.636 F .556(ield Separ)-.45 F(ator)-.15 E -F0 .556(that is used for w)3.786 F .556(ord splitting after e)-.1 F .555 -(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the) -.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E -(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503 -(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H -.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 +-2.638 F .138(xisting list.)-.15 F(If)5.138 E 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 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +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 .302 -(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(on an input line before)144 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 .303(alue, or has)-.25 F(no v)144 276 Q(alue, the def) +(umeric v).15 F .303(alue, or has)-.25 F(no v)144 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 1.436(The \214lename for the)144 300 R F1 -.18(re) +F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 +(INPUTRC)108 600 Q F0 1.436(The \214lename for the)144 612 R F1 -.18(re) 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G -1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F3(READLINE)3.935 E F0(belo)144 312 Q(w\).)-.25 -E F1(LANG)108 324 Q F0 1.239(Used to determine the locale cate)144 324 R +1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.601 E F2(READLINE)3.935 E F0(belo)144 624 Q(w\).)-.25 +E F1(LANG)108 636 Q F0 1.239(Used to determine the locale cate)144 636 R 1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .974 -(This v)144 360 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 -(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) +(starting with)144 648 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 660 Q F0 .974 +(This v)144 672 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(rrides the v).15 F .973(alue of)-.25 F F2(LANG)3.473 E F0 .973(and an) 3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G -.973(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 -(LC_COLLA)108 384 Q(TE)-.95 E F0 .411(This v)144 396 R .412(ariable det\ +.973(riable specifying a locale cate-).25 F(gory)144 684 Q(.)-.65 E F1 +(LC_COLLA)108 696 Q(TE)-.95 E F0 .411(This v)144 708 R .412(ariable det\ ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 408 R 1.465 +-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 720 R 1.465 (vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G -1.464(lence classes, and collating sequences).25 F(within pathname e)144 -420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 -1.935(This v)144 444 R 1.936 +1.464(lence classes, and collating sequences).25 F(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(16)193.45 E 0 Cg EP +%%Page: 17 17 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(within pathname e) +144 84 Q(xpansion and pattern matching.)-.15 E/F1 10/Times-Bold@0 SF +(LC_CTYPE)108 96 Q F0 1.935(This v)144 108 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 456 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E -F0(This v)144 480 Q(ariable determines the locale used to translate dou\ +1.936(vior of character classes)-.2 F(within pathname e)144 120 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 132 Q(GES)-.55 E +F0(This v)144 144 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 516 Q F0(This v) -144 528 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 540 Q F0 -.055(Used by the)144 540 R F1(select)2.555 E F0 .054(compound command t\ +108 156 Q F0(This v)144 168 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 180 Q F0(This v) +144 192 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 204 Q F0 +.055(Used by the)144 204 R F1(select)2.555 E F0 .054(compound command t\ o determine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 552 R F1(checkwinsize)2.764 E F0 .264 +(Automatically set if the)144 216 R F1(checkwinsize)2.764 E F0 .264 (option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F F3(SIGWINCH)144 564 Q/F4 9/Times-Roman@0 -SF(.)A F1(MAIL)108 576 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)144 576 -R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 +(hell upon receipt of a).15 F/F2 9/Times-Bold@0 SF(SIGWINCH)144 228 Q/F3 +9/Times-Roman@0 SF(.)A F1(MAIL)108 240 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)144 240 +R F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 (riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 588 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +(informs the user of the arri)144 252 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E -(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 600 Q F0 .098 -(Speci\214es ho)144 612 R 2.598(wo)-.25 G .098(ften \(in seconds\)) +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 264 Q F0 .098 +(Speci\214es ho)144 276 R 2.598(wo)-.25 G .098(ften \(in seconds\)) -2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) 5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 624 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 636 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 648 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 660 S .49 +mpt.)144 288 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F +(or set to a v)144 300 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 312 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 324 S .49 (olon-separated list of \214lenames to be check)-2.99 F .49 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) -144 672 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 336 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ \214le may be speci\214ed by separating the \214lename from the message\ - with a `?'.)-2.62 F(When used in the te)144 684 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 348 Q(xt of the message,) -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G (pands to the name of the current mail\214le.).15 E(Example:)5 E F1 -(MAILP)144 696 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(MAILP)144 360 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 708 Q F0 .015 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 372 Q F0 .015 (can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 (alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 (alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ -ser mail \214les that it uses is system dependent \(e.g., /v)144 720 Q -(ar/mail/)-.25 E F1($USER)A F0(\).)A(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(16)192.055 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(OPTERR)108 84 Q F0 .39(If set to the v)144 96 R .39(alue 1,)-.25 F F1 -(bash)2.89 E F0 .389(displays error messages generated by the)2.889 F F1 -(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9 -/Times-Bold@0 SF .359(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS) --.828 F F0(belo)2.609 E(w\).)-.25 E F2(OPTERR)5.359 E F0 .36 -(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 -(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.) -.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588 -(The search path for commands.)144 132 R .587 +ser mail \214les that it uses is system dependent \(e.g., /v)144 384 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 396 Q F0 .39 +(If set to the v)144 408 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 +(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0 +-.2(bu)2.889 G .389(iltin command \(see).2 F F2 .359(SHELL B)144 420 R +(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E(w\).)-.25 E F2 +(OPTERR)5.359 E F0 .36(is initialized to 1 each time the shell is in) +2.609 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 432 Q +-.15(xe)-.15 G(cuted.).15 E F1 -.74(PA)108 444 S(TH)-.21 E F0 .588 +(The search path for commands.)144 444 R .587 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 144 R F2 .471(COMMAND EXECUTION) +5.588 F .471(for commands \(see)144 456 R F2 .471(COMMAND EXECUTION) 2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 468 S .536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 (indicates the current directory)2.786 F 5.535(.A)-.65 G .535 (null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 168 R .868 +-3.035 E .867(colons, or as an initial or trailing colon.)144 480 R .868 (The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F(administrator who installs)144 180 Q F1(bash)2.5 E F0 5(.A)C -(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF -(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 192 Q -F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 R +-.1 F(administrator who installs)144 492 Q F1(bash)2.5 E F0 5(.A)C +(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF +(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 504 Q +F0(.)A F1(POSIXL)108 516 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 528 R .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 +E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF .472 (posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 228 R F1(\255\255posix)2.511 E F0 +(the startup \214les, as if the)144 540 R F1(\255\255posix)2.511 E F0 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 -(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5 -E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) --2.5 G(he command)-2.5 E F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G +(If it is set while the shell is)5.011 F(running,)144 552 Q F1(bash)2.5 +E F0(enables)2.5 E F5(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) +-2.5 G(he command)-2.5 E F4(set -o posix)2.5 E F0(had been e)2.5 E -.15 +(xe)-.15 G(cuted.).15 E F1(PR)108 564 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 576 Q(alue is e)-.25 E -.15(xe)-.15 G (cuted as a command prior to issuing each primary prompt.).15 E F1(PR) -108 276 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 288 R .676 +108 588 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 600 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 300 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 612 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 312 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS0)108 324 Q F0 1.174(The v) -144 324 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) +(Characters remo)144 624 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS0)108 636 Q F0 1.174(The v) +144 636 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) -.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 (w\) and displayed by interacti)-.25 F -.15(ve)-.25 G -(shells after reading a command and before the command is e)144 336 Q --.15(xe)-.15 G(cuted.).15 E F1(PS1)108 348 Q F0 .065(The v)144 348 R +(shells after reading a command and before the command is e)144 648 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 660 Q F0 .065(The v)144 660 R .065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) 2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 360 R +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 672 R (def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 372 Q F0 .117(The v)144 372 R .117 +-.74('')2.5 G(.).74 E F1(PS2)108 684 Q F0 .117(The v)144 684 R .117 (alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) 2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) -5.118 E(def)144 384 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 396 Q F0 1.116(The v)144 396 R 1.115 +5.118 E(def)144 696 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 708 Q F0 1.116(The v)144 708 R 1.115 (alue of this parameter is used as the prompt for the)-.25 F F1(select) 3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR) -144 408 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 420 Q F0 .1 -(The v)144 420 R .1(alue of this parameter is e)-.25 F .1 -(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 -(alue is printed before each command)-.25 F F1(bash)144 432 Q F0 .292 -(displays during an e)2.792 F -.15(xe)-.15 G .292(cution trace.).15 F -.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .291 -(is replicated multiple times, as)2.542 F(necessary)144 444 Q 2.5(,t) --.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G -(ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 --.74('')2.5 G(.).74 E F1(SHELL)108 456 Q F0 .663 -(The full pathname to the shell is k)144 468 R .664(ept in this en)-.1 F -.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .664 -(it is not set when the shell)3.164 F(starts,)144 480 Q F1(bash)2.5 E F0 -(assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55 -G(ogin shell.)-2.5 E F1(TIMEFORMA)108 492 Q(T)-.95 E F0 .827(The v)144 -504 R .826 +144 720 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(17)193.45 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(PS4)108 84 Q F0 .1(The v)144 84 R .1(alue of this parameter is e)-.25 +F .1(xpanded as with)-.15 F/F2 9/Times-Bold@0 SF(PS1)2.6 E F0 .101 +(and the v)2.35 F .101(alue is printed before each command)-.25 F F1 +(bash)144 96 Q F0 .335(displays during an e)2.835 F -.15(xe)-.15 G .335 +(cution trace.).15 F .335(The \214rst character of the e)5.335 F .335 +(xpanded v)-.15 F .335(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-) +2.584 F(cated multiple times, as necessary)144 108 Q 2.5(,t)-.65 G 2.5 +(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.) +.15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 +E F1(SHELL)108 120 Q F0 .663(The full pathname to the shell is k)144 132 +R .664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If) +-.25 F .664(it is not set when the shell)3.164 F(starts,)144 144 Q F1 +(bash)2.5 E F0(assigns to it the full pathname of the current user')2.5 +E 2.5(sl)-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 156 Q(T)-.95 E F0 +.827(The v)144 168 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F 3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 -(pipelines pre\214x)144 516 R .648(ed with the)-.15 F F1(time)3.148 E F0 +(pipelines pre\214x)144 180 R .648(ed with the)-.15 F F1(time)3.148 E F0 (reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F (The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 -(an escape sequence that is e)144 528 R .711(xpanded to a time v)-.15 F +(an escape sequence that is e)144 192 R .711(xpanded to a time v)-.15 F .711(alue or other information.)-.25 F .711(The escape sequences)5.711 F -(and their meanings are as follo)144 540 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 558 Q F0 2.5 -(Al)194 558 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 570 Q F4(p)A F1 -(][l]R)A F0(The elapsed time in seconds.)194 570 Q F1(%[)144 582 Q F4(p) -A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 582 Q -F1(%[)144 594 Q F4(p)A F1(][l]S)A F0 -(The number of CPU seconds spent in system mode.)194 594 Q F1(%P)144 606 -Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 606 Q .87 -(The optional)144 622.8 R F4(p)3.37 E F0 .87(is a digit specifying the) -3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 +(and their meanings are as follo)144 204 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 222 Q F0 2.5 +(Al)194 222 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 234 Q/F3 10 +/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194 +234 Q F1(%[)144 246 Q F3(p)A F1(][l]U)A F0 +(The number of CPU seconds spent in user mode.)194 246 Q F1(%[)144 258 Q +F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194 +258 Q F1(%P)144 270 Q F0 +(The CPU percentage, computed as \(%U + %S\) / %R.)194 270 Q .87 +(The optional)144 286.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 (he number of fractional digits after a decimal)-3.37 F 2.526(point. A) -144 634.8 R -.25(va)2.526 G .025 +144 298.8 R -.25(va)2.526 G .025 (lue of 0 causes no decimal point or fraction to be output.).25 F .025 (At most three places after the)5.025 F .537 -(decimal point may be speci\214ed; v)144 646.8 R .537(alues of)-.25 F F4 +(decimal point may be speci\214ed; v)144 310.8 R .537(alues of)-.25 F F3 (p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E -F4(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 658.8 Q -(alue 3 is used.)-.25 E .668(The optional)144 675.6 R F1(l)3.168 E F0 +F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 322.8 Q +(alue 3 is used.)-.25 E .668(The optional)144 339.6 R F1(l)3.168 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.167(s. The)B -.25(va) -3.167 G(lue).25 E(of)144 687.6 Q F4(p)2.5 E F0 +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) +3.167 G(lue).25 E(of)144 351.6 Q F3(p)2.5 E F0 (determines whether or not the fraction is included.)2.5 E 13.364 -(If this v)144 704.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 +(If this v)144 368.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 716.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +144 380.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -728.4 R(trailing ne)2.5 E -(wline is added when the format string is displayed.)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(17)192.055 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(TMOUT)108 84 Q F0 .941(If set to a v)144 96 R .941 -(alue greater than zero,)-.25 F/F2 9/Times-Bold@0 SF(TMOUT)3.441 E F0 -.941(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1 --.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 108 Q F1 -(select)2.811 E F0 .311(command terminates if input does not arri)2.811 -F .61 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.81 E F0 .31 -(seconds when input is com-)2.56 F .885(ing from a terminal.)144 120 R -.885(In an interacti)5.885 F 1.185 -.15(ve s)-.25 H .885(hell, the v).15 -F .886(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 -132 S 1.05(it for a line of input after issuing the primary prompt.).1 F -F1(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that) --.1 F(number of seconds if a complete line of input does not arri)144 -144 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 156 Q F0 .39(If set,)144 168 +392.4 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 +404.4 Q F0 .941(If set to a v)144 416.4 R .941(alue greater than zero,) +-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 +(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 +G(iltin.).2 E(The)144 428.4 Q F1(select)2.811 E F0 .311 +(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F +.885(ing from a terminal.)144 440.4 R .885(In an interacti)5.885 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .886 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 452.4 +S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 +(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 +F(number of seconds if a complete line of input does not arri)144 464.4 +Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 476.4 Q F0 .39(If set,)144 488.4 R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 (alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 -(creates temporary \214les for the)2.891 F(shell')144 180 Q 2.5(su)-.55 -G(se.)-2.5 E F1(auto_r)108 192 Q(esume)-.18 E F0 .531(This v)144 204 R -.531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 +(creates temporary \214les for the)2.891 F(shell')144 500.4 Q 2.5(su) +-.55 G(se.)-2.5 E F1(auto_r)108 512.4 Q(esume)-.18 E F0 .531(This v)144 +524.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 (he shell interacts with the user and job control.)-3.031 F .53 -(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 216 R +(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 536.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 228 S .367(isting stopped job) + for resumption of an)-.1 F -.15(ex)144 548.4 S .367(isting stopped job) .15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 (wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F 1.124(the string typed, the job most recently accessed is selected.)144 -240 R(The)6.125 E/F3 10/Times-Italic@0 SF(name)3.985 E F0 1.125 -(of a stopped job, in this)3.805 F(conte)144 252 Q 1.133 +560.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) +3.805 F(conte)144 572.4 Q 1.133 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) 6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 (he string supplied must)-3.632 F .624 -(match the name of a stopped job e)144 264 R .624(xactly; if set to)-.15 -F F3(substring)3.125 E F0 3.125(,t).22 G .625 +(match the name of a stopped job e)144 584.4 R .624(xactly; if set to) +-.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625 (he string supplied needs to match a)-3.125 F .885 -(substring of the name of a stopped job)144 276 R 5.884(.T)-.4 G(he) +(substring of the name of a stopped job)144 596.4 R 5.884(.T)-.4 G(he) -5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 -(vides functionality analogous to)-.15 F(the)144 288 Q F1(%?)3.333 E F0 -.833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E -F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) +(vides functionality analogous to)-.15 F(the)144 608.4 Q F1(%?)3.333 E +F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 +E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) -.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 -(must be a pre\214x of a stopped job')144 300 R 2.816(sn)-.55 G .316 +(must be a pre\214x of a stopped job')144 620.4 R 2.816(sn)-.55 G .316 (ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F -F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 312 Q(.)-.55 E -F1(histchars)108 324 Q F0 2.069(The tw)144 336 R 4.57(oo)-.1 G 4.57(rt) --4.57 G 2.07(hree characters which control history e)-4.57 F 2.07 -(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E(OR) --.162 E(Y)-.315 E(EXP)144 348 Q(ANSION)-.666 E F0(belo)3.466 E 3.716 -(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 +F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 632.4 Q(.)-.55 +E F1(histchars)108 644.4 Q F0 2.069(The tw)144 656.4 R 4.57(oo)-.1 G +4.57(rt)-4.57 G 2.07(hree characters which control history e)-4.57 F +2.07(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E +(OR)-.162 E(Y)-.315 E(EXP)144 668.4 Q(ANSION)-.666 E F0(belo)3.466 E +3.716(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 (history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G 1.215(he character which)-3.715 F .798(signals the start of a history e) -144 360 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 -(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 372 Q F0(character)2.74 E 2.74(,w)-.4 G .239 -(hich is used as shorthand for re-running the pre)-2.74 F .239 +144 680.4 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B +.798(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G +(ubstitu-)-3.298 E(tion)144 692.4 Q F0(character)2.74 E 2.74(,w)-.4 G +.239(hich is used as shorthand for re-running the pre)-2.74 F .239 (vious command entered, substitut-)-.25 F .575 -(ing one string for another in the command.)144 384 R .575(The def)5.575 -F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 +(ing one string for another in the command.)144 704.4 R .575(The def) +5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 (optional third character is the)3.076 F .223(character which indicates\ that the remainder of the line is a comment when found as the \214rst \ -char)144 396 R(-)-.2 E 1.293(acter of a w)144 408 R 1.293 +char)144 716.4 R(-)-.2 E 1.293(acter of a w)144 728.4 R 1.293 (ord, normally `)-.1 F F1(#)A F0 3.793('. The)B 1.294 -(history comment character causes history substitution to be)3.794 F .38 -(skipped for the remaining w)144 420 R .38(ords on the line.)-.1 F .379 +(history comment character causes history substitution to be)3.794 F +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(18)193.45 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .38 +(skipped for the remaining w)144 84 R .38(ords on the line.)-.1 F .379 (It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 432 Q F1(Arrays)87 448.8 Q(Bash) -108 460.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) --.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H -.891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891 -(ariable may be used as an)-3.641 F(inde)108 472.8 Q -.15(xe)-.15 G -2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2 -(bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15 -F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F -.328(an array)108 484.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) --.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G -2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F -5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329 -(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 496.8 R -1.595(gers \(including arithmetic e)-.15 F 1.595 +(the rest of the line as a comment.)144 96 Q/F1 10/Times-Bold@0 SF +(Arrays)87 112.8 Q(Bash)108 124.8 Q F0(pro)3.39 E .89 +(vides one-dimensional inde)-.15 F -.15(xe)-.15 G 3.39(da).15 G .891 +(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H .891(rray v).15 F 3.391 +(ariables. An)-.25 F 3.391(yv)-.15 G .891(ariable may be used as an) +-3.641 F(inde)108 136.8 Q -.15(xe)-.15 G 2.574(da).15 G .074(rray; the) +-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2(bu)2.574 G .074(iltin will e) +.2 F .073(xplicitly declare an array)-.15 F 5.073(.T)-.65 G .073 +(here is no maximum limit on the size of)-5.073 F .328(an array)108 +148.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)-.15 G .329 +(equirement that members be inde)-2.828 F -.15(xe)-.15 G 2.829(do).15 G +2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F 5.329(.I)-.65 G +(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329(rrays are refer)-2.829 +F(-)-.2 E 1.595(enced using inte)108 160.8 R 1.595 +(gers \(including arithmetic e)-.15 F 1.595 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 -508.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +172.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 -(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 525.6 R -.15(xe) +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 189.6 R -.15(xe) -.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F 4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F -F3(name)4.963 E F0([)A F3(sub-)A(script)108 537.6 Q F0(]=)A F3(value)A -F0 6.549(.T)C(he)-6.549 E F3(subscript)4.389 E F0 1.549 -(is treated as an arithmetic e)4.729 F 1.549(xpression that must e)-.15 -F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o)-7.348 -E -.15(ex)108 549.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15 -G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 -E 4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.98 -(SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E -(w\).)-.25 E F1(declar)108 561.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 -E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3 -(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 578.4 Q .3 -.15 -(ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 -G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 595.2 Q .941 -(utes may be speci\214ed for an array v)-.2 F .941(ariable using the) --.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 -.18(re)3.44 G -(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F(attrib)3.44 E(ute) --.2 E(applies to all members of an array)108 607.2 Q(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 624 R -F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each) --4.148 F F3(value)108 636 Q F0 1.833(is of the form [)4.333 F F3 -(subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +/F2 10/Times-Italic@0 SF(name)4.963 E F0([)A F2(sub-)A(script)108 201.6 +Q F0(]=)A F2(value)A F0 6.549(.T)C(he)-6.549 E F2(subscript)4.389 E F0 +1.549(is treated as an arithmetic e)4.729 F 1.549(xpression that must e) +-.15 F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o) +-7.348 E -.15(ex)108 213.6 S 1.979(plicitly declare an inde).15 F -.15 +(xe)-.15 G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1 +(declar)4.48 E 4.48<65ad>-.18 G(a)-4.48 E F2(name)4.48 E F0(\(see)4.48 E +/F3 9/Times-Bold@0 SF 1.98(SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS) +-.828 F F0(belo)4.23 E(w\).)-.25 E F1(declar)108 225.6 Q 2.5<65ad>-.18 G +(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 +(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E +(Associati)108 242.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E +F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 +259.2 Q .941(utes may be speci\214ed for an array v)-.2 F .941 +(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 +-.18(re)3.44 G(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F +(attrib)3.44 E(ute)-.2 E(applies to all members of an array)108 271.2 Q +(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 288 R +F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 +(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.148(,w)C 1.648(here each) +-4.148 F F2(value)108 300 Q F0 1.833(is of the form [)4.333 F F2 +(subscript)A F0(]=)A F2(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.832 -(ything b)-.15 F(ut)-.2 E F3(string)4.332 E F0(.)A .163 -(When assigning to inde)108 648 R -.15(xe)-.15 G 2.663(da).15 G .163 +(ything b)-.15 F(ut)-.2 E F2(string)4.332 E F0(.)A .163 +(When assigning to inde)108 312 R -.15(xe)-.15 G 2.663(da).15 G .163 (rrays, if the optional brack)-2.663 F .163 (ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664 -(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 660 R +(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 324 R 3.911(xo)-.15 G 3.911(ft)-3.911 G 1.411 (he element assigned is the last inde)-3.911 F 3.91(xa)-.15 G 1.41 -(ssigned to by the statement plus one.)-3.91 F(Inde)108 672 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 688.8 Q +(ssigned to by the statement plus one.)-3.91 F(Inde)108 336 Q +(xing starts at zero.)-.15 E(When assigning to an associati)108 352.8 Q .3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.) --2.5 E .239(This syntax is also accepted by the)108 705.6 R F1(declar) +-2.5 E .239(This syntax is also accepted by the)108 369.6 R F1(declar) 2.739 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24 -(vidual array elements may be assigned to using the)-.25 F F3(name)108 -717.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +(vidual array elements may be assigned to using the)-.25 F F2(name)108 +381.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 (syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-) -4.597 F .115(scripted by a ne)108 729.6 R -.05(ga)-.15 G(ti).05 E .415 +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F2(name)4.777 E F0 1.916(is sub-) +4.597 F .115(scripted by a ne)108 393.6 R -.05(ga)-.15 G(ti).05 E .415 -.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 (hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H 2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(18)192.055 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of)108 84 Q/F1 10 -/Times-Italic@0 SF(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +(of)108 405.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 -.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 (ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 (nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 -G .838(eferences the last)-3.338 F(element.)108 96 Q(An)108 112.8 Q +G .838(eferences the last)-3.338 F(element.)108 417.6 Q(An)108 434.4 Q 3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${) --3.575 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.076 +-3.575 F F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.076 (braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542 -(con\215icts with pathname e)108 124.8 R 4.041(xpansion. If)-.15 F F1 -(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or) -4.041 E F2(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F -1.541(xpands to all members of)-.15 F F1(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 136.8 R 1.056(fer only when the w)-.25 F 1.057 +(con\215icts with pathname e)108 446.4 R 4.041(xpansion. If)-.15 F F2 +(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E +F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 +(xpands to all members of)-.15 F F2(name)4.041 E F0(.)A 1.056 +(These subscripts dif)108 458.4 R 1.056(fer only when the w)-.25 F 1.057 (ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057 -(ord is double-quoted,)-.1 F(${)108 148.8 Q F1(name)A F0 .521([*]} e)B +(ord is double-quoted,)-.1 F(${)108 470.4 Q F2(name)A F0 .521([*]} e)B .521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 (alue of each array member separated by the \214rst character)-.25 F -1.374(of the)108 160.8 R/F3 9/Times-Bold@0 SF(IFS)3.874 E F0 1.374 -(special v)3.624 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 -([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.375 -(to a separate w)3.875 F 3.875(ord. When)-.1 F 2.028 -(there are no array members, ${)108 172.8 R F1(name)A F0 2.028([@]} e)B -2.028(xpands to nothing.)-.15 F 2.027(If the double-quoted e)7.028 F -2.027(xpansion occurs)-.15 F .758(within a w)108 184.8 R .759 -(ord, the e)-.1 F .759 +1.374(of the)108 482.4 R F3(IFS)3.874 E F0 1.374(special v)3.624 F 1.375 +(ariable, and ${)-.25 F F2(name)A F0 1.375([@]} e)B 1.375 +(xpands each element of)-.15 F F2(name)3.875 E F0 1.375(to a separate w) +3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108 +494.4 R F2(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F +2.027(If the double-quoted e)7.028 F 2.027(xpansion occurs)-.15 F .758 +(within a w)108 506.4 R .759(ord, the e)-.1 F .759 (xpansion of the \214rst parameter is joined with the be)-.15 F .759 (ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108 -196.8 R .516(xpansion of the last parameter is joined with the last par\ +518.4 R .516(xpansion of the last parameter is joined with the last par\ t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015 -F .227(to the e)108 208.8 R .228(xpansion of the special parameters)-.15 -F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +F .227(to the e)108 530.4 R .228(xpansion of the special parameters)-.15 +F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 (Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728 -(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 220.8 -S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A -F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) -3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .294(ments in the array)108 232.8 -R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F1(subscript)3.135 E F0 +(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 542.4 +S .886(pands to the length of ${).15 F F2(name)A F0([)A F2(subscript)A +F0 3.386(]}. If)B F2(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) +3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 +(xpansion is the number of ele-)-.15 F .294(ments in the array)108 554.4 +R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F2(subscript)3.135 E F0 .295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G 2.795(da).15 G .295(rray e)-2.795 F -.25(va)-.25 G .295 (luates to a number).25 F .629 -(less than zero, it is interpreted as relati)108 244.8 R .929 -.15(ve t) +(less than zero, it is interpreted as relati)108 566.4 R .929 -.15(ve t) -.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F 3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G 3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G -(indices count back from the end of the array)108 256.8 Q 2.5(,a)-.65 G +(indices count back from the end of the array)108 578.4 Q 2.5(,a)-.65 G (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (eferences the last element.)-2.5 E .595(Referencing an array v)108 -273.6 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +595.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .595(lent to referencing the array with a subscript of).25 F 2.5(0. An) -108 285.6 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 -E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E -F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 302.4 -Q(ariable is considered set if a subscript has been assigned a v)-.25 E +108 607.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F1(bash)2.5 E +F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 624 Q +(ariable is considered set if a subscript has been assigned a v)-.25 E 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E -.418(It is possible to obtain the k)108 319.2 R -.15(ey)-.1 G 2.918(s\() +.418(It is possible to obtain the k)108 640.8 R -.15(ey)-.1 G 2.918(s\() .15 G .418(indices\) of an array as well as the v)-2.918 F 2.917 -(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .417(]} and ${)B F2 -(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 331.2 S .749 -(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) +(alues. ${)-.25 F F1(!)A F2(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1 +(!)A F2(name)A F0([)A F2(*)A F0(]})A -.15(ex)108 652.8 S .749 +(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name) 3.249 E F0 5.749(.T)C .75 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -343.2 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 -E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 360 Q F2(unset)2.767 -E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G -(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A +664.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 +E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 681.6 Q F1(unset) +2.767 E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 +G(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F1(sub-)2.766 E(script)108 372 Q F0 6.318(.N)C -2.25 -.15(eg a) --6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F --.15(xe)-.15 G 3.818(da).15 G 1.319 -(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319 -(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108 -384 S .298(id unw).2 F .298(anted side ef)-.1 F .298 -(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.298 E F1 -(name)2.797 E F0 2.797(,w)C(here)-2.797 E F1(name)2.797 E F0 .297 -(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F2(unset)2.797 E F1 -(name)108 396 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E -F0(is)2.5 E F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E --.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 -412.8 Q F2(declar)3.573 E(e)-.18 E F0(,)A F2(local)3.573 E F0 3.573(,a)C -(nd)-3.573 E F2 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073 -(iltins each accept a).2 F F23.573 E F0 1.073 -(option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G 1.074 -(rray and a)-3.574 F F23.574 E F0 .339 -(option to specify an associati)108 424.8 R .638 -.15(ve a)-.25 H(rray) +-.15 E F2(sub-)2.766 E(script)108 693.6 Q F0 3.974(,f)C 1.474 +(or both inde)-3.974 F -.15(xe)-.15 G 3.974(da).15 G 1.474(nd associati) +-3.974 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti) +.05 E 1.774 -.15(ve s)-.25 H 1.474(ubscripts to inde).15 F -.15(xe)-.15 +G 3.975(da).15 G 1.475(rrays are interpreted as)-3.975 F .615 +(described abo)108 705.6 R -.15(ve)-.15 G 5.615(.U).15 G .615 +(nsetting the last element of an array v)-5.615 F .614 +(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.614 E F2 +(name)3.114 E F0(,)A(where)108 717.6 Q F2(name)2.5 E F0(is an array)2.5 +E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 E F0([)A F2 +(subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0 +(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G +(he entire array)-2.5 E(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(19)193.45 E 0 Cg EP +%%Page: 20 20 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .847 +(When using a v)108 84 R .848(ariable name with a subscript as an ar) +-.25 F .848(gument to a command, such as with)-.18 F/F1 10/Times-Bold@0 +SF(unset)3.348 E F0 3.348(,w)C(ithout)-3.348 E .345(using the w)108 96 R +.345(ord e)-.1 F .345(xpansion syntax described abo)-.15 F -.15(ve)-.15 +G 2.845(,t).15 G .345(he ar)-2.845 F .344 +(gument is subject to pathname e)-.18 F 2.844(xpansion. If)-.15 F(path-) +2.844 E(name e)108 108 Q(xpansion is not desired, the ar)-.15 E +(gument should be quoted.)-.18 E(The)108 124.8 Q F1(declar)3.573 E(e) +-.18 E F0(,)A F1(local)3.573 E F0 3.573(,a)C(nd)-3.573 E F1 -.18(re) +3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073(iltins each accept a).2 F +F13.573 E F0 1.073(option to specify an inde)3.573 F -.15(xe)-.15 +G 3.574(da).15 G 1.074(rray and a)-3.574 F F13.574 E F0 .339 +(option to specify an associati)108 136.8 R .638 -.15(ve a)-.25 H(rray) .15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) --2.838 F F22.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F2 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 -(accepts a)108 436.8 R F22.941 E F0 .441 +-2.838 F F12.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) +5.338 E F1 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 +(accepts a)108 148.8 R F12.941 E F0 .441 (option to assign a list of w)2.941 F .441 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F2(set)2.941 E F0(and)2.941 E F2(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 448.8 S(iltins display array v).2 E(alues in a w)-.25 E -(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 -/Times-Bold@0 SF(EXP)72 465.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 477.6 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 +(bu)108 160.8 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F2 10.95 +/Times-Bold@0 SF(EXP)72 177.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 189.6 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 489.6 S .369(pansion performed:).15 F F1 -(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e) -2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .37 -(command sub-)2.869 F(stitution)108 501.6 Q F0(,).24 E F1(arithmetic e) -2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 -E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .419(The order of e)108 518.4 R .419(xpansions is: brace e)-.15 F .418 +(inds of)-3.26 F -.15(ex)108 201.6 S .369(pansion performed:).15 F/F3 10 +/Times-Italic@0 SF(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 +E F3 .369(tilde e)2.869 F(xpansion)-.2 E F0(,).24 E F3(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F3 .37 +(command sub-)2.869 F(stitution)108 213.6 Q F0(,).24 E F3(arithmetic e) +2.5 E(xpansion)-.2 E F0(,).24 E F3(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 +E F0 2.5(,a).22 G(nd)-2.5 E F3(pathname e)2.5 E(xpansion)-.2 E F0(.).24 +E .419(The order of e)108 230.4 R .419(xpansions is: brace e)-.15 F .418 (xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418 -(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 530.4 S +(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 242.4 S .195(pansion, and command substitution \(done in a left-to-right f).15 F .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 542.4 Q .257 -(On systems that can support it, there is an additional e)108 559.2 R -.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257 +-.15 E(sion.)108 254.4 Q .257 +(On systems that can support it, there is an additional e)108 271.2 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F3(pr)2.757 E .257 (ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 -E(formed at the same time as tilde, parameter)108 571.2 Q 2.5(,v)-.4 G +E(formed at the same time as tilde, parameter)108 283.2 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E .002(After these e)108 588 R .003 +-.15 E .002(After these e)108 300 R .003 (xpansions are performed, quote characters present in the original w) -.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003 -(nless the)-2.503 F(y)-.15 E(ha)108 600 Q .3 -.15(ve b)-.2 H -(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1 -E F0(\).)A 1.487(Only brace e)108 616.8 R 1.487(xpansion, w)-.15 F 1.487 -(ord splitting, and pathname e)-.1 F 1.487 -(xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 -(ex)108 628.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F -1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(nless the)-2.503 F(y)-.15 E(ha)108 312 Q .3 -.15(ve b)-.2 H +(een quoted themselv).15 E(es \()-.15 E F3(quote r)A(emo)-.37 E(val)-.1 +E F0(\).)A 1.191(Only brace e)108 328.8 R 1.191(xpansion, w)-.15 F 1.191 +(ord splitting, and pathname e)-.1 F 1.191 +(xpansion can increase the number of w)-.15 F 1.19(ords of the)-.1 F +-.15(ex)108 340.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 +F 1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 (ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 640.8 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ") --2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G -(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 657.6 -Q F1(Br)108.58 669.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +-.15 F -.15(ex)108 352.8 S 1.245(pansions of ").15 F F1($@)A F0 3.745 +("a)C 1.245(nd ")-3.745 F F1(${)A F3(name)A F1([@]})A F0 1.245 +(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.744 E F3 +(name)A F1([*]})A F0 1.244(as e)3.744 F 1.244(xplained abo)-.15 F 1.544 +-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 364.8 S +(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 381.6 +Q F3(Br)108.58 393.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 681.6 Q F1 .415 +.606(This mechanism is similar)5.606 F(to)108 405.6 Q F3 .415 (pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .152(form of an optional)108 693.6 R F1(pr)2.652 E(eamble) +(he)-2.915 E .151(form of an optional)108 417.6 R F3(pr)2.651 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 705.6 R -.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 429.6 R +.563(wed by an optional)-.25 F F3(postscript)3.063 E F0 5.563(.T).68 G .563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 (contained within the braces, and the postscript is then appended to ea\ -ch resulting string, e)108 717.6 R .658(xpanding left to)-.15 F(right.) -108 729.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(19)192.055 E -0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .718(Brace e)108 -84 R .719(xpansions may be nested.)-.15 F .719(The results of each e) -5.719 F .719(xpanded string are not sorted; left to right order is)-.15 -F(preserv)108 96 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E/F1 10 -/Times-Bold@0 SF({)A F0(d,c,b)A F1(})A F0 2.5(ee)C -(xpands into `ade ace abe'.)-2.65 E 3.243(As)108 112.8 S .743(equence e) --3.243 F .743(xpression tak)-.15 F .743(es the form)-.1 F F1({)3.243 E -/F2 10/Times-Italic@0 SF(x)A F1(..)A F2(y)A F1([..)A F2(incr)A F1(]})A -F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E F0(and)3.242 E F2(y)3.242 E F0 -.742(are either inte)3.242 F .742(gers or single characters,)-.15 F(and) -108 124.8 Q F2(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G .532 -(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532 -(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 -136.8 R F2(x)2.578 E F0(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi) --2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .077 -(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 -(same width.)108 148.8 R .014(When either)5.014 F F2(x)2.514 E F0(or) -2.514 E F2(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ +ch resulting string, e)108 441.6 R .659(xpanding left to)-.15 F(right.) +108 453.6 Q .719(Brace e)108 470.4 R .719(xpansions may be nested.)-.15 +F .719(The results of each e)5.719 F .719 +(xpanded string are not sorted; left to right order is)-.15 F(preserv) +108 482.4 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 +(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.242(As) +108 499.2 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 +(es the form)-.1 F F1({)3.242 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A +F1(]})A F0 3.242(,w)C(here)-3.242 E F3(x)3.242 E F0(and)3.243 E F3(y) +3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) +-.15 F(and)108 511.2 Q F3(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G +.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G +.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 +(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108 +523.2 R F3(x)2.577 E F0(and)2.577 E F3(y)2.577 E F0 2.577(,i)C(nclusi) +-2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F3(0)2.577 E F0 .078 +(to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015 +(same width.)108 535.2 R .015(When either)5.015 F F3(x)2.515 E F0(or) +2.515 E F3(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 160.8 R +(the same number of digits, zero-padding where necessary)108 547.2 R 6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 172.8 S 1.064(pands to each character le) -.15 F 1.064(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E -F2(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G -1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984 -(that both)108 184.8 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 -(must be of the same type.)3.484 F .983 +(xpression)-.15 E -.15(ex)108 559.2 S 1.064(pands to each character le) +.15 F 1.064(xicographically between)-.15 F F3(x)3.564 E F0(and)3.564 E +F3(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G +1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .983 +(that both)108 571.2 R F3(x)3.483 E F0(and)3.483 E F3(y)3.483 E F0 .983 +(must be of the same type.)3.483 F .984 (When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 196.8 Q(The def)5 E -(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 213.6 -R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 -(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 -(haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 225.6 R .016(ed in the result.)-.15 F .016 -(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 -(does not apply an)2.516 F 2.515(ys)-.15 G .015 -(yntactic interpretation to the con-)-2.515 F(te)108 237.6 Q -(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.632(Ac)108 254.4 S 1.132(orrectly-formed brace e)-3.632 F 1.132 -(xpansion must contain unquoted opening and closing braces, and at leas\ -t one)-.15 F 3.441(unquoted comma or a v)108 266.4 R 3.441 -(alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 -(ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755 -(unchanged. A)108 278.4 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 +-.25 E(between each term.)108 583.2 Q(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108 600 +R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 +(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 +(haracters special to other e)-3.081 F(xpansions)-.15 E .015 +(are preserv)108 612 R .015(ed in the result.)-.15 F .015 +(It is strictly te)5.015 F(xtual.)-.15 E F1(Bash)5.016 E F0 .016 +(does not apply an)2.516 F 2.516(ys)-.15 G .016 +(yntactic interpretation to the con-)-2.516 F(te)108 624 Q(xt of the e) +-.15 E(xpansion or the te)-.15 E(xt between the braces.)-.15 E 3.633(Ac) +108 640.8 S 1.133(orrectly-formed brace e)-3.633 F 1.132(xpansion must \ +contain unquoted opening and closing braces, and at least one)-.15 F +3.44(unquoted comma or a v)108 652.8 R 3.441(alid sequence e)-.25 F +5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 +(ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755 +(unchanged. A)108 664.8 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 .255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 -(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.911 -(sion. T)108 290.4 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.91 +(sion. T)108 676.8 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 302.4 Q 1.476(This construct is typically used \ -as shorthand when the common pre\214x of the strings to be generated is) -108 319.2 R(longer than in the abo)108 331.2 Q .3 -.15(ve ex)-.15 H -(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 348 Q -.65(w,)-.25 G -(dist,b).65 E(ugs})-.2 E(or)108 360 Q(cho)144 372 Q -(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e) --.25 E(x}})-.15 E .618(Brace e)108 388.8 R .618 +F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion, and inhibits brace e)108 688.8 Q +(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\ +ct is typically used as shorthand when the common pre\214x of the strin\ +gs to be generated is)108 705.6 R(longer than in the abo)108 717.6 Q .3 +-.15(ve ex)-.15 H(ample:).15 E(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(20)193.45 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(mkdir /usr/local/src/bash/{old,ne)144 84 Q -.65(w,)-.25 G(dist,b).65 E +(ugs})-.2 E(or)108 96 Q(cho)144 108 Q(wn root /usr/{ucb/{e)-.25 E +(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e)-.25 E(x}})-.15 E .618 +(Brace e)108 124.8 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F -.618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 -(does not treat open-)3.118 F .247 -(ing or closing braces specially when the)108 400.8 R 2.747(ya)-.15 G -.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 -(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 412.8 Q -.15 +.618(ersions of)-.15 F/F1 10/Times-Bold@0 SF(sh)3.118 E F0(.)A F1(sh) +5.618 E F0 .618(does not treat open-)3.118 F .248 +(ing or closing braces specially when the)108 136.8 R 2.748(ya)-.15 G +.247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 +(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 148.8 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 (or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) -3.53 E F0(as)3.53 E F2(\214le{1,2})108 424.8 Q F0 .514 -(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) -3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 -(If strict compatibility with)108 436.8 R F1(sh)2.936 E F0 .436 +3.53 E F0(as)3.53 E/F2 10/Times-Italic@0 SF(\214le{1,2})108 160.8 Q F0 +.515(appears identically in the output.)3.015 F .515(The same w)5.515 F +.515(ord is output as)-.1 F F2 .514(\214le1 \214le2)4.925 F F0 .514 +(after e)3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A .436 +(If strict compatibility with)108 172.8 R F1(sh)2.936 E F0 .436 (is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 -(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 -(xpansion with the)-.15 F F1(+B)108 448.8 Q F0(option to the)2.5 E F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437 +(xpansion with the)-.15 F F1(+B)108 184.8 Q F0(option to the)2.5 E F1 (set)2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti) -87 465.6 S(lde Expansion).18 E F0 1.086(If a w)108 477.6 R 1.086(ord be) --.1 F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 -1.087('\), all of the characters preceding the \214rst unquoted)B .185(\ +87 201.6 S(lde Expansion).18 E F0 1.087(If a w)108 213.6 R 1.087(ord be) +-.1 F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 +1.086('\), all of the characters preceding the \214rst unquoted)B .185(\ slash \(or all characters, if there is no unquoted slash\) are consider\ -ed a)108 489.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 -(fn)-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\ -\214x are quoted, the characters in the tilde-pre\214x follo)108 501.6 R -.726(wing the tilde are treated as a possible)-.25 F F2(lo)108 513.6 Q -.523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 +ed a)108 225.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 +(fn)-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\ +\214x are quoted, the characters in the tilde-pre\214x follo)108 237.6 R +.725(wing the tilde are treated as a possible)-.25 F F2(lo)108 249.6 Q +.522(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522 (his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 525.6 Q/F4 -9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 -(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 -(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ +-3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 261.6 Q/F4 +9/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287 +(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286 +(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 537.6 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 554.4 R .092 +with the speci\214ed login name.)108 273.6 Q .092 +(If the tilde-pre\214x is a `~+', the v)108 290.4 R .092 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 -(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) -5.092 F 3.403(a`)108 566.4 S .903(~\255', the v)-3.403 F .903 +(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is) +5.093 F 3.404(a`)108 302.4 S .904(~\255', the v)-3.404 F .904 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .904(If the characters follo) -5.904 F .904(wing the)-.25 F 1.642 -(tilde in the tilde-pre\214x consist of a number)108 578.4 R F2(N)4.142 -E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 -(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ +.904(if it is set, is substituted.)3.154 F .903(If the characters follo) +5.903 F .903(wing the)-.25 F 1.641 +(tilde in the tilde-pre\214x consist of a number)108 314.4 R F2(N)4.141 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\ ith the corresponding element from the directory stack, as it w)108 -590.4 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) -108 602.4 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G -.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F -.454(the characters follo)2.954 F .454 +326.4 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu) +108 338.4 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G +.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .455 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 614.4 Q(If the login name is in)108 631.2 Q -.25(va)-.4 G +108 350.4 Q(If the login name is in)108 367.2 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .166(Each v)108 648 R .167 +(ord is unchanged.)-.1 E .167(Each v)108 384 R .167 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E -F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E -.468(these cases, tilde e)108 660 R .468(xpansion is also performed.) --.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 -(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 672 +F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E +.467(these cases, tilde e)108 396 R .467(xpansion is also performed.) +-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468 +(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 408 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)-.666 G (H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H).855 E F4 (,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E(alue.)-.25 E -F1 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0 1.605(The `)108 700.8 R -F1($)A F0 4.105('c)C 1.605(haracter introduces parameter e)-4.105 F -1.606(xpansion, command substitution, or arithmetic e)-.15 F 4.106 -(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 712.8 R -.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 -(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 -(tect the v)108 724.8 R .032(ariable to be e)-.25 F .032 -(xpanded from characters immediately follo)-.15 F .033 -(wing it which could be interpreted as part)-.25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(20)192.055 E 0 Cg EP -%%Page: 21 21 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of the name.)108 -84 Q 1.19 +F1 -.1(Pa)87 424.8 S(rameter Expansion).1 E F0 1.606(The `)108 436.8 R +F1($)A F0 4.106('c)C 1.606(haracter introduces parameter e)-4.106 F +1.605(xpansion, command substitution, or arithmetic e)-.15 F 4.105 +(xpansion. The)-.15 F .406(parameter name or symbol to be e)108 448.8 R +.407(xpanded may be enclosed in braces, which are optional b)-.15 F .407 +(ut serv)-.2 F 2.907(et)-.15 G 2.907(op)-2.907 G(ro-)-2.907 E .033 +(tect the v)108 460.8 R .033(ariable to be e)-.25 F .033 +(xpanded from characters immediately follo)-.15 F .032 +(wing it which could be interpreted as part)-.25 F(of the name.)108 +472.8 Q 1.189 (When braces are used, the matching ending brace is the \214rst `)108 -100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.689('n)C 1.189 -(ot escaped by a backslash or within a)-3.689 F 2.15 -(quoted string, and not within an embedded arithmetic e)108 112.8 R 2.15 -(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 124.8 S -(pansion.).15 E(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 -E F0(})A 1.205(The v)144 153.6 R 1.205(alue of)-.25 F F2(par)3.705 E -(ameter)-.15 E F0 1.204(is substituted.)3.705 F 1.204 -(The braces are required when)6.204 F F2(par)4.954 E(ameter)-.15 E F0 -1.204(is a positional)4.434 F .264 -(parameter with more than one digit, or when)144 165.6 R F2(par)4.014 E +489.6 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a) +-3.69 F 2.15(quoted string, and not within an embedded arithmetic e)108 +501.6 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15 +(ex)108 513.6 S(pansion.).15 E(${)108 530.4 Q F2(par)A(ameter)-.15 E F0 +(})A 1.204(The v)144 542.4 R 1.204(alue of)-.25 F F2(par)3.704 E(ameter) +-.15 E F0 1.204(is substituted.)3.704 F 1.204 +(The braces are required when)6.204 F F2(par)4.955 E(ameter)-.15 E F0 +1.205(is a positional)4.435 F .264 +(parameter with more than one digit, or when)144 554.4 R F2(par)4.014 E (ameter)-.15 E F0 .264(is follo)3.494 F .264 -(wed by a character which is not to)-.25 F 2.677 -(be interpreted as part of its name.)144 177.6 R(The)7.677 E F2(par) -5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo) -5.177 F -.15(ve)-.15 G F1 -.74(PA)144 189.6 S(RAMETERS).74 E F0 2.5(\)o) +(wed by a character which is not to)-.25 F 2.676 +(be interpreted as part of its name.)144 566.4 R(The)7.677 E F2(par) +5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G F1 -.74(PA)144 578.4 S(RAMETERS).74 E F0 2.5(\)o) C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 -(\).)A .346(If the \214rst character of)108 206.4 R F2(par)2.846 E +(\).)A .347(If the \214rst character of)108 595.2 R F2(par)2.846 E (ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a) -2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G -(ntroduces)-2.847 E 2.635(al)108 218.4 S -2.15 -.25(ev e)-2.635 H 2.635 -(lo).25 G 2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F1(Bash) +2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.846(,i)C 2.846(ti)-2.846 G +(ntroduces)-2.846 E 2.634(al)108 607.2 S -2.15 -.25(ev e)-2.634 H 2.634 +(lo).25 G 2.634(fv)-2.634 G .134(ariable indirection.)-2.884 F F1(Bash) 5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134 -(ariable formed from the rest of)-.25 F F2(par)2.634 E(ameter)-.15 E F0 -.134(as the)2.634 F 1.003(name of the v)108 230.4 R 1.003 +(ariable formed from the rest of)-.25 F F2(par)2.635 E(ameter)-.15 E F0 +.135(as the)2.635 F 1.004(name of the v)108 619.2 R 1.003 (ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003 (xpanded and that v)-.15 F 1.003 -(alue is used in the rest of the substitution,)-.25 F .595 -(rather than the v)108 242.4 R .595(alue of)-.25 F F2(par)3.095 E -(ameter)-.15 E F0 3.095(itself. This)3.095 F .595(is kno)3.095 F .595 -(wn as)-.25 F F2(indir)3.095 E .595(ect e)-.37 F(xpansion)-.2 E F0 5.594 -(.I)C(f)-5.594 E F2(par)3.094 E(ameter)-.15 E F0 .594(is a nameref,) -3.094 F .477(this e)108 254.4 R .477(xpands to the name of the v)-.15 F -.477(ariable referenced by)-.25 F F2(par)2.978 E(ameter)-.15 E F0 .478 -(instead of performing the complete indi-)2.978 F 2.164(rect e)108 266.4 -R 4.663(xpansion. The)-.15 F -.15(ex)4.663 G 2.163 -(ceptions to this are the e).15 F 2.163(xpansions of ${)-.15 F F1(!)A F2 -(pr)A(e\214x)-.37 E F1(*)A F0 4.663(}a)C 2.163(nd ${)-4.663 F F1(!)A F2 -(name)A F0([)A F2(@)A F0 2.163(]} described)B(belo)108 278.4 Q 3.8 -.65 -(w. T)-.25 H(he e).65 E(xclamation point must immediately follo)-.15 E -2.5(wt)-.25 G(he left brace in order to introduce indirection.)-2.5 E -.334(In each of the cases belo)108 295.2 R -.65(w,)-.25 G F2(wor)3.484 E +(alue is used in the rest of the substitution,)-.25 F .257 +(rather than the v)108 631.2 R .257(alue of)-.25 F F2(par)2.757 E +(ameter)-.15 E F0 2.757(itself. This)2.757 F .257(is kno)2.757 F .257 +(wn as)-.25 F F2(indir)2.757 E .257(ect e)-.37 F(xpansion)-.2 E F0 5.257 +(.T)C .257(he v)-5.257 F .258(alue is subject to tilde)-.25 F -.15(ex) +108 643.2 S 2.767(pansion, parameter e).15 F 2.766 +(xpansion, command substitution, and arithmetic e)-.15 F 5.266 +(xpansion. If)-.15 F F2(par)5.266 E(ameter)-.15 E F0 2.766(is a)5.266 F +.461(nameref, this e)108 655.2 R .461(xpands to the name of the v)-.15 F +.461(ariable referenced by)-.25 F F2(par)2.961 E(ameter)-.15 E F0 .462 +(instead of performing the com-)2.961 F 2.419(plete indirect e)108 667.2 +R 4.919(xpansion. The)-.15 F -.15(ex)4.919 G 2.418 +(ceptions to this are the e).15 F 2.418(xpansions of ${)-.15 F F1(!)A F2 +(pr)A(e\214x)-.37 E F1(*)A F0 4.918(}a)C 2.418(nd ${)-4.918 F F1(!)A F2 +(name)A F0([)A F2(@)A F0(]})A .464(described belo)108 679.2 R 4.264 -.65 +(w. T)-.25 H .464(he e).65 F .464 +(xclamation point must immediately follo)-.15 F 2.965(wt)-.25 G .465 +(he left brace in order to introduce indi-)-2.965 F(rection.)108 691.2 Q +.334(In each of the cases belo)108 708 R -.65(w,)-.25 G F2(wor)3.484 E (d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 (xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 307.2 Q(xpansion.)-.15 E 1.09 -(When not performing substring e)108 324 R 1.089 +F(and arithmetic e)108 720 Q(xpansion.)-.15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(21)193.45 E 0 Cg EP +%%Page: 22 22 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.089 +(When not performing substring e)108 84 R 1.089 (xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089 -(tests for a)3.589 F(parameter that is unset or null.)108 336 Q(Omittin\ -g the colon results in a test only for a parameter that is unset.)5 E -(${)108 352.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(}) -A F1 .722(Use Default V)144 364.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 -E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F -.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) -3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 376.8 Q(alue of)-.25 E F2 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 388.8 Q F2 -(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005 -(Assign Default V)144 400.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2 -(par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F -2.004(xpansion of)-.15 F F2(wor)4.844 E(d)-.37 E F0 2.004 -(is assigned to)5.274 F F2(par)144 412.8 Q(ameter)-.15 E F0 5.278(.T).73 -G .278(he v)-5.278 F .278(alue of)-.25 F F2(par)4.028 E(ameter)-.15 E F0 -.278(is then substituted.)3.508 F .279 +(e.g.,)-3.589 E/F1 10/Times-Bold@0 SF(:-)3.59 E F0(\),)A F1(bash)3.59 E +F0 1.09(tests for a)3.59 F(parameter that is unset or null.)108 96 Q(Om\ +itting the colon results in a test only for a parameter that is unset.)5 +E(${)108 112.8 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 E F1<3aad>A +F2(wor)A(d)-.37 E F0(})A F1 .723(Use Default V)144 124.8 R(alues)-.92 E +F0 5.723(.I)C(f)-5.723 E F2(par)4.473 E(ameter)-.15 E F0 .723 +(is unset or null, the e)3.953 F .722(xpansion of)-.15 F F2(wor)3.562 E +(d)-.37 E F0 .722(is substituted.)3.992 F(Other)5.722 E(-)-.2 E +(wise, the v)144 136.8 Q(alue of)-.25 E F2(par)3.75 E(ameter)-.15 E F0 +(is substituted.)3.23 E(${)108 148.8 Q F2(par)A(ameter)-.15 E F1(:=)A F2 +(wor)A(d)-.37 E F0(})A F1 2.004(Assign Default V)144 160.8 R(alues)-.92 +E F0 7.004(.I)C(f)-7.004 E F2(par)5.754 E(ameter)-.15 E F0 2.005 +(is unset or null, the e)5.234 F 2.005(xpansion of)-.15 F F2(wor)4.845 E +(d)-.37 E F0 2.005(is assigned to)5.275 F F2(par)144 172.8 Q(ameter)-.15 +E F0 5.279(.T).73 G .279(he v)-5.279 F .279(alue of)-.25 F F2(par)4.029 +E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .278 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 424.8 Q(ay)-.1 E(.)-.65 E -(${)108 436.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A -F1 .535(Display Err)144 448.8 R .535(or if Null or Unset)-.18 F F0 5.535 +(eters may not be assigned to in this w)144 184.8 Q(ay)-.1 E(.)-.65 E +(${)108 196.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A +F1 .535(Display Err)144 208.8 R .535(or if Null or Unset)-.18 F F0 5.535 (.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 (is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 460.8 R -.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ - written to the standard error and the shell, if it is not)3.931 F -(interacti)144 472.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +(d)-.37 E F0 .535(\(or a mes-)3.035 F .662(sage to that ef)144 220.8 R +.662(fect if)-.25 F F2(wor)3.502 E(d)-.37 E F0 .661(is not present\) is\ + written to the standard error and the shell, if it is not)3.932 F +(interacti)144 232.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) -2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0 -(is substituted.)2.5 E(${)108 484.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 -(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 496.8 R .745(nate V)-.15 F +(is substituted.)2.5 E(${)108 244.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 +(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 256.8 R .745(nate V)-.15 F (alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 508.8 Q F2(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 520.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F0(})A(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(xpan-)-.15 E(sion of)144 268.8 Q F2(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 280.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(of)A(fset)-.18 E F0(})A(${)108 292.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 (of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion) -144 544.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 +144 304.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E -(ameter)-.15 E F0 .002(starting at the)2.502 F 1.082 -(character speci\214ed by)144 556.8 R F2(of)3.582 E(fset)-.18 E F0 6.082 -(.I)C(f)-6.082 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E +(ameter)-.15 E F0 .002(starting at the)2.502 F 1.081 +(character speci\214ed by)144 316.8 R F2(of)3.581 E(fset)-.18 E F0 6.081 +(.I)C(f)-6.081 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 -G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.581 E F1(*) -3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 568.8 Q +G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.582 E F1(*) +3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 E(associati)144 328.8 Q 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 580.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 592.8 R(alue.)-.25 E F2(length)5.846 E F0 +3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .042 +(substring of the v)144 340.8 R .042(alue of)-.25 F F2(par)2.542 E +(ameter)-.15 E F0 .043(starting at the character speci\214ed by)2.542 F +F2(of)2.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the) +-.15 F .847(end of the v)144 352.8 R(alue.)-.25 E F2(length)5.846 E F0 (and)3.346 E F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F -.847(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV) -3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 604.8 Q -(w\).)-.25 E(If)144 628.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 +.846(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV) +3.346 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 364.8 Q +(w\).)-.25 E(If)144 388.8 Q F2(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529(luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.045(end of the v)144 640.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter) +.046(end of the v)144 400.8 R .046(alue of)-.25 F F2(par)2.546 E(ameter) -.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 652.8 Q .203(fset in characters from the end of the v)-.25 F -.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202 -(rather than a number of characters, and)2.702 F .557(the e)144 664.8 R -.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E -F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) --.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 -F(separated from the colon by at least one space to a)144 676.8 Q -.2 +(of)144 412.8 Q .202(fset in characters from the end of the v)-.25 F +.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .203 +(rather than a number of characters, and)2.702 F .558(the e)144 424.8 R +.558(xpansion is the characters between)-.15 F F2(of)3.058 E(fset)-.18 E +F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) +-.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 +F(separated from the colon by at least one space to a)144 436.8 Q -.2 (vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 700.8 Q F2(par)2.959 E(ameter)-.15 E F0(is)2.959 -E F1(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F2(length)2.959 -E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F2(of) -2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F2(of)3.108 E(fset)-.18 E F0 .095(is tak)144 712.8 R .095 -(en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096 -(ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4 -G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e) -.25 F -.25(va)-.25 G .096(luates to).25 F 1.322 -(the last positional parameter)144 724.8 R 6.322(.I)-.55 G 3.822(ti) --6.322 G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if) --3.972 F F2(length)3.822 E F0 -.25(eva)3.822 G 1.322 -(luates to a number less than).25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(21)192.055 E 0 Cg EP -%%Page: 22 22 +(pansion.).15 E(If)144 460.8 Q F2(par)2.958 E(ameter)-.15 E F0(is)2.958 +E F1(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F2(length)2.959 +E F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F2(of) +2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 +(ve)-.25 G F2(of)3.109 E(fset)-.18 E F0 .6(is tak)144 472.8 R .6 +(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6 +(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G +3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25 +(va)-.25 G(luates).25 E .639(to the last positional parameter)144 484.8 +R 5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G +.639(xpansion error if)-3.289 F F2(length)3.14 E F0 -.25(eva)3.14 G .64 +(luates to a number less than).25 F(zero.)144 496.8 Q(If)144 520.8 Q F2 +(par)3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G +3.014(da).15 G .514(rray name subscripted by @ or *, the result is the) +-3.014 F F2(length)3.014 E F0 .513(members of)3.013 F 1.081 +(the array be)144 532.8 R 1.081(ginning with ${)-.15 F F2(par)A(ameter) +-.15 E F0([)A F2(of)A(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga) +-.15 G(ti).05 E -.15(ve)-.25 G F2(of)3.732 E(fset)-.18 E F0 1.082 +(is tak)3.582 F 1.082(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo) +.15 G 1.082(ne greater)-3.582 F 1.08(than the maximum inde)144 544.8 R +3.58(xo)-.15 G 3.58(ft)-3.58 G 1.08(he speci\214ed array)-3.58 F 6.079 +(.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079 +(xpansion error if)-3.729 F F2(length)3.579 E F0 -.25(eva)3.579 G 1.079 +(luates to a).25 F(number less than zero.)144 556.8 Q(Substring e)144 +580.8 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H +(rray produces unde\214ned results.).15 E 1.93(Substring inde)144 604.8 +R 1.931(xing is zero-based unless the positional parameters are used, i\ +n which case the)-.15 F(inde)144 616.8 Q .307(xing starts at 1 by def) +-.15 F 2.807(ault. If)-.1 F F2(of)2.807 E(fset)-.18 E F0 .307 +(is 0, and the positional parameters are used,)2.807 F F1($0)2.806 E F0 +.306(is pre\214x)2.806 F(ed)-.15 E(to the list.)144 628.8 Q(${)108 645.6 +Q F1(!)A F2(pr)A(e\214x)-.37 E F1(*)A F0(})A(${)108 657.6 Q F1(!)A F2 +(pr)A(e\214x)-.37 E F1(@)A F0(})A F1 .084(Names matching pr)144 669.6 R +(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F .084 +(ariables whose names be)-.25 F .085(gin with)-.15 F F2(pr)2.585 E +(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 +(rated by the \214rst character of the)144 681.6 R F3(IFS)2.758 E F0 +.257(special v)2.507 F 2.757(ariable. When)-.25 F F2(@)2.757 E F0 .257 +(is used and the e)2.757 F .257(xpansion appears)-.15 F +(within double quotes, each v)144 693.6 Q(ariable name e)-.25 E +(xpands to a separate w)-.15 E(ord.)-.1 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(22)193.45 E 0 Cg EP +%%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(zero.)144 84 Q(If) -144 108 Q/F1 10/Times-Italic@0 SF(par)3.013 E(ameter)-.15 E F0 .514 -(is an inde)3.013 F -.15(xe)-.15 G 3.014(da).15 G .514 -(rray name subscripted by @ or *, the result is the)-3.014 F F1(length) -3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 120 R 1.082 -(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 -E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1 -(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081(en relati)-.1 F -1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)-3.581 F 1.079 -(than the maximum inde)144 132 R 3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079 -(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579 -(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 F F1(length) -3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F(number less than zero.) -144 144 Q(Substring e)144 168 Q(xpansion applied to an associati)-.15 E -.3 -.15(ve a)-.25 H(rray produces unde\214ned results.).15 E 1.931 -(Substring inde)144 192 R 1.931(xing is zero-based unless the positiona\ -l parameters are used, in which case the)-.15 F(inde)144 204 Q .306 -(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F F1(of)2.807 E(fset) --.18 E F0 .307(is 0, and the positional parameters are used,)2.807 F/F2 -10/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E -(to the list.)144 216 Q(${)108 232.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 -(*)A F0(})A(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 -.085(Names matching pr)144 256.8 R(e\214x)-.18 E F0 5.085(.E)C .084 -(xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F -.084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) --2.584 E .257(rated by the \214rst character of the)144 268.8 R/F3 9 -/Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757 -(ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F -.258(xpansion appears)-.15 F(within double quotes, each v)144 280.8 Q -(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 -297.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 309.6 Q F2(!)A F1 -(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 321.6 R(eys) --.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v) -4.536 F 2.036(ariable, e)-.25 F 2.036 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 +/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF(name)A F0([)A F2(@)A F0(]}) +A(${)108 96 Q F1(!)A F2(name)A F0([)A F2(*)A F0(]})A F1 2.035 +(List of array k)144 108 R(eys)-.1 E F0 7.036(.I)C(f)-7.036 E F2(name) +4.536 E F0 2.036(is an array v)4.536 F 2.036(ariable, e)-.25 F 2.036 (xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E -.595(assigned in)144 333.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 -(name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595 -(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 -(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 345.6 Q F0 +.596(assigned in)144 120 R F2(name)3.096 E F0 5.596(.I)C(f)-5.596 E F2 +(name)3.096 E F0 .595(is not an array)3.096 F 3.095(,e)-.65 G .595 +(xpands to 0 if)-3.245 F F2(name)3.095 E F0 .595 +(is set and null otherwise.)3.095 F(When)5.595 E F2(@)144 132 Q F0 (is used and the e)2.5 E(xpansion appears within double quotes, each k) -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -362.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 374.4 S .471 -(rameter length).1 F F0 5.471(.T)C .471 -(he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) -2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) -4.22 E(ame-)-.15 E(ter)144 386.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) -3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 +148.8 Q F1(#)A F2(par)A(ameter)-.15 E F0(})A F1 -.1(Pa)144 160.8 S .47 +(rameter length).1 F F0 5.47(.T)C .471(he length in characters of the v) +-5.47 F .471(alue of)-.25 F F2(par)2.971 E(ameter)-.15 E F0 .471 +(is substituted.)2.971 F(If)5.471 E F2(par)4.221 E(ame-)-.15 E(ter)144 +172.8 Q F0(is)4.439 E F1(*)3.709 E F0(or)3.709 E F1(@)3.709 E F0 3.708 +(,t)C 1.208(he v)-3.708 F 1.208 (alue substituted is the number of positional parameters.)-.25 F(If) -6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 -(array name subscripted by)144 398.4 R F2(*)2.849 E F0(or)2.849 E F2(@) +6.208 E F2(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 +(array name subscripted by)144 184.8 R F1(*)2.849 E F0(or)2.849 E F1(@) 2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 -(alue substituted is the number of elements in the array)-.25 F 5.348 -(.I)-.65 G(f)-5.348 E F1(par)145.25 410.4 Q(ameter)-.15 E F0 .455 -(is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 -(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 --.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 -(hat number is interpreted)-2.956 F .973(as relati)144 422.4 R 1.273 --.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) --3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 -3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 --.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array) -144 434.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 451.2 Q F1 -(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 463.2 Q F1 -(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 475.2 +(alue substituted is the number of elements in the array)-.25 F 5.349 +(.I)-.65 G(f)-5.349 E F2(par)145.25 196.8 Q(ameter)-.15 E F0 .456 +(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 +(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 +-.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 +(hat number is interpreted)-2.955 F .972(as relati)144 208.8 R 1.272 +-.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) +-3.472 F 3.473(xo)-.15 G(f)-3.473 E F2(par)3.473 E(ameter)-.15 E F0 +3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 +-.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) +144 220.8 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 237.6 Q F2 +(par)A(ameter)-.15 E F1(#)A F2(wor)A(d)-.37 E F0(})A(${)108 249.6 Q F2 +(par)A(ameter)-.15 E F1(##)A F2(wor)A(d)-.37 E F0(})A F1(Remo)144 261.6 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 +(n)-.15 E F0 6.196(.T)C(he)-6.196 E F2(wor)4.036 E(d)-.37 E F0 1.196 (is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F -.152(name e)144 487.2 R 2.652(xpansion. If)-.15 F .152 -(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152 -(alue of)-.25 F F1(par)2.652 E(ameter)-.15 E F0 2.652(,t).73 G .151 -(hen the result of)-2.652 F 1.4(the e)144 499.2 R 1.4(xpansion is the e) --.15 F 1.4(xpanded v)-.15 F 1.4(alue of)-.25 F F1(par)5.15 E(ameter)-.15 -E F0 1.4(with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2 -(#)A F0 -.74('')C .281(case\) or the longest matching pattern \(the `) -144 511.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.) -.74 F(If)5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E -F0(or)2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo) -144 523.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 -(peration is applied to each positional parameter in turn, and the e) --3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 535.2 R -(If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F -.401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) -2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901 -(lo).25 G(peration)-2.901 E -(is applied to each member of the array in turn, and the e)144 547.2 Q -(xpansion is the resultant list.)-.15 E(${)108 564 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 576 Q F1(par)A(ameter)-.15 -E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 588 Q .346 -.1(ve m)-.1 H -.146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he)-5.146 E F1 -(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 600 -S 3.088(pansion. If).15 F .588 -(the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) --.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73 -G .588(hen the)-3.088 F .226(result of the e)144 612 R .226 -(xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1 -(par)3.976 E(ameter)-.15 E F0 .226 -(with the shortest matching pattern \(the)3.456 F -.74(``)144 624 S F2 -(%).74 E F0 1.522 -.74('' c)D .042 -(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 -1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E -(ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0 -2.541(,t)C(he)-2.541 E .44(pattern remo)144 636 R -.25(va)-.15 G 2.94 -(lo).25 G .441 +.543(name e)144 273.6 R .544(xpansion, and matched ag)-.15 F .544 +(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F2(par) +4.294 E(ameter)-.15 E F0 .544(using the rules described)3.774 F(under) +144 285.6 Q F1 -.1(Pa)3.222 G(tter).1 E 3.222(nM)-.15 G(atching)-3.222 E +F0(belo)3.222 E 4.522 -.65(w. I)-.25 H 3.222(ft).65 G .721 +(he pattern matches the be)-3.222 F .721(ginning of the v)-.15 F .721 +(alue of)-.25 F F2(par)3.221 E(ameter)-.15 E F0(,).73 E 1.151 +(then the result of the e)144 297.6 R 1.151(xpansion is the e)-.15 F +1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F2(par)4.902 E(ameter)-.15 E +F0 1.152(with the shortest matching)4.382 F .184(pattern \(the `)144 +309.6 R(`)-.74 E F1(#)A F0 1.664 -.74('' c)D .184 +(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F1(##)A F0 +1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F2(par)3.933 E +(ameter)-.15 E F0(is)3.413 E F1(@)2.683 E F0(or)144 321.6 Q F1(*)3.018 E +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) --2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 648 R(If) -5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241 -(ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E -F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G -(per)-2.74 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 660 -Q(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter) --.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 688.8 -S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C(he)-6.106 -E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 -(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 700.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 -(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) -3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 -(alue is replaced with)-.25 F F1(string)144 712.8 Q F0 5.16(.I)C(f)-5.16 -E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0 -2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161 -(are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161 -(ormally only the)-5.161 F .807(\214rst match is replaced.)144 724.8 R -(If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#) -3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306 -F .806(ginning of the e)-.15 F(xpanded)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(22)192.055 E 0 Cg EP -%%Page: 23 23 +-3.018 F(xpan-)-.15 E 1.122(sion is the resultant list.)144 333.6 R(If) +6.121 E F2(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F +1.121(ariable subscripted with)-.25 F F1(@)3.621 E F0(or)3.621 E F1(*) +3.621 E F0 3.621(,t)C 1.121(he pattern)-3.621 F(remo)144 345.6 Q -.25 +(va)-.15 G 2.53(lo).25 G .03 +(peration is applied to each member of the array in turn, and the e) +-2.53 F .03(xpansion is the resultant)-.15 F(list.)144 357.6 Q(${)108 +374.4 Q F2(par)A(ameter)-.15 E F1(%)A F2(wor)A(d)-.37 E F0(})A(${)108 +386.4 Q F2(par)A(ameter)-.15 E F1(%%)A F2(wor)A(d)-.37 E F0(})A F1(Remo) +144 398.4 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 +E F0 5.147(.T)C(he)-5.147 E F2(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F +.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 +410.4 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 +(xpanded v)-.15 F .458(alue of)-.25 F F2(par)4.209 E(ameter)-.15 E F0 +.459(using the rules described under)3.689 F F1 -.1(Pa)144 422.4 S(tter) +.1 E 4.593(nM)-.15 G(atching)-4.593 E F0(belo)4.593 E 5.892 -.65(w. I) +-.25 H 4.592(ft).65 G 2.092 +(he pattern matches a trailing portion of the e)-4.592 F 2.092 +(xpanded v)-.15 F 2.092(alue of)-.25 F F2(par)144 434.4 Q(ameter)-.15 E +F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65 +(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F2 +(par)4.4 E(ameter)-.15 E F0 .65(with the shortest)3.88 F 1.085 +(matching pattern \(the `)144 446.4 R(`)-.74 E F1(%)A F0 2.565 -.74 +('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 +E F1(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F2 +(par)145.25 458.4 Q(ameter)-.15 E F0(is)3.389 E F1(@)2.659 E F0(or)2.659 +E F1(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 +G 2.659(lo).25 G .16 +(peration is applied to each positional parameter in turn,)-2.659 F .51 +(and the e)144 470.4 R .51(xpansion is the resultant list.)-.15 F(If) +5.51 E F2(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 +(ariable subscripted with)-.25 F F1(@)3.009 E F0(or)3.009 E F1(*)3.009 E +F0(,)A .422(the pattern remo)144 482.4 R -.25(va)-.15 G 2.922(lo).25 G +.422(peration is applied to each member of the array in turn, and the e) +-2.922 F .423(xpansion is)-.15 F(the resultant list.)144 494.4 Q(${)108 +511.2 Q F2(par)A(ameter)-.15 E F1(/)A F2(pattern)A F1(/)A F2(string)A F0 +(})A F1 -.1(Pa)144 523.2 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 +E F0 6.107(.T)C(he)-6.107 E F2(pattern)3.607 E F0 1.107(is e)3.607 F +1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-) +-.15 E(sion,)144 535.2 Q F2 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2 +(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F2(pattern)3.7 E +F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F2 +(string)144 547.2 Q F0 5.397(.T)C .397 +(he match is performed using the rules described under)-5.397 F F1 -.1 +(Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E +4.196 -.65(w. I)-.25 H(f).65 E F2(pat-)2.896 E(tern)144 559.2 Q F0(be) +2.569 E .069(gins with)-.15 F F1(/)2.569 E F0 2.569(,a)C .069 +(ll matches of)-2.569 F F2(pattern)2.569 E F0 .069(are replaced with) +2.569 F F2(string)2.57 E F0 5.07(.N)C .07 +(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 571.2 R +F2(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F1(#)2.58 E F0 2.58 +(,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079 +(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F2 +(par)2.579 E(am-)-.15 E(eter)144 583.2 Q F0 5.761(.I)C(f)-5.761 E F2 +(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F1(%)3.261 E F0 +3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F +.761(xpanded v)-.15 F .761(alue of)-.25 F F2(par)3.262 E(ameter)-.15 E +F0 5.762(.I)C(f)-5.762 E F2(string)144 595.2 Q F0 .958 +(is null, matches of)3.458 F F2(pattern)3.458 E F0 .958 +(are deleted and the)3.458 F F1(/)3.458 E F0(follo)3.458 E(wing)-.25 E +F2(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F +F1(nocasematch)144 607.2 Q F0 .492 +(shell option is enabled, the match is performed without re)2.992 F -.05 +(ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.) +144 619.2 R(If)5.884 E F2(par)4.634 E(ameter)-.15 E F0(is)4.114 E F1(@) +3.384 E F0(or)3.383 E F1(*)3.383 E F0 3.383(,t)C .883 +(he substitution operation is applied to each positional)-3.383 F 1.002 +(parameter in turn, and the e)144 631.2 R 1.002 +(xpansion is the resultant list.)-.15 F(If)6.002 E F2(par)4.752 E +(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F +.159(scripted with)144 643.2 R F1(@)2.659 E F0(or)2.659 E F1(*)2.659 E +F0 2.659(,t)C .159(he substitution operation is applied to each member \ +of the array in turn, and)-2.659 F(the e)144 655.2 Q +(xpansion is the resultant list.)-.15 E(${)108 672 Q F2(par)A(ameter) +-.15 E F1(^)A F2(pattern)A F0(})A(${)108 684 Q F2(par)A(ameter)-.15 E F1 +(^^)A F2(pattern)A F0(})A(${)108 696 Q F2(par)A(ameter)-.15 E F1(,)A F2 +(pattern)A F0(})A(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(23)193.45 +E 0 Cg EP +%%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S -.62(lue of).25 F/F1 10/Times-Italic@0 SF(par)3.12 E(ameter)-.15 E F0 -5.62(.I)C(f)-5.62 E F1(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F -/F2 10/Times-Bold@0 SF(%)3.12 E F0 3.12(,i)C 3.121(tm)-3.12 G .621 -(ust match at the end of the e)-3.121 F .621(xpanded v)-.15 F .621 -(alue of)-.25 F F1(par)144 96 Q(ameter)-.15 E F0 6.254(.I)C(f)-6.254 E -F1(string)3.754 E F0 1.253(is null, matches of)3.753 F F1(pattern)3.753 -E F0 1.253(are deleted and the)3.753 F F2(/)3.753 E F0(follo)3.753 E -(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be)3.753 F 2.731 -(omitted. If)144 108 R(the)2.731 E F2(nocasematch)2.731 E F0 .231 -(shell option is enabled, the match is performed without re)2.731 F -.05 -(ga)-.15 G .232(rd to the).05 F .188(case of alphabetic characters.)144 -120 R(If)5.188 E F1(par)3.938 E(ameter)-.15 E F0(is)3.418 E F2(@)2.688 E -F0(or)2.688 E F2(*)2.687 E F0 2.687(,t)C .187 -(he substitution operation is applied to each)-2.687 F .445 -(positional parameter in turn, and the e)144 132 R .446 -(xpansion is the resultant list.)-.15 F(If)5.446 E F1(par)4.196 E -(ameter)-.15 E F0 .446(is an array v)3.676 F(ari-)-.25 E .463 -(able subscripted with)144 144 R F2(@)2.963 E F0(or)2.963 E F2(*)2.963 E -F0 2.963(,t)C .462 -(he substitution operation is applied to each member of the array in) --2.963 F(turn, and the e)144 156 Q(xpansion is the resultant list.)-.15 -E(${)108 172.8 Q F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${) -108 184.8 Q F1(par)A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 -196.8 Q F1(par)A(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 208.8 Q -F1(par)A(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .437 -(Case modi\214cation)144 220.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 +/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(,,)A F1 +(pattern)A F0(})A F2 .437(Case modi\214cation)144 96 R F0 5.437(.T)C +.437(his e)-5.437 F .438 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 232.8 Q -F0 1.407(is e)3.907 F 1.407 +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 108 Q F0 +1.407(is e)3.907 F 1.407 (xpanded to produce a pattern just as in pathname e)-.15 F 3.906 -(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 244.8 -S 1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 120 S +1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732 (,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 -256.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +132 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 (pattern should not attempt to match more than one character)2.924 F 5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F --.15(ve)144 268.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +-.15(ve)144 144 S .61(rts lo).15 F .61(wercase letters matching)-.25 F F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61 (operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F -1.548(letters to lo)144 280.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E -F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F +1.548(letters to lo)144 156 R 4.047(wercase. The)-.25 F F2(^^)4.047 E F0 +(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F -.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) --.15 E -.25(va)144 292.8 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 -E F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 +-.15 E -.25(va)144 168 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 E +F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 (ve)-.4 G .634(rt only the \214rst character in the e).15 F .634 -(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 304.8 Q F0 .78 +(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 180 Q F0 .78 (is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C .78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 (.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28 E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ -n is applied to each positional parameter in turn, and the e)144 316.8 R -(xpansion)-.15 E .469(is the resultant list.)144 328.8 R(If)5.469 E F1 +n is applied to each positional parameter in turn, and the e)144 192 R +(xpansion)-.15 E .469(is the resultant list.)144 204 R(If)5.469 E F1 (par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 (ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.968 E F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\ -ed to each member of the array in turn, and the e)144 340.8 Q -(xpansion is the resultant list.)-.15 E(${)108 357.6 Q F1(par)A(ameter) --.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 369.6 S .86 +ed to each member of the array in turn, and the e)144 216 Q +(xpansion is the resultant list.)-.15 E(${)108 232.8 Q F1(par)A(ameter) +-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 244.8 S .86 (rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86 (xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F -F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 381.6 R F1 +F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 256.8 R F1 (par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F .153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 -393.6 Q F2(Q)144 417.6 Q F0 1.064(The e)180 417.6 R 1.064 +268.8 Q F2(Q)144 292.8 Q F0 1.064(The e)180 292.8 R 1.064 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par) 3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F -(reused as input.)180 429.6 Q F2(E)144 441.6 Q F0 .441(The e)180 441.6 R +(reused as input.)180 304.8 Q F2(E)144 316.8 Q F0 .441(The e)180 316.8 R .441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F1 (par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F --.15(ex)180 453.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 -(quoting mechansim.)2.5 E F2(P)144 465.6 Q F0 1.072(The e)180 465.6 R +-.15(ex)180 328.8 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 +(quoting mechanism.)2.5 E F2(P)144 340.8 Q F0 1.072(The e)180 340.8 R 1.073(xpansion is a string that is the result of e)-.15 F 1.073 (xpanding the v)-.15 F 1.073(alue of)-.25 F F1(par)3.573 E(ameter)-.15 E -F0 1.073(as if it)3.573 F(were a prompt string \(see)180 477.6 Q F2(PR) -2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 489.6 Q F0 1.138 -(The e)180 489.6 R 1.138 +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 352.8 Q F2(PR) +2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 364.8 Q F0 1.138 +(The e)180 364.8 R 1.138 (xpansion is a string in the form of an assignment statement or)-.15 F -F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 501.6 Q +F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 376.8 Q -.25(va)-.25 G(luated, will recreate).25 E F1(par)2.5 E(ameter)-.15 E F0 -(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 513.6 Q F0 -(The e)180 513.6 Q(xpansion is a string consisting of \215ag v)-.15 E +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 388.8 Q F0 +(The e)180 388.8 Q(xpansion is a string consisting of \215ag v)-.15 E (alues representing)-.25 E F1(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D -(ttrib).55 E(utes.)-.2 E(If)144 530.4 Q F1(par)5.33 E(ameter)-.15 E F0 +(ttrib).55 E(utes.)-.2 E(If)144 405.6 Q F1(par)5.33 E(ameter)-.15 E F0 (is)4.81 E F2(@)4.08 E F0(or)4.08 E F2(*)4.08 E F0 4.08(,t)C 1.581 (he operation is applied to each positional parameter in turn, and the) --4.08 F -.15(ex)144 542.4 S .347(pansion is the resultant list.).15 F -(If)5.347 E F1(par)4.097 E(ameter)-.15 E F0 .346(is an array v)3.577 F -.346(ariable subscripted with)-.25 F F2(@)2.846 E F0(or)2.846 E F2(*) -2.846 E F0 2.846(,t)C .346(he case)-2.846 F 1.204(modi\214cation operat\ -ion is applied to each member of the array in turn, and the e)144 554.4 -R 1.204(xpansion is the)-.15 F(resultant list.)144 566.4 Q 1.85 -(The result of the e)144 590.4 R 1.849(xpansion is subject to w)-.15 F -1.849(ord splitting and pathname e)-.1 F 1.849(xpansion as described) --.15 F(belo)144 602.4 Q -.65(w.)-.25 G F2(Command Substitution)87 619.2 -Q F1 1.697(Command substitution)108 631.2 R F0(allo)4.197 E 1.697 -(ws the output of a command to replace the command name.)-.25 F 1.698 -(There are tw)6.698 F(o)-.1 E(forms:)108 643.2 Q F2($\()144 660 Q F1 -(command)A F2(\))1.666 E F0(or)108 672 Q F2<92>144 684 Q F1(command)A F2 -<92>A(Bash)108 700.8 Q F0 .089(performs the e)2.589 F .089 -(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.589 E F0 -.088(in a subshell en)2.589 F .088(vironment and replacing the command) +-4.08 F -.15(ex)144 417.6 S .13(pansion is the resultant list.).15 F(If) +5.13 E F1(par)3.88 E(ameter)-.15 E F0 .129(is an array v)3.36 F .129 +(ariable subscripted with)-.25 F F2(@)2.629 E F0(or)2.629 E F2(*)2.629 E +F0 2.629(,t)C .129(he oper)-2.629 F(-)-.2 E +(ation is applied to each member of the array in turn, and the e)144 +429.6 Q(xpansion is the resultant list.)-.15 E 1.849 +(The result of the e)144 453.6 R 1.849(xpansion is subject to w)-.15 F +1.849(ord splitting and pathname e)-.1 F 1.85(xpansion as described)-.15 +F(belo)144 465.6 Q -.65(w.)-.25 G F2(Command Substitution)87 482.4 Q F1 +1.698(Command substitution)108 494.4 R F0(allo)4.198 E 1.697 +(ws the output of a command to replace the command name.)-.25 F 1.697 +(There are tw)6.697 F(o)-.1 E(forms:)108 506.4 Q F2($\()144 523.2 Q F1 +(command)A F2(\))1.666 E F0(or)108 535.2 Q F2<92>144 547.2 Q F1(command) +A F2<92>A(Bash)108 564 Q F0 .088(performs the e)2.588 F .088 +(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.588 E F0 +.089(in a subshell en)2.589 F .089(vironment and replacing the command) -.4 F .41(substitution with the standard output of the command, with an) -108 712.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) --.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) -108 724.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F --.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) --.1 F .192(The command substitution)5.192 F F2($\(cat)2.691 E F1(\214le) -2.691 E F2(\))A F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(23) -192.055 E 0 Cg EP -%%Page: 24 24 +108 576 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)-.25 +F .41(Embedded ne)5.41 F(w-)-.25 E .191(lines are not deleted, b)108 588 +R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F -.15(ve) +-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.)-.1 F +.192(The command substitution)5.192 F F2($\(cat)2.692 E F1(\214le)2.692 +E F2(\))A F0(can be replaced by the equi)108 600 Q -.25(va)-.25 G +(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2 +(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ + used, backslash retains its literal meaning e)108 616.8 R(xcept)-.15 E +.314(when follo)108 628.8 R .314(wed by)-.25 F F2($)2.814 E F0(,)A F2 +<92>2.814 E F0 2.814(,o)C(r)-2.814 E F2(\\)2.814 E F0 5.314(.T)C .315(h\ +e \214rst backquote not preceded by a backslash terminates the command \ +sub-)-5.314 F 3.887(stitution. When)108 640.8 R 1.387(using the $\() +3.887 F F1(command).833 E F0 3.887(\)f)1.666 G 1.386 +(orm, all characters between the parentheses mak)-3.887 F 3.886(eu)-.1 G +3.886(pt)-3.886 G 1.386(he com-)-3.886 F +(mand; none are treated specially)108 652.8 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 669.6 R 2.494 -.8(To n)5.894 H +.894(est when using the backquoted form, escape the inner back-).8 F +(quotes with backslashes.)108 681.6 Q .422 +(If the substitution appears within double quotes, w)108 698.4 R .422 +(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 +F(on the results.)108 710.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 +E(24)193.45 E 0 Cg EP +%%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(can be replaced by the equi)108 84 Q -.25(va)-.25 G(lent b).25 E(ut f) --.2 E(aster)-.1 E/F1 10/Times-Bold@0 SF($\(<)2.5 E/F2 10/Times-Italic@0 -SF(\214le)2.5 E F1(\))A F0(.)A 1.724(When the old-style backquote form \ -of substitution is used, backslash retains its literal meaning e)108 -100.8 R(xcept)-.15 E .315(when follo)108 112.8 R .315(wed by)-.25 F F1 -($)2.815 E F0(,)A F1<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E -F0 5.315(.T)C .314(he \214rst backquote not preceded by a backslash ter\ -minates the command sub-)-5.315 F 3.886(stitution. When)108 124.8 R -1.386(using the $\()3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 -(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G -3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 136.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 153.6 R 2.494 -.8(To n)5.894 H -.894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 165.6 Q .422 -(If the substitution appears within double quotes, w)108 182.4 R .422 -(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 194.4 Q F1(Arithmetic Expansion)87 211.2 Q F0 -1.035(Arithmetic e)108 223.2 R 1.035(xpansion allo)-.15 F 1.035 -(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F -1.034(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 235.2 Q(xpansion is:)-.15 E F1($\(\() -144 252 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 268.8 Q -F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.905 F .166 -(ut a double quote inside the parentheses is not)-.2 F .231 -(treated specially)108 280.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Arithmetic Expansion)87 84 Q F0 1.034(Arithmetic e)108 96 R 1.034 +(xpansion allo)-.15 F 1.034(ws the e)-.25 F -.25(va)-.25 G 1.034 +(luation of an arithmetic e).25 F 1.035 +(xpression and the substitution of the result.)-.15 F +(The format for arithmetic e)108 108 Q(xpansion is:)-.15 E F1($\(\()144 +124.8 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A +F0(The)108 141.6 Q F2 -.2(ex)2.666 G(pr).2 E(ession)-.37 E F0 .165 +(is treated as if it were within double quotes, b)2.906 F .165 +(ut a double quote inside the parentheses is not)-.2 F .23 +(treated specially)108 153.6 R 5.23(.A)-.65 G .23(ll tok)-5.23 F .231 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) --.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 -(tution, and quote remo)108 292.8 R -.25(va)-.15 G 3.559(l. The).25 F -1.059(result is treated as the arithmetic e)3.559 F 1.06 -(xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F --.15(ex)108 304.8 S(pansions may be nested.).15 E 1.379(The e)108 321.6 +-.18 F .231(ariable e)-.25 F .231(xpansion, command substi-)-.15 F 1.06 +(tution, and quote remo)108 165.6 R -.25(va)-.15 G 3.56(l. The).25 F +1.059(result is treated as the arithmetic e)3.56 F 1.059 +(xpression to be e)-.15 F -.25(va)-.25 G 3.559(luated. Arithmetic).25 F +-.15(ex)108 177.6 S(pansions may be nested.).15 E 1.378(The e)108 194.4 R -.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) -.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 -(If)5.878 E F2 -.2(ex)108 333.6 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +(If)5.879 E F2 -.2(ex)108 206.4 S(pr).2 E(ession)-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f) -2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 350.4 Q -(ocess Substitution)-.18 E F2(Pr)108 362.4 Q .405(ocess substitution) +2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 223.2 Q +(ocess Substitution)-.18 E F2(Pr)108 235.2 Q .405(ocess substitution) -.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 (nput or output to be referred to using a \214lename.)-2.905 F .405 -(It tak)5.405 F .405(es the form)-.1 F(of)108 374.4 Q F1(<\()3.251 E F2 -(list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E -F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751 +(It tak)5.405 F .405(es the form)-.1 F(of)108 247.2 Q F1(<\()3.25 E F2 +(list)A F1(\)).833 E F0(or)3.25 E F1(>\()3.25 E F2(list)A F1(\)).833 E +F0 5.75(.T)C .751(he process)-5.75 F F2(list)3.251 E F0 .751 (is run asynchronously)3.251 F 3.251(,a)-.65 G .751 -(nd its input or output appears as a \214lename.)-3.251 F .147 -(This \214lename is passed as an ar)108 386.4 R .148 -(gument to the current command as the result of the e)-.18 F 2.648 -(xpansion. If)-.15 F(the)2.648 E F1(>\()2.648 E F2(list)A F1(\)).833 E -F0 .56(form is used, writing to the \214le will pro)108 398.4 R .56 +(nd its input or output appears as a \214lename.)-3.251 F .148 +(This \214lename is passed as an ar)108 259.2 R .148 +(gument to the current command as the result of the e)-.18 F 2.647 +(xpansion. If)-.15 F(the)2.647 E F1(>\()2.647 E F2(list)A F1(\)).833 E +F0 .559(form is used, writing to the \214le will pro)108 271.2 R .559 (vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G -(he)-3.059 E F1(<\()3.059 E F2(list)A F1(\)).833 E F0 .559 -(form is used, the \214le passed as an)3.059 F(ar)108 410.4 Q .308 +(he)-3.059 E F1(<\()3.06 E F2(list)A F1(\)).833 E F0 .56 +(form is used, the \214le passed as an)3.06 F(ar)108 283.2 Q .309 (gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 -5.308(.P)C .309(rocess substitution is supported on systems that sup-) --5.308 F(port named pipes \()108 422.4 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) +5.308(.P)C .308(rocess substitution is supported on systems that sup-) +-5.308 F(port named pipes \()108 295.2 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) -2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0 -(method of naming open \214les.)2.5 E .897(When a)108 439.2 R -.25(va) --.2 G .896(ilable, process substitution is performed simultaneously wit\ -h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 451.2 Q(xpansion.)-.15 E F1 --.75(Wo)87 468 S(rd Splitting).75 E F0 1.142 -(The shell scans the results of parameter e)108 480 R 1.143 -(xpansion, command substitution, and arithmetic e)-.15 F 1.143 -(xpansion that)-.15 F(did not occur within double quotes for)108 492 Q +(method of naming open \214les.)2.5 E .896(When a)108 312 R -.25(va)-.2 +G .896(ilable, process substitution is performed simultaneously with pa\ +rameter and v).25 F .897(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 324 Q(xpansion.)-.15 E F1 +-.75(Wo)87 340.8 S(rd Splitting).75 E F0 1.143 +(The shell scans the results of parameter e)108 352.8 R 1.142 +(xpansion, command substitution, and arithmetic e)-.15 F 1.142 +(xpansion that)-.15 F(did not occur within double quotes for)108 364.8 Q F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 508.8 R F3(IFS)2.563 E F0 .063 +(The shell treats each character of)108 381.6 R F3(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) -108 520.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F -.207(alue is e)-.25 F(xactly)-.15 E F1()2.708 E F0 -(,)A .837(the def)108 532.8 R .837(ault, then sequences of)-.1 F F1 -()3.337 E F0(,)A F1()3.337 E F0 3.337(,a)C(nd)-3.337 E F1 -()3.337 E F0 .836(at the be)3.336 F .836 -(ginning and end of the results of)-.15 F .345(the pre)108 544.8 R .345 +108 393.6 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +.207(alue is e)-.25 F(xactly)-.15 E F1()2.707 E F0 +(,)A .836(the def)108 405.6 R .836(ault, then sequences of)-.1 F F1 +()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 +()3.336 E F0 .837(at the be)3.336 F .837 +(ginning and end of the results of)-.15 F .346(the pre)108 417.6 R .345 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.237(to delimit w)108 556.8 R 3.737(ords. If)-.1 F F3(IFS)3.737 -E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 +-.15 E 1.236(to delimit w)108 429.6 R 3.736(ords. If)-.1 F F3(IFS)3.736 +E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 (ault, then sequences of the whitespace characters)-.1 F F1(space)108 -568.8 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506 -E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w) --.15 F .007(ord, as long as the whitespace charac-)-.1 F .921 -(ter is in the v)108 580.8 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) +441.6 Q F0(,)A F1(tab)2.507 E F0 2.507(,a)C(nd)-2.507 E F1(newline)2.507 +E F0 .007(are ignored at the be)2.507 F .006(ginning and end of the w) +-.15 F .006(ord, as long as the whitespace charac-)-.1 F .92 +(ter is in the v)108 453.6 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) 3.17 E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E -3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .92(that is not) -3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 592.8 -R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428 -(whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G -.428(equence of)-2.928 F F3(IFS)2.928 E F0 .429(whitespace charac-)2.679 -F(ters is also treated as a delimiter)108 604.8 Q 5(.I)-.55 G 2.5(ft)-5 -G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E -(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 621.6 R 1.927 -(guments \()-.18 F F1 .833("").833 G F0(or)3.594 E F1 .833<0808>5.26 G -F0 4.427(\)a)C 1.927 +3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .921 +(that is not)3.17 F F3(IFS)3.421 E F0(whitespace,)3.171 E .429 +(along with an)108 465.6 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 +E F0 .428(whitespace characters, delimits a \214eld.)2.678 F 2.928(As) +5.428 G .428(equence of)-2.928 F F3(IFS)2.928 E F0 .428 +(whitespace charac-)2.678 F(ters is also treated as a delimiter)108 +477.6 Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E +F0(is null, no w)2.25 E(ord splitting occurs.)-.1 E 1.927 +(Explicit null ar)108 494.4 R 1.927(guments \()-.18 F F1 .833("").833 G +F0(or)3.594 E F1 .833<0808>5.26 G F0 4.427(\)a)C 1.927 (re retained and passed to commands as empty strings.)-4.427 F(Unquoted) -6.927 E .484(implicit null ar)108 633.6 R .484 +6.927 E .485(implicit null ar)108 506.4 R .485 (guments, resulting from the e)-.18 F .484 -(xpansion of parameters that ha)-.15 F .785 -.15(ve n)-.2 H 2.985(ov).15 -G .485(alues, are remo)-3.235 F -.15(ve)-.15 G 2.985(d. If).15 F(a)2.985 -E 1.572(parameter with no v)108 645.6 R 1.572(alue is e)-.25 F 1.571 -(xpanded within double quotes, a null ar)-.15 F 1.571 -(gument results and is retained and)-.18 F .723 -(passed to a command as an empty string.)108 657.6 R .724 -(When a quoted null ar)5.724 F .724(gument appears as part of a w)-.18 F -.724(ord whose)-.1 F -.15(ex)108 669.6 S .176 +(xpansion of parameters that ha)-.15 F .784 -.15(ve n)-.2 H 2.984(ov).15 +G .484(alues, are remo)-3.234 F -.15(ve)-.15 G 2.984(d. If).15 F(a)2.984 +E 1.571(parameter with no v)108 518.4 R 1.571(alue is e)-.25 F 1.571 +(xpanded within double quotes, a null ar)-.15 F 1.572 +(gument results and is retained and)-.18 F .724 +(passed to a command as an empty string.)108 530.4 R .724 +(When a quoted null ar)5.724 F .723(gument appears as part of a w)-.18 F +.723(ord whose)-.1 F -.15(ex)108 542.4 S .175 (pansion is non-null, the null ar).15 F .176(gument is remo)-.18 F -.15 (ve)-.15 G 2.676(d. That).15 F .176(is, the w)2.676 F(ord)-.1 E/F5 10 -/Courier@0 SF -5.1672.676 F F0(becomes)2.675 E F52.675 -E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 -681.6 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 -698.4 Q(xpansion occurs, no splitting is performed.)-.15 E(GNU Bash 4.4) -72 768 Q(2016 August 26)142.895 E(24)192.055 E 0 Cg EP -%%Page: 25 25 +/Courier@0 SF -5.1672.676 F F0(becomes)2.676 E F52.676 +E F0 .176(after w)2.676 F .176(ord split-)-.1 F(ting and null ar)108 +554.4 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 +571.2 Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 +588 S(thname Expansion).1 E F0 .371(After w)108 600 R .371 +(ord splitting, unless the)-.1 F F12.871 E F0 .371 +(option has been set,)2.871 F F1(bash)2.871 E F0 .37(scans each w)2.87 F +.37(ord for the characters)-.1 F F1(*)2.87 E F0(,)A F1(?)2.87 E F0 2.87 +(,a)C(nd)-2.87 E F1([)2.87 E F0(.)A .677 +(If one of these characters appears, then the w)108 612 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E +F0 3.177(,a).24 G .678(nd replaced with an alphabeti-)-3.177 F .562 +(cally sorted list of \214lenames matching the pattern \(see)108 624 R +F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) +2.812 E 3.062(w\). If)-.25 F .561(no matching \214lenames)3.061 F .008 +(are found, and the shell option)108 636 R F1(nullglob)2.508 E F0 .008 +(is not enabled, the w)2.508 F .009(ord is left unchanged.)-.1 F .009 +(If the)5.009 F F1(nullglob)2.509 E F0 .009(option is)2.509 F .443 +(set, and no matches are found, the w)108 648 R .443(ord is remo)-.1 F +-.15(ve)-.15 G 2.943(d. If).15 F(the)2.942 E F1(failglob)2.942 E F0 .442 +(shell option is set, and no matches are)2.942 F 1.38 +(found, an error message is printed and the command is not e)108 660 R +-.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F F1 +(nocaseglob)3.88 E F0(is)3.88 E .104 +(enabled, the match is performed without re)108 672 R -.05(ga)-.15 G +.104(rd to the case of alphabetic characters.).05 F .103 +(When a pattern is used)5.103 F .377(for pathname e)108 684 R .377 +(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 +E F0 .378(at the start of a name or immediately follo)5.378 F .378 +(wing a slash must be)-.25 F 1.354(matched e)108 696 R(xplicitly)-.15 E +3.854(,u)-.65 G 1.354(nless the shell option)-3.854 F F1(dotglob)3.854 E +F0 1.354(is set.)3.854 F 1.354(The \214lenames)6.354 F F1 -.63(``)3.854 +G -.55(.').63 G(')-.08 E F0(and)6.354 E F1 -.63(``)3.853 G(..).63 E -.63 +('')-.55 G F0 1.353(must al)6.983 F -.1(wa)-.1 G 1.353(ys be).1 F .485 +(matched e)108 708 R(xplicitly)-.15 E 2.985(,e)-.65 G -.15(ve)-3.235 G +2.985(ni).15 G(f)-2.985 E F1(dotglob)2.985 E F0 .485(is set.)2.985 F +.485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08 +E F0 .486(character is not treated specially)5.485 F 5.486(.W)-.65 G +(hen)-5.486 E .115(matching a pathname, the slash character must al)108 +720 R -.1(wa)-.1 G .114(ys be matched e).1 F .114 +(xplicitly by a slash in the pattern, b)-.15 F .114(ut in)-.2 F +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(25)193.45 E 0 Cg EP +%%Page: 26 26 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(Pa)87 84 S(thname Expansion).1 E F0 .37(After w)108 96 R .37 -(ord splitting, unless the)-.1 F F12.87 E F0 .37 -(option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F -.371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0 -2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678 -(If one of these characters appears, then the w)108 108 R .677 -(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F2 10 -/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677 -(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 120 R -/F3 9/Times-Bold@0 SF -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G -(atching)-2.812 E F0(belo)2.812 E 3.062(w\). If)-.25 F .562 -(no matching \214lenames)3.062 F .009(are found, and the shell option) -108 132 R F1(nullglob)2.509 E F0 .008(is not enabled, the w)2.509 F .008 -(ord is left unchanged.)-.1 F .008(If the)5.008 F F1(nullglob)2.508 E F0 -.008(option is)2.508 F .442(set, and no matches are found, the w)108 144 -R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1 -(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943 -F 1.38(found, an error message is printed and the command is not e)108 -156 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F -F1(nocaseglob)3.88 E F0(is)3.88 E .103 -(enabled, the match is performed without re)108 168 R -.05(ga)-.15 G -.104(rd to the case of alphabetic characters.).05 F .104 -(When a pattern is used)5.104 F .378(for pathname e)108 180 R .378 -(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 -E F0 .378(at the start of a name or immediately follo)5.378 F .377 -(wing a slash must be)-.25 F .578(matched e)108 192 R(xplicitly)-.15 E -3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E -F0 .579(is set.)3.079 F .579 -(When matching a pathname, the slash character)5.579 F 1.789(must al)108 -204 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I) --.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288 -G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially) -6.788 F 6.788(.S)-.65 G 1.788(ee the)-6.788 F .165(description of)108 -216 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E F3 -.165(SHELL B)2.665 F(UIL)-.09 E .165(TIN COMMANDS)-.828 F F0 .166 -(for a description of the)2.415 F F1(nocaseglob)2.666 E F0(,)A F1(null-) -2.666 E(glob)108 228 Q F0(,)A F1(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F1 -(dotglob)2.5 E F0(shell options.)2.5 E(The)108 244.8 Q F3(GLOBIGNORE) -2.786 E F0 .286(shell v)2.536 F .285 -(ariable may be used to restrict the set of \214lenames matching a)-.25 -F F2(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E F3(GLO-)2.785 E -(BIGNORE)108 256.8 Q F0 2.316(is set, each matching \214lename that als\ -o matches one of the patterns in)4.565 F F3(GLOBIGNORE)4.816 E F0(is) -4.566 E(remo)108 268.8 Q -.15(ve)-.15 G 3.915(df).15 G 1.415 -(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1(nocaseglob) -3.915 E F0 1.415(option is set, the matching ag)3.915 F 1.414 -(ainst the patterns in)-.05 F F3(GLOBIGNORE)108 280.8 Q F0 .146 -(is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F -.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E -F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147 -(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F3(GLOBIGNORE)108 -292.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 -(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F3(GLOBIGNORE)3.327 E F0 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .581 +(other matching conte)108 84 R .581 +(xts it can be matched by a special pattern character as described belo) +-.15 F 3.081(wu)-.25 G(nder)-3.081 E/F1 9/Times-Bold@0 SF -.09(Pa)3.081 +G(tter).09 E(n)-.135 E(Matching)108 96 Q/F2 9/Times-Roman@0 SF(.)A F0 +.073(See the description of)4.573 F/F3 10/Times-Bold@0 SF(shopt)2.573 E +F0(belo)2.573 E 2.573(wu)-.25 G(nder)-2.573 E F1 .072(SHELL B)2.572 F +(UIL)-.09 E .072(TIN COMMANDS)-.828 F F0 .072(for a description of the) +2.322 F F3(nocaseglob)108 108 Q F0(,)A F3(nullglob)2.5 E F0(,)A F3 +(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F3(dotglob)2.5 E F0 +(shell options.)2.5 E(The)108 124.8 Q F1(GLOBIGNORE)2.63 E F0 .13 +(shell v)2.38 F .131 +(ariable may be used to restrict the set of \214le names matching a)-.25 +F/F4 10/Times-Italic@0 SF(pattern)2.631 E F0 5.131(.I).24 G(f)-5.131 E +F1(GLO-)2.631 E(BIGNORE)108 136.8 Q F0 2.015(is set, each matching \214\ +le name that also matches one of the patterns in)4.265 F F1(GLOBIGNORE) +4.515 E F0(is)4.264 E(remo)108 148.8 Q -.15(ve)-.15 G 3.914(df).15 G +1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F3 +(nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F +1.415(ainst the patterns in)-.05 F F1(GLOBIGNORE)108 160.8 Q F0 .147 +(is performed without re)2.397 F -.05(ga)-.15 G .147(rd to case.).05 F +.146(The \214lenames)5.146 F F3 -.63(``)2.646 G -.55(.').63 G(')-.08 E +F0(and)5.146 E F3 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 +(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F1(GLOBIGNORE)108 +172.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 +(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 .827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of) --.25 F .682(enabling the)108 304.8 R F1(dotglob)3.182 E F0 .682 -(shell option, so all other \214lenames be)3.182 F .682(ginning with a) --.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 316.8 Q -1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F -F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) --.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 -(one of the patterns in)6.184 F F3(GLOBIGNORE)3.684 E/F4 9/Times-Roman@0 -SF(.)A F0(The)108 328.8 Q F1(dotglob)3.131 E F0 .631 -(option is disabled when)3.131 F F3(GLOBIGNORE)3.132 E F0 .632 -(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632 -F(the)108 340.8 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 -357.6 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 374.4 Q 3.138 -(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ -ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H -(atches).65 E 3.62(itself. The)108 386.4 R 1.12 -(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12 -(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576 -(escaping backslash is discarded when matching.)108 398.4 R .576 +-.25 F .683(enabling the)108 184.8 R F3(dotglob)3.183 E F0 .682 +(shell option, so all other \214lenames be)3.183 F .682(ginning with a) +-.15 F F3 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 196.8 Q +1.184(vior of ignoring \214lenames be)-.2 F 1.184(ginning with a)-.15 F +F3 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) +-.1 E F3 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.185 +(one of the patterns in)6.185 F F1(GLOBIGNORE)3.685 E F2(.)A F0(The)108 +208.8 Q F3(dotglob)3.132 E F0 .632(option is disabled when)3.132 F F1 +(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .631 +(The pattern matching honors the setting of)5.632 F(the)108 220.8 Q F3 +(extglob)2.5 E F0(shell option.)2.5 E F3 -.1(Pa)108 237.6 S(tter).1 E +2.5(nM)-.15 G(atching)-2.5 E F0(An)108 254.4 Q 3.138(yc)-.15 G .638(har\ +acter that appears in a pattern, other than the special pattern charact\ +ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62 +(itself. The)108 266.4 R 1.12(NUL character may not occur in a pattern.) +3.62 F 3.62(Ab)6.12 G 1.12(ackslash escapes the follo)-3.62 F 1.12 +(wing character; the)-.25 F .576 +(escaping backslash is discarded when matching.)108 278.4 R .576 (The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 410.4 Q(.)-.65 E -(The special pattern characters ha)108 427.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 444 Q F0 .376(Matches an) -180 444 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876 -F .376(When the)5.376 F F1(globstar)2.876 E F0 .377 -(shell option is enabled,)2.876 F(and)180 456 Q F1(*)3.275 E F0 .775 +-.15 G(re)-3.076 E(to be matched literally)108 290.4 Q(.)-.65 E +(The special pattern characters ha)108 307.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F3(*)144 324 Q F0 .377(Matches an) +180 324 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 +F .376(When the)5.376 F F3(globstar)2.876 E F0 .376 +(shell option is enabled,)2.876 F(and)180 336 Q F3(*)3.275 E F0 .775 (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 +-.15 F 3.275(oa)-.1 G(djacent)-3.275 E F3(*)3.275 E F0 3.275(su)C .775 (sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ - or more directories and subdirectories.)180 468 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 480 Q 2.5(oa)-.1 G -(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 492 Q F0 -(Matches an)180 492 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 -([...])144 504 Q F0 .579(Matches an)180 504 R 3.079(yo)-.15 G .579 -(ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 -(air of characters separated by a h)-3.079 F(yphen)-.05 E .684 -(denotes a)180 516 R F2 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) + or more directories and subdirectories.)180 348 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F3(/)3.558 E F0(,)A(tw)180 360 Q 2.5(oa)-.1 G +(djacent)-2.5 E F3(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F3(?)144 372 Q F0 +(Matches an)180 372 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F3 +([...])144 384 Q F0 .578(Matches an)180 384 R 3.078(yo)-.15 G .578 +(ne of the enclosed characters.)-3.078 F 3.079(Ap)5.579 G .579 +(air of characters separated by a h)-3.079 F(yphen)-.05 E .685 +(denotes a)180 396 R F4 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 -(haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G -.685(haracters, inclu-)-3.185 F(si)180 528 Q -.15(ve)-.25 G 3.713(,u).15 -G 1.213(sing the current locale')-3.713 F 3.712(sc)-.55 G 1.212 -(ollating sequence and character set, is matched.)-3.712 F 1.212(If the) -6.212 F 1.123(\214rst character follo)180 540 R 1.123(wing the)-.25 F F1 -([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1 -(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G 1.124 -(haracter not enclosed is matched.)-3.624 F .895 -(The sorting order of characters in range e)180 552 R .894 -(xpressions is determined by the current locale)-.15 F .375(and the v) -180 564 R .375(alues of the)-.25 F F3(LC_COLLA)2.875 E(TE)-.855 E F0(or) -2.625 E F3(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 -(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 -F .068(ditional interpretation of range e)180 576 R .068 -(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F --.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 -(et v)-2.567 F(alue)-.25 E .156(of the)180 588 R F1(LC_ALL)2.656 E F0 -.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(\ +(haracter that f).15 F .684(alls between those tw)-.1 F 3.184(oc)-.1 G +.684(haracters, inclu-)-3.184 F(si)180 408 Q -.15(ve)-.25 G 3.712(,u).15 +G 1.212(sing the current locale')-3.712 F 3.712(sc)-.55 G 1.212 +(ollating sequence and character set, is matched.)-3.712 F 1.213(If the) +6.213 F 1.124(\214rst character follo)180 420 R 1.124(wing the)-.25 F F3 +([)3.624 E F0 1.124(is a)3.624 F F3(!)3.624 E F0 1.124(or a)6.124 F F3 +(^)3.623 E F0 1.123(then an)3.623 F 3.623(yc)-.15 G 1.123 +(haracter not enclosed is matched.)-3.623 F .894 +(The sorting order of characters in range e)180 432 R .895 +(xpressions is determined by the current locale)-.15 F .376(and the v) +180 444 R .376(alues of the)-.25 F F1(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F1(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +(ariables, if set.)-.25 F 1.975 -.8(To o)5.375 H .375(btain the tra-).8 +F .067(ditional interpretation of range e)180 456 R .067 +(xpressions, where)-.15 F F3([a\255d])2.567 E F0 .068(is equi)2.568 F +-.25(va)-.25 G .068(lent to).25 F F3([abcd])2.568 E F0 2.568(,s)C .068 +(et v)-2.568 F(alue)-.25 E .157(of the)180 468 R F3(LC_ALL)2.657 E F0 +.157(shell v)2.657 F .157(ariable to)-.25 F F3(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F3(globasciiranges)2.657 E F0 +.156(shell option.)2.656 F(A)5.156 E F32.656 E F0(may)2.656 E .193(\ be matched by including it as the \214rst or last character in the set.) -180 600 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 612 Q -.4(Wi)180 -630 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F2 -.15(ch) -3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F2(class)A F1 -(:])A F0 3.071(,w)C(here)-3.071 E F2(class)3.071 E F0 -(is one of the follo)180 642 Q -(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 654 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 666 R 5(ord xdigit)-.1 F F0 -4.289(Ac)180 678 S 1.789(haracter class matches an)-4.289 F 4.289(yc) --.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 --.1(wo)4.29 G(rd).1 E F0(character)4.29 E -(class matches letters, digits, and the character _.)180 690 Q -.4(Wi) -180 708 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 -(,a)C(n)-4.537 E F2 2.037(equivalence class)4.537 F F0 2.036 -(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F2(c)A F1(=]) -A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 720 R -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(25)192.055 E 0 Cg EP -%%Page: 26 26 +180 480 R(A)5.193 E F3(])2.693 E F0 .194(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 492 Q -.4(Wi)180 +510 S(thin).4 E F3([)3.071 E F0(and)3.071 E F3(])3.071 E F0(,)A F4 -.15 +(ch)3.071 G(ar).15 E .571(acter classes)-.15 F F0 .571 +(can be speci\214ed using the syntax)3.071 F F3([:)3.07 E F4(class)A F3 +(:])A F0 3.07(,w)C(here)-3.07 E F4(class)3.07 E F0(is one of the follo) +180 522 Q(wing classes de\214ned in the POSIX standard:)-.25 E F3 8.173 +(alnum alpha ascii blank cntrl digit graph lo)180 534 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 546 R 5(ord xdigit)-.1 F F0 +4.29(Ac)180 558 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 +G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F3 -.1 +(wo)4.289 G(rd).1 E F0(character)4.289 E +(class matches letters, digits, and the character _.)180 570 Q -.4(Wi) +180 588 S(thin).4 E F3([)4.536 E F0(and)4.536 E F3(])4.536 E F0 4.536 +(,a)C(n)-4.536 E F4 2.036(equivalence class)4.536 F F0 2.037 +(can be speci\214ed using the syntax)4.536 F F3([=)4.537 E F4(c)A F3(=]) +A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ + collation weight \(as de\214ned by the current locale\) as)180 600 R +(the character)180 612 Q F4(c)2.5 E F0(.)A -.4(Wi)180 630 S(thin).4 E F3 +([)2.5 E F0(and)2.5 E F3(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F3([.)2.5 +E F4(symbol)A F3(.])A F0(matches the collating symbol)2.5 E F4(symbol) +2.5 E F0(.)A .704(If the)108 646.8 R F3(extglob)3.204 E F0 .705 +(shell option is enabled using the)3.204 F F3(shopt)3.205 E F0 -.2(bu) +3.205 G .705(iltin, se).2 F -.15(ve)-.25 G .705(ral e).15 F .705 +(xtended pattern matching operators)-.15 F .256(are recognized.)108 +658.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F4 +(pattern-list)2.755 E F0 .255 +(is a list of one or more patterns separated by a)2.755 F F3(|)2.755 E +F0(.)A(Composite patterns may be formed using one or more of the follo) +108 670.8 Q(wing sub-patterns:)-.25 E F3(?\()144 694.8 Q F4 +(pattern-list).833 E F3(\)).833 E F0 +(Matches zero or one occurrence of the gi)180 706.8 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E +(26)193.45 E 0 Cg EP +%%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(the character)180 -84 Q/F1 10/Times-Italic@0 SF(c)2.5 E F0(.)A -.4(Wi)180 102 S(thin).4 E -/F2 10/Times-Bold@0 SF([)2.5 E F0(and)2.5 E F2(])2.5 E F0 2.5(,t)C -(he syntax)-2.5 E F2([.)2.5 E F1(symbol)A F2(.])A F0 -(matches the collating symbol)2.5 E F1(symbol)2.5 E F0(.)A .705(If the) -108 118.8 R F2(extglob)3.205 E F0 .705 -(shell option is enabled using the)3.205 F F2(shopt)3.205 E F0 -.2(bu) -3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 -(xtended pattern matching operators)-.15 F .255(are recognized.)108 -130.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F1 -(pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F2(|)2.756 E -F0(.)A(Composite patterns may be formed using one or more of the follo) -108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1 -(pattern-list).833 E F2(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2 -(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1 -(pattern-list).833 E F2(\)).833 E F0 -(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2 -(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np) -.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\)) -.833 E F0(Matches an)180 274.8 Q(ything e)-.15 E(xcept one of the gi) --.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(Quote Remo)87 291.6 -Q -.1(va)-.1 G(l).1 E F0 1.113(After the preceding e)108 303.6 R 1.113 -(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\) -3.613 E F0(,)A F2<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F2(")4.445 E F0 -1.112(that did not result)4.445 F(from one of the abo)108 315.6 Q .3 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(*\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E +F0(Matches zero or more occurrences of the gi)180 96 Q -.15(ve)-.25 G +2.5(np).15 G(atterns)-2.5 E F1(+\()144 108 Q F2(pattern-list).833 E F1 +(\)).833 E F0(Matches one or more occurrences of the gi)180 120 Q -.15 +(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 132 Q F2(pattern-list) +.833 E F1(\)).833 E F0(Matches one of the gi)180 144 Q -.15(ve)-.25 G +2.5(np).15 G(atterns)-2.5 E F1(!\()144 156 Q F2(pattern-list).833 E F1 +(\)).833 E F0(Matches an)180 168 Q(ything e)-.15 E(xcept one of the gi) +-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E .968(Complicated e)108 +184.8 R .968(xtended pattern matching ag)-.15 F .968 +(ainst long strings is slo)-.05 F 2.269 -.65(w, e)-.25 H .969 +(specially when the patterns contain).65 F 1.23 +(alternations and the strings contain multiple matches.)108 196.8 R 1.23 +(Using separate matches ag)6.23 F 1.23(ainst shorter strings, or)-.05 F +(using arrays of strings instead of a single long string, may be f)108 +208.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 225.6 Q -.1(va)-.1 G(l).1 +E F0 1.112(After the preceding e)108 237.6 R 1.112 +(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) +3.613 E F0(,)A F1<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F1(")4.446 E F0 +1.113(that did not result)4.446 F(from one of the abo)108 249.6 Q .3 -.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 -10.95/Times-Bold@0 SF(REDIRECTION)72 332.4 Q F0 .545 -(Before a command is e)108 344.4 R -.15(xe)-.15 G .545 -(cuted, its input and output may be).15 F F1 -.37(re)3.045 G(dir).37 E +10.95/Times-Bold@0 SF(REDIRECTION)72 266.4 Q F0 .545 +(Before a command is e)108 278.4 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E (ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 -(by the shell.)108 356.4 R .405(Redirection allo)5.405 F .405(ws comman\ +(by the shell.)108 290.4 R .405(Redirection allo)5.405 F .405(ws comman\ ds' \214le handles to be duplicated, opened, closed, made to refer to) --.25 F(dif)108 368.4 Q 1.019(ferent \214les, and can change the \214les\ - the command reads from and writes to.)-.25 F 1.02 -(Redirection may also be)6.02 F .215 -(used to modify \214le handles in the current shell e)108 380.4 R -.15 +-.25 F(dif)108 302.4 Q 1.02(ferent \214les, and can change the \214les \ +the command reads from and writes to.)-.25 F 1.019 +(Redirection may also be)6.019 F .215 +(used to modify \214le handles in the current shell e)108 314.4 R -.15 (xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E -.215(wing redirection operators)-.25 F .875(may precede or appear an)108 -392.4 R .875(ywhere within a)-.15 F F1 .875(simple command)3.715 F F0 -.875(or may follo)4.145 F 3.376(wa)-.25 G F1(command)A F0 5.876(.R).77 G -.876(edirections are)-5.876 F(processed in the order the)108 404.4 Q 2.5 +.215(wing redirection operators)-.25 F .876(may precede or appear an)108 +326.4 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +.875(or may follo)4.145 F 3.375(wa)-.25 G F2(command)A F0 5.875(.R).77 G +.875(edirections are)-5.875 F(processed in the order the)108 338.4 Q 2.5 (ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ h redirection that may be preceded by a \214le descriptor number may in\ -stead be preceded by a w)108 421.2 R .771(ord of)-.1 F .292(the form {) -108 433.2 R F1(varname)A F0 2.793(}. In)B .293 +stead be preceded by a w)108 355.2 R .772(ord of)-.1 F .293(the form {) +108 367.2 R F2(varname)A F0 2.793(}. In)B .293 (this case, for each redirection operator e)2.793 F .293 -(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 445.2 S -.679(le descriptor greater than or equal to 10 and assign it to)-3.18 F -F1(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F1(var)A(-)-.2 E(name)108 457.2 Q -F0(}, the v)A(alue of)-.25 E F1(varname)2.5 E F0 -(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108 -474 R .284(wing descriptions, if the \214le descriptor number is omitte\ -d, and the \214rst character of the redirect-)-.25 F .513 -(ion operator is)108 486 R F2(<)3.012 E F0 3.012(,t)C .512 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 379.2 +S .679(le descriptor greater than or equal to 10 and assign it to)-3.179 +F F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 391.2 Q +F0 .6(}, the v)B .6(alue of)-.25 F F2(varname)3.1 E F0 .599 +(de\214nes the \214le descriptor to close.)3.1 F .599(If {)5.599 F F2 +(varname)A F0 3.099(}i)C 3.099(ss)-3.099 G .599 +(upplied, the redirection)-3.099 F 1.238(persists be)108 403.2 R 1.238 +(yond the scope of the command, allo)-.15 F 1.238 +(wing the shell programmer to manage the \214le descriptor)-.25 F +(himself.)108 415.2 Q .284(In the follo)108 432 R .283(wing description\ +s, if the \214le descriptor number is omitted, and the \214rst characte\ +r of the redirect-)-.25 F .512(ion operator is)108 444 R F1(<)3.012 E F0 +3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 498 Q F2(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 456 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .824(The w)108 514.8 R .824(ord follo)-.1 F .824 -(wing the redirection operator in the follo)-.25 F .825 -(wing descriptions, unless otherwise noted, is sub-)-.25 F .463 -(jected to brace e)108 526.8 R .463(xpansion, tilde e)-.15 F .462 -(xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 -(xpansion, command substitution, arith-)-.15 F .866(metic e)108 538.8 R -.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F +-2.5 E .825(The w)108 472.8 R .825(ord follo)-.1 F .824 +(wing the redirection operator in the follo)-.25 F .824 +(wing descriptions, unless otherwise noted, is sub-)-.25 F .462 +(jected to brace e)108 484.8 R .462(xpansion, tilde e)-.15 F .463 +(xpansion, parameter and v)-.15 F .463(ariable e)-.25 F .463 +(xpansion, command substitution, arith-)-.15 F .867(metic e)108 496.8 R +.867(xpansion, quote remo)-.15 F -.25(va)-.15 G .867(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .867(xpands to more than one)-.15 F -.1(wo)108 550.8 S(rd,).1 E F2 +F .866(xpands to more than one)-.15 F -.1(wo)108 508.8 S(rd,).1 E F1 (bash)2.5 E F0(reports an error)2.5 E(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 567.6 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 584.4 Q F2(>)2.5 -E F0(dirlist 2)2.5 E F2(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 601.2 -Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 618 -Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 634.8 R F1(dirlist)3.027 +(Note that the order of redirections is signi\214cant.)108 525.6 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 542.4 Q F1(>)2.5 +E F0(dirlist 2)2.5 E F1(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 559.2 +Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 576 +Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 +(directs only the standard output to \214le)108 592.8 R F2(dirlist)3.027 E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 (as duplicated from the standard)-.1 F -(output before the standard output w)108 646.8 Q(as redirected to)-.1 E -F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 663.6 Q F0 .598(handles se)3.098 -F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya) --.15 G .599(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E 3.478(table. If)108 675.6 R .978 -(the operating system on which)3.478 F F2(bash)3.478 E F0 .978 -(is running pro)3.478 F .977 +(output before the standard output w)108 604.8 Q(as redirected to)-.1 E +F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 621.6 Q F0 .599(handles se)3.099 +F -.15(ve)-.25 G .599(ral \214lenames specially when the).15 F 3.099(ya) +-.15 G .598(re used in redirections, as described in the follo)-3.099 F +(wing)-.25 E 3.477(table. If)108 633.6 R .977 +(the operating system on which)3.477 F F1(bash)3.478 E F0 .978 +(is running pro)3.478 F .978 (vides these special \214les, bash will use them;)-.15 F -(otherwise it will emulate them internally with the beha)108 687.6 Q -(vior described belo)-.2 E -.65(w.)-.25 G F2(/de)144 704.4 Q(v/fd/)-.15 -E F1(fd)A F0(If)180 716.4 Q F1(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E -(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F1(fd)2.5 E F0 -(is duplicated.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(26) -192.055 E 0 Cg EP -%%Page: 27 27 +(otherwise it will emulate them internally with the beha)108 645.6 Q +(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 662.4 Q(v/fd/)-.15 +E F2(fd)A F0(If)180 674.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E +(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0 +(is duplicated.)2.5 E F1(/de)144 686.4 Q(v/stdin)-.15 E F0 +(File descriptor 0 is duplicated.)180 698.4 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(27)193.45 E 0 Cg EP +%%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(/de)144 84 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 -96 Q F1(/de)144 108 Q(v/stdout)-.15 E F0 -(File descriptor 1 is duplicated.)180 120 Q F1(/de)144 132 Q(v/stderr) --.15 E F0(File descriptor 2 is duplicated.)180 144 Q F1(/de)144 156 Q -(v/tcp/)-.15 E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 -168 Q F2(host)2.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 180 Q F1(bash)2.5 E F0 -(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 -192 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 204 Q F2(host) -2.997 E F0 .497(is a v)2.997 F .497 +SF(/de)144 84 Q(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 +96 Q F1(/de)144 108 Q(v/stderr)-.15 E F0 +(File descriptor 2 is duplicated.)180 120 Q F1(/de)144 132 Q(v/tcp/)-.15 +E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 144 Q F2 +(host)2.997 E F0 .497(is a v)2.997 F .497 (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 216 Q F1(bash)2.5 E F0 +(vice name,)180 156 Q F1(bash)2.5 E F0 +(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 +168 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 180 Q F2(host) +2.996 E F0 .496(is a v)2.996 F .496 +(alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 +(is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E +(vice name,)180 192 Q F1(bash)2.5 E F0 (attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 -232.8 S(ailure to open or create a \214le causes the redirection to f) --2.6 E(ail.)-.1 E .946(Redirections using \214le descriptors greater th\ -an 9 should be used with care, as the)108 249.6 R 3.447(ym)-.15 G .947 -(ay con\215ict with \214le)-3.447 F -(descriptors the shell uses internally)108 261.6 Q(.)-.65 E F1(Redir)87 -278.4 Q(ecting Input)-.18 E F0 .391 +208.8 S(ailure to open or create a \214le causes the redirection to f) +-2.6 E(ail.)-.1 E .947(Redirections using \214le descriptors greater th\ +an 9 should be used with care, as the)108 225.6 R 3.446(ym)-.15 G .946 +(ay con\215ict with \214le)-3.446 F +(descriptors the shell uses internally)108 237.6 Q(.)-.65 E F1(Redir)87 +254.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 290.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 -(to be opened for read-)3.661 F(ing on \214le descriptor)108 302.4 Q F2 +108 266.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 278.4 Q F2 (n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G (he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 319.2 Q([)144 336 Q F2 -(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 352.8 Q(ecting Output) --.18 E F0 .174 +(The general format for redirecting input is:)108 295.2 Q([)144 312 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 328.8 Q(ecting Output) +-.18 E F0 .175 (Redirection of output causes the \214le whose name results from the e) -108 364.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 .825(ing on \214le descriptor)108 376.8 -R F2(n)3.325 E F0 3.325(,o).24 G 3.325(rt)-3.325 G .824 -(he standard output \(\214le descriptor 1\) if)-3.325 F F2(n)3.684 E F0 -.824(is not speci\214ed.)3.564 F .824(If the \214le does not)5.824 F --.15(ex)108 388.8 S(ist it is created; if it does e).15 E +108 340.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 +(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 352.8 +R F2(n)3.324 E F0 3.324(,o).24 G 3.324(rt)-3.324 G .824 +(he standard output \(\214le descriptor 1\) if)-3.324 F F2(n)3.684 E F0 +.824(is not speci\214ed.)3.564 F .825(If the \214le does not)5.825 F +-.15(ex)108 364.8 S(ist it is created; if it does e).15 E (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 405.6 Q([)144 422.4 Q -F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 -(If the redirection operator is)108 439.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 451.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 463.2 R F1(>|)2.909 E F0 2.909(,o)C +(The general format for redirecting output is:)108 381.6 Q([)144 398.4 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 +(If the redirection operator is)108 415.2 R F1(>)2.655 E F0 2.655(,a)C +.155(nd the)-2.655 F F1(noclob)2.655 E(ber)-.1 E F0 .154(option to the) +2.654 F F1(set)2.654 E F0 -.2(bu)2.654 G .154 +(iltin has been enabled, the redirection).2 F .657(will f)108 427.2 R +.657(ail if the \214le whose name results from the e)-.1 F .658 +(xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .658 +(ists and is a re).15 F .658(gular \214le.)-.15 F .658(If the redi-) +5.658 F .409(rection operator is)108 439.2 R F1(>|)2.909 E F0 2.909(,o)C 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 +(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.908 G .408 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -475.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +451.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 -492 S(pending Redir).25 E(ected Output)-.18 E F0 .642 -(Redirection of output in this f)108 504 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 .473 -(opened for appending on \214le descriptor)108 516 R F2(n)2.973 E F0 +468 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 480 R .642 +(ashion causes the \214le whose name results from the e)-.1 F .642 +(xpansion of)-.15 F F2(wor)3.482 E(d)-.37 E F0 .642(to be)3.912 F .474 +(opened for appending on \214le descriptor)108 492 R F2(n)2.974 E F0 2.974(,o).24 G 2.974(rt)-2.974 G .474 -(he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.334 E F0 -.474(is not speci\214ed.)3.214 F(If)5.474 E(the \214le does not e)108 -528 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 544.8 Q([)144 561.6 Q -F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 578.4 Q -(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 -(This construct allo)108 590.4 R .249(ws both the standard output \(\ +(he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0 +.473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 +504 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 520.8 Q([)144 537.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 554.4 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .248 +(This construct allo)108 566.4 R .249(ws both the standard output \(\ \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 -602.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(There are tw)108 619.2 Q 2.5(of)-.1 G +578.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 595.2 Q 2.5(of)-.1 G (ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 636 Q F2(wor)A(d)-.37 E F0(and)108 648 Q F1(>&)144 660 Q F2(wor) -A(d)-.37 E F0(Of the tw)108 676.8 Q 2.5(of)-.1 G +(&>)144 612 Q F2(wor)A(d)-.37 E F0(and)108 624 Q F1(>&)144 636 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 652.8 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F1(>)144 693.6 Q F2(wor)A(d)-.37 E F0(2)2.5 -E F1(>&)A F0(1)A .114(When using the second form,)108 710.4 R F2(wor) +-.25(va)-.25 G(lent to).25 E F1(>)144 669.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .115(When using the second form,)108 686.4 R F2(wor) 2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) --.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G -.115(oes, other redirection operators)-2.615 F(apply \(see)108 722.4 Q +-.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.614(td)-2.614 G +.114(oes, other redirection operators)-2.614 F(apply \(see)108 698.4 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E -(w\) for compatibility reasons.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(27)192.055 E 0 Cg EP -%%Page: 28 28 +(w\) for compatibility reasons.)-.25 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(28)193.45 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 -.25(Ap)87 84 S(pending Standard Output and Standard Err).25 E(or) --.18 E F0 .249(This construct allo)108 96 R .249(ws both the standard o\ +-.18 E F0 .248(This construct allo)108 96 R .249(ws both the standard o\ utput \(\214le descriptor 1\) and the standard error output \(\214le de\ scrip-)-.25 F(tor 2\) to be appended to the \214le whose name is the e) 108 108 Q(xpansion of)-.15 E/F2 10/Times-Italic@0 SF(wor)2.5 E(d)-.37 E @@ -3615,31 +3707,31 @@ F0(.).77 E 192 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E F1 (Her)87 208.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redir\ ection instructs the shell to read input from the current source until \ -a line containing only)108 220.8 R F2(delimiter)108.35 232.8 Q F0 .615 -(\(with no trailing blanks\) is seen.)3.845 F .615 +a line containing only)108 220.8 R F2(delimiter)108.35 232.8 Q F0 .614 +(\(with no trailing blanks\) is seen.)3.844 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 244.8 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 261.6 Q([)144 278.4 Q F2(n)A F0(]) A F1(<<)A F0([)A F1A F0(])A F2(wor)A(d)-.37 E(her)164 290.4 Q -(e-document)-.37 E(delimiter)144 302.4 Q F0 .301(No parameter and v)108 +(e-document)-.37 E(delimiter)144 302.4 Q F0 .302(No parameter and v)108 319.2 R .302(ariable e)-.25 F .302 -(xpansion, command substitution, arithmetic e)-.15 F .302 +(xpansion, command substitution, arithmetic e)-.15 F .301 (xpansion, or pathname e)-.15 F(xpansion)-.15 E .415(is performed on)108 331.2 R F2(wor)2.915 E(d)-.37 E F0 5.415(.I).77 G 2.915(fa)-5.415 G .715 -.15(ny p)-2.915 H .415(art of).15 F F2(wor)3.255 E(d)-.37 E F0 .415 (is quoted, the)3.685 F F2(delimiter)3.265 E F0 .415 (is the result of quote remo)3.645 F -.25(va)-.15 G 2.915(lo).25 G(n) --2.915 E F2(wor)2.915 E(d)-.37 E F0(,).77 E .773 +-2.915 E F2(wor)2.915 E(d)-.37 E F0(,).77 E .774 (and the lines in the here-document are not e)108 343.2 R 3.274 -(xpanded. If)-.15 F F2(wor)3.274 E(d)-.37 E F0 .774 -(is unquoted, all lines of the here-document)3.274 F 2.59 +(xpanded. If)-.15 F F2(wor)3.273 E(d)-.37 E F0 .773 +(is unquoted, all lines of the here-document)3.273 F 2.59 (are subjected to parameter e)108 355.2 R 2.59 (xpansion, command substitution, and arithmetic e)-.15 F 2.59 (xpansion, the character)-.15 F(sequence)108 367.2 Q F1(\\)2.5 E F0(is ignored, and)2.5 E F1(\\)2.5 E F0 (must be used to quote the characters)2.5 E F1(\\)2.5 E F0(,)A F1($)2.5 -E F0 2.5(,a)C(nd)-2.5 E F1<92>2.5 E F0(.)A .601 +E F0 2.5(,a)C(nd)-2.5 E F1<92>2.5 E F0(.)A .602 (If the redirection operator is)108 384 R F1(<<\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 396 Q F2(delimiter)2.5 E F0 5(.T).73 G @@ -3648,49 +3740,47 @@ C .601(hen all leading tab characters are stripped from input lines and\ -.25 E(ashion.)-.1 E F1(Her)87 412.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 2.5(Av)108 424.8 S(ariant of here documents, the format is:)-2.75 E([) 144 441.6 Q F2(n)A F0(])A F1(<<<)A F2(wor)A(d)-.37 E F0(The)108 458.4 Q -F2(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393 -(xpansion, tilde e)-.15 F .393(xpansion, parameter and v)-.15 F .393 -(ariable e)-.25 F .393(xpansion, command substi-)-.15 F 2.147 -(tution, arithmetic e)108 470.4 R 2.147(xpansion, and quote remo)-.15 F --.25(va)-.15 G 4.648(l. P).25 F 2.148(athname e)-.15 F 2.148 -(xpansion and w)-.15 F 2.148(ord splitting are not per)-.1 F(-)-.2 E -2.813(formed. The)108 482.4 R .313 -(result is supplied as a single string, with a ne)2.813 F .312 -(wline appended, to the command on its standard)-.25 F -(input \(or \214le descriptor)108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n) -2.5 E F0(is speci\214ed\).)2.5 E F1(Duplicating File Descriptors)87 -511.2 Q F0(The redirection operator)108 523.2 Q([)144 540 Q F2(n)A F0(]) -A F1(<&)A F2(wor)A(d)-.37 E F0 .126 +F2(wor)3.291 E(d)-.37 E F0(under)3.291 E .792(goes tilde e)-.18 F .792 +(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .792 +(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 470.4 S +1.188(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.187(The result is)6.187 F .374 +(supplied as a single string, with a ne)108 482.4 R .375(wline appended\ +, to the command on its standard input \(or \214le descrip-)-.25 F(tor) +108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n)2.5 E F0(is speci\214ed\).)2.5 E +F1(Duplicating File Descriptors)87 511.2 Q F0(The redirection operator) +108 523.2 Q([)144 540 Q F2(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .127 (is used to duplicate input \214le descriptors.)108 556.8 R(If)5.127 E -F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 +F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .126 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108 -568.8 Q F2(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 F2(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 580.8 R(If)5.149 E F2(wor) -2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F12.649 E -F0 2.65<2c8c>C .15(le descriptor)-2.65 F F2(n)3.01 E F0 .15(is closed.) -2.89 F(If)5.15 E F2(n)3.01 E F0 .15(is not speci\214ed,)2.89 F -(the standard input \(\214le descriptor 0\) is used.)108 592.8 Q +568.8 Q F2(n)3.317 E F0 .457(is made to be a cop)3.197 F 2.957(yo)-.1 G +2.957(ft)-2.957 G .457(hat \214le descriptor)-2.957 F 5.457(.I)-.55 G +2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.298 E(d)-.37 E F0 +.458(do not specify a \214le descriptor open)3.728 F .15 +(for input, a redirection error occurs.)108 580.8 R(If)5.15 E F2(wor) +2.99 E(d)-.37 E F0 -.25(eva)3.42 G .15(luates to).25 F F12.65 E F0 +2.649<2c8c>C .149(le descriptor)-2.649 F F2(n)3.009 E F0 .149 +(is closed.)2.889 F(If)5.149 E F2(n)3.009 E F0 .149(is not speci\214ed,) +2.889 F(the standard input \(\214le descriptor 0\) is used.)108 592.8 Q (The operator)108 609.6 Q([)144 626.4 Q F2(n)A F0(])A F1(>&)A F2(wor)A -(d)-.37 E F0 .444 +(d)-.37 E F0 .443 (is used similarly to duplicate output \214le descriptors.)108 643.2 R -(If)5.444 E F2(n)3.304 E F0 .443 -(is not speci\214ed, the standard output \(\214le descrip-)3.183 F 1.357 -(tor 1\) is used.)108 655.2 R 1.357(If the digits in)6.357 F F2(wor) -4.197 E(d)-.37 E F0 1.358(do not specify a \214le descriptor open for o\ -utput, a redirection error)4.627 F 2.754(occurs. If)108 667.2 R F2(wor) -3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(luates to).25 F F12.754 E +(If)5.443 E F2(n)3.304 E F0 .444 +(is not speci\214ed, the standard output \(\214le descrip-)3.184 F 1.358 +(tor 1\) is used.)108 655.2 R 1.358(If the digits in)6.358 F F2(wor) +4.198 E(d)-.37 E F0 1.357(do not specify a \214le descriptor open for o\ +utput, a redirection error)4.628 F 2.753(occurs. If)108 667.2 R F2(wor) +3.093 E(d)-.37 E F0 -.25(eva)3.523 G .253(luates to).25 F F12.754 E F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 (is closed.)2.994 F .254(As a special case, if)5.254 F F2(n)2.754 E F0 -.253(is omitted, and)2.754 F F2(wor)2.753 E(d)-.37 E F0(does)2.753 E -.965(not e)108 679.2 R .965(xpand to one or more digits or)-.15 F F1 -3.465 E F0 3.466(,t)C .966 +.254(is omitted, and)2.754 F F2(wor)2.754 E(d)-.37 E F0(does)2.754 E +.966(not e)108 679.2 R .966(xpand to one or more digits or)-.15 F F1 +3.466 E F0 3.466(,t)C .965 (he standard output and standard error are redirected as described) --3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(28)192.055 E 0 Cg EP -%%Page: 29 29 +-3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(29)193.45 E 0 Cg EP +%%Page: 30 30 %%BeginPageSetup BP %%EndPageSetup @@ -3698,19 +3788,19 @@ BP (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.036(st).15 G .536 -(he \214le descriptor)-3.036 F F2(digit)3.036 E F0 .536 -(to \214le descriptor)3.036 F F2(n)3.036 E F0 3.036(,o).24 G 3.036(rt) --3.036 G .535(he standard input \(\214le descriptor 0\) if)-3.036 F F2 -(n)3.035 E F0 .535(is not speci-)3.035 F(\214ed.)108 141.6 Q F2(digit)5 +(digit)A F1A F0(mo)108 129.6 Q -.15(ve)-.15 G 3.035(st).15 G .535 +(he \214le descriptor)-3.035 F F2(digit)3.035 E F0 .535 +(to \214le descriptor)3.035 F F2(n)3.035 E F0 3.035(,o).24 G 3.035(rt) +-3.035 G .536(he standard input \(\214le descriptor 0\) if)-3.035 F F2 +(n)3.036 E F0 .536(is not speci-)3.036 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.785(st).15 G .285(he \214le descriptor)-2.785 F F2 -(digit)2.785 E F0 .285(to \214le descriptor)2.785 F F2(n)2.785 E F0 -2.785(,o).24 G 2.785(rt)-2.785 G .286 -(he standard output \(\214le descriptor 1\) if)-2.785 F F2(n)2.786 E F0 -.286(is not speci-)2.786 F(\214ed.)108 204 Q F1 +-.15(ve)-.15 G 2.786(st).15 G .286(he \214le descriptor)-2.786 F F2 +(digit)2.786 E F0 .286(to \214le descriptor)2.786 F F2(n)2.786 E F0 +2.786(,o).24 G 2.786(rt)-2.786 G .285 +(he standard output \(\214le descriptor 1\) if)-2.786 F F2(n)2.785 E F0 +.285(is not speci-)2.785 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 1.349(causes the \214le whose name is the e)108 @@ -3719,36 +3809,36 @@ A F2(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 108 278.4 Q F2(n)2.5 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 +/Times-Bold@0 SF(ALIASES)72 295.2 Q F2(Aliases)108 307.2 Q F0(allo)3.174 +E 3.174(was)-.25 G .674(tring to be substituted for a w)-3.174 F .674 +(ord when it is used as the \214rst w)-.1 F .673 (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 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 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 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 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 .542(to recursi)108 403.2 R --.15(ve)-.25 G .542(ly e).15 F .542(xpand the replacement te)-.15 F -3.042(xt. If)-.15 F .543(the last character of the alias v)3.042 F .543 -(alue is a)-.25 F F2(blank)3.043 E F0 3.043(,t).67 G .543(hen the ne) --3.043 F(xt)-.15 E(command w)108 415.2 Q(ord follo)-.1 E +ses that may be set and unset with the)108 319.2 R F1(alias)2.894 E F0 +(and)2.894 E F1(unalias)2.894 E F0 -.2(bu)2.894 G .394(iltin commands).2 +F(\(see)108 331.2 Q/F4 9/Times-Bold@0 SF 1.98(SHELL B)4.48 F(UIL)-.09 E +1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E 4.48(w\). The)-.25 F 1.98 +(\214rst w)4.48 F 1.979(ord of each simple command, if unquoted, is)-.1 +F(check)108 343.2 Q .472(ed to see if it has an alias.)-.1 F .472 +(If so, that w)5.472 F .473(ord is replaced by the te)-.1 F .473 +(xt of the alias.)-.15 F .473(The characters)5.473 F F1(/)2.973 E F0(,)A +F1($)2.973 E F0(,)A F1<92>2.973 E F0(,)A(and)108 355.2 Q F1(=)3.612 E F0 +1.112(and an)3.612 F 3.612(yo)-.15 G 3.612(ft)-3.612 G 1.112(he shell) +-3.612 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.411 -.15(ve m)-.15 H 1.111 +(ay not appear in an alias).15 F 3.619(name. The)108 367.2 R 1.119 +(replacement te)3.619 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.12 +(The \214rst)6.12 F -.1(wo)108 379.2 S .514(rd of the replacement te).1 +F .514(xt is tested for aliases, b)-.15 F .514(ut a w)-.2 F .513 +(ord that is identical to an alias being e)-.1 F .513(xpanded is)-.15 F +.295(not e)108 391.2 R .295(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.295 F F1(ls)2.796 E F0(to)2.796 E F1 +.296(ls \255F)2.796 F F0 2.796(,f)C .296(or instance, and)-2.796 F F1 +(bash)2.796 E F0 .296(does not try)2.796 F .543(to recursi)108 403.2 R +-.15(ve)-.25 G .543(ly e).15 F .543(xpand the replacement te)-.15 F +3.043(xt. If)-.15 F .543(the last character of the alias v)3.043 F .542 +(alue is a)-.25 F F2(blank)3.042 E F0 3.042(,t).67 G .542(hen the ne) +-3.042 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 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 @@ -3763,59 +3853,59 @@ E(Aliases are created and listed with the)108 432 Q F1(alias)2.5 E F0 (shell option is set)3.72 F(using)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 +E .435 (The rules concerning the de\214nition and use of aliases are some)108 -506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 -(wa)-.1 G .435(ys reads at least).1 F .337 +506.4 R .436(what confusing.)-.25 F F1(Bash)5.436 E F0(al)2.936 E -.1 +(wa)-.1 G .436(ys reads at least).1 F .338 (one complete line of input before e)108 518.4 R -.15(xe)-.15 G .338 (cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338 -(he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338 -(xpanded when)-.15 F 3.404(ac)108 530.4 S .904 -(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 +(he commands on that line.)-2.838 F .337(Aliases are e)5.337 F .337 +(xpanded when)-.15 F 3.403(ac)108 530.4 S .904 +(ommand is read, not when it is e)-3.403 F -.15(xe)-.15 G 3.404 (cuted. Therefore,).15 F .904 -(an alias de\214nition appearing on the same line as)3.404 F 1.161 +(an alias de\214nition appearing on the same line as)3.404 F 1.162 (another command does not tak)108 542.4 R 3.662(ee)-.1 G -.25(ff)-3.662 G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F -1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 +1.161(The commands follo)6.161 F 1.161(wing the)-.25 F .277 (alias de\214nition on that line are not af)108 554.4 R .277 (fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha) -2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108 -566.4 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F +2.777 E .277(vior is also an issue when functions)-.2 F .699(are e)108 +566.4 R -.15(xe)-.15 G 3.199(cuted. Aliases).15 F .699(are e)3.199 F .699(xpanded when a function de\214nition is read, not when the functio\ -n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .613 -(because a function de\214nition is itself a command.)108 578.4 R .612 +n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .612 +(because a function de\214nition is itself a command.)108 578.4 R .613 (As a consequence, aliases de\214ned in a function are not)5.612 F -.2 -(av)108 590.4 S .058(ailable until after that function is e)-.05 F -.15 +(av)108 590.4 S .059(ailable until after that function is e)-.05 F -.15 (xe)-.15 G 2.558(cuted. T).15 F 2.558(ob)-.8 G 2.558(es)-2.558 G .058 -(afe, al)-2.558 F -.1(wa)-.1 G .059 +(afe, al)-2.558 F -.1(wa)-.1 G .058 (ys put alias de\214nitions on a separate line, and).1 F(do not use)108 602.4 Q F1(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 619.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G (ry purpose, aliases are superseded by shell functions.).15 E F3 -(FUNCTIONS)72 636 Q F0 3.468(As)108 648 S .968 -(hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15 +(FUNCTIONS)72 636 Q F0 3.467(As)108 648 S .967 +(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15 H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 -.967(stores a series of commands for)3.217 F 1.001(later e)108 660 R --.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ -ion is used as a simple command name, the list of com-)3.501 F .316 +.968(stores a series of commands for)3.217 F 1.002(later e)108 660 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 672 R -.15(xe)-.15 G -2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315 -(cuted in the conte).15 F .315(xt of the current)-.15 F .035 -(shell; no ne)108 684 R 2.535(wp)-.25 G .036 -(rocess is created to interpret them \(contrast this with the e)-2.535 F --.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036 -F .64(function is e)108 696 R -.15(xe)-.15 G .64(cuted, the ar).15 F +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 684 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 696 R -.15(xe)-.15 G .639(cuted, the ar).15 F .639 (guments to the function become the positional parameters during its e) --.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 708 R -F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 -(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F -.533(The \214rst ele-)5.533 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME) +-.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 708 R +F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 +(Special parameter)5.532 F F1(0)3.032 E F0 .532(is unchanged.)3.032 F +.532(The \214rst ele-)5.532 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME) -.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E --.15(xe)-.15 G(cuting.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(29)192.055 E 0 Cg EP -%%Page: 30 30 +-.15(xe)-.15 G(cuting.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 +E(30)193.45 E 0 Cg EP +%%Page: 31 31 %%BeginPageSetup BP %%EndPageSetup @@ -3824,5518 +3914,5716 @@ BP (All other aspects of the shell e)108 84 R -.15(xe)-.15 G 1.25 (cution en).15 F 1.25 (vironment are identical between a function and its caller with)-.4 F -1.214(these e)108 96 R 1.214(xceptions: the)-.15 F/F1 9/Times-Bold@0 SF -(DEB)3.714 E(UG)-.09 E F0(and)3.464 E/F2 10/Times-Bold@0 SF(RETURN)3.715 -E F0 1.215(traps \(see the description of the)3.715 F F2(trap)3.715 E F0 --.2(bu)3.715 G 1.215(iltin under).2 F F1(SHELL)3.715 E -.09(BU)108 108 S -(IL).09 E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 +1.215(these e)108 96 R 1.215(xceptions: the)-.15 F/F1 9/Times-Bold@0 SF +(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 108 S +(IL).09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve) --.25 G 2.978(nt).15 G(he)-2.978 E F2(trace)2.978 E F0(attrib)2.978 E -.478(ute \(see)-.2 F .42(the description of the)108 120 R F1(declar)2.92 -E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F -F2 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F2(set)2.921 E F0 -.2(bu) -108 132 S .072(iltin \(in which case all functions inherit the).2 F F2 +-.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E +.479(ute \(see)-.2 F .421(the description of the)108 120 R F1(declar) +2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) +-.25 F F2 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu) +108 132 S .071(iltin \(in which case all functions inherit the).2 F F2 (DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072 -(traps\), and the)2.572 F F1(ERR)2.571 E F0 .071(trap is not inher)2.321 +(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 144 Q F2(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 160.8 S .655 +(shell option has been enabled.)2.5 E -1.11(Va)108 160.8 S .656 (riables local to the function may be declared with the)1.11 F F2(local) -3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E -3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 172.8 Q -(alues are shared between the function and its caller)-.25 E(.)-.55 E -(The)108 189.6 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 -(riable, if set to a numeric v).25 F 1.028 +3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E +3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 172.8 R .05 +(alues are shared between the function and its caller)-.25 F 5.051(.I) +-.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F2(local) +2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G +(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\ +hildren \(including the functions it calls\).)108 184.8 R 1.185(Local v) +6.185 F(ariables)-.25 E("shado)108 196.8 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 +208.8 R .669(ariable of the same name: references and assignments refer\ + to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 220.8 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 232.8 Q .727 +(The shell uses)108 249.6 R/F3 10/Times-Italic@0 SF .727 +(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F(ariable')-.25 E +3.226(sv)-.55 G .726(isibility within functions.)-3.226 F -.4(Wi)5.726 G +.726(th dynamic scoping,).4 F .007(visible v)108 261.6 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 273.6 R .813(The v)5.814 F .813(alue of a v)-.25 F .813 +(ariable that a function sees depends on its v)-.25 F .813 +(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 285.6 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 297.6 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 +314.4 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 326.4 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 338.4 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A +(The)108 355.2 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 367.2 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 379.2 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 391.2 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 403.2 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 415.2 Q +(wed will become visible.)-.25 E(The)108 432 Q F2(FUNCNEST)3.528 E F0 +-.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -201.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +444 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E .043(If the b)108 218.4 R .043(uiltin command)-.2 F F2 -.18(re) +-.15 E .044(If the b)108 460.8 R .043(uiltin command)-.2 F F2 -.18(re) 2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 (cuted in a function, the function completes and e).15 F -.15(xe)-.15 G -.044(cution resumes with).15 F 1.012(the ne)108 230.4 R 1.012 +.043(cution resumes with).15 F 1.011(the ne)108 472.8 R 1.011 (xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G -1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011 -(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 242.4 R --.15(xe)-.15 G .213(cution resumes.).15 F .213 -(When a function completes, the v)5.213 F .214 +1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012 +(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 484.8 R +-.15(xe)-.15 G .214(cution resumes.).15 F .213 +(When a function completes, the v)5.214 F .213 (alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 254.4 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +108 496.8 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) --2.65 G(cution.).15 E 1.359 -(Function names and de\214nitions may be listed with the)108 271.2 R F2 +-2.65 G(cution.).15 E 1.358 +(Function names and de\214nitions may be listed with the)108 513.6 R F2 3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E -F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F -3.39(mands. The)108 283.2 R F23.39 E F0 .89(option to)3.39 F F2 +F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F +3.39(mands. The)108 525.6 R F23.39 E F0 .89(option to)3.39 F F2 (declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89 (will list the function names only \(and optionally the source)3.39 F -.327(\214le and line number)108 295.2 R 2.827(,i)-.4 G 2.827(ft)-2.827 G -(he)-2.827 E F2(extdeb)2.827 E(ug)-.2 E F0 .326 -(shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326 -(xported so that subshells)-.15 F 1.297(automatically ha)108 307.2 R -1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F23.797 E -F0 1.297(option to the)3.797 F F2(export)3.798 E F0 -.2(bu)3.798 G 3.798 -(iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161 -(deleted using the)108 319.2 R F22.661 E F0 .161(option to the) -2.661 F F2(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 -(that shell functions and v)2.661 F .16(ariables with the same name)-.25 -F 1.325(may result in multiple identically-named entries in the en)108 -331.2 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 -(hildren. Care)-3.825 F(should be tak)108 343.2 Q -(en in cases where this may cause a problem.)-.1 E .372 -(Functions may be recursi)108 360 R -.15(ve)-.25 G 5.371(.T).15 G(he) --5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 +.326(\214le and line number)108 537.6 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 549.6 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 561.6 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 578.4 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 +E F0 -.25(va)2.871 G .371 (riable may be used to limit the depth of the function call).25 F 1.141 -(stack and restrict the number of function in)108 372 R -.2(vo)-.4 G +(stack and restrict the number of function in)108 590.4 R -.2(vo)-.4 G 3.641(cations. By).2 F(def)3.641 E 1.141 -(ault, no limit is imposed on the number of)-.1 F(recursi)108 384 Q .3 --.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 -400.8 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 -(The shell allo)108 412.8 R 2.297(ws arithmetic e)-.25 F 2.297 +(ault, no limit is imposed on the number of)-.1 F(recursi)108 602.4 Q .3 +-.15(ve c)-.25 H(alls.).15 E/F4 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 +619.2 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.297 +(The shell allo)108 631.2 R 2.297(ws arithmetic e)-.25 F 2.297 (xpressions to be e)-.15 F -.25(va)-.25 G 2.297 -(luated, under certain circumstances \(see the).25 F F2(let)4.797 E F0 -(and)4.797 E F2(declar)108 424.8 Q(e)-.18 E F0 -.2(bu)2.683 G .183 +(luated, under certain circumstances \(see the).25 F F2(let)4.798 E F0 +(and)4.798 E F2(declar)108 643.2 Q(e)-.18 E F0 -.2(bu)2.684 G .183 (iltin commands, the).2 F F2(\(\()2.683 E F0 .183(compound command, and) 2.683 F F2 .183(Arithmetic Expansion)2.683 F F0 2.683(\). Ev)B .183 -(aluation is done in)-.25 F<8c78>108 436.8 Q 1.058(ed-width inte)-.15 F +(aluation is done in)-.25 F<8c78>108 655.2 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 .828 -(The operators and their precedence, associati)108 448.8 R(vity)-.25 E +(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829 +(The operators and their precedence, associati)108 667.2 R(vity)-.25 E 3.329(,a)-.65 G .829(nd v)-3.329 F .829 -(alues are the same as in the C language.)-.25 F .829(The fol-)5.829 F -(lo)108 460.8 Q .44(wing list of operators is grouped into le)-.25 F --.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .439(The le) -5.439 F -.15(ve)-.25 G .439(ls are listed in order).15 F -(of decreasing precedence.)108 472.8 Q/F4 10/Times-Italic@0 SF(id)108 -489.6 Q F2(++)A F4(id)2.5 E F2A F0 -.25(va)144 501.6 S -(riable post-increment and post-decrement).25 E F2(++)108 513.6 Q F4(id) -A F22.5 E F4(id)A F0 -.25(va)144 525.6 S -(riable pre-increment and pre-decrement).25 E F2 2.5108 537.6 S F0 -(unary minus and plus)144 537.6 Q F2 2.5(!~)108 549.6 S F0 -(logical and bitwise ne)144 549.6 Q -.05(ga)-.15 G(tion).05 E F2(**)108 -561.6 Q F0 -.15(ex)144 561.6 S(ponentiation).15 E F2 2.5(*/%)108 573.6 S -F0(multiplication, di)144 573.6 Q(vision, remainder)-.25 E F2 2.5<2bad> -108 585.6 S F0(addition, subtraction)144 585.6 Q F2(<< >>)108 597.6 Q F0 -(left and right bitwise shifts)144 597.6 Q F2(<= >= < >)108 609.6 Q F0 -(comparison)144 621.6 Q F2(== !=)108 633.6 Q F0(equality and inequality) -144 633.6 Q F2(&)108 645.6 Q F0(bitwise AND)144 645.6 Q F2(^)108 657.6 Q -F0(bitwise e)144 657.6 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) -108 669.6 Q F0(bitwise OR)144 669.6 Q F2(&&)108 681.6 Q F0(logical AND) -144 681.6 Q F2(||)108 693.6 Q F0(logical OR)144 693.6 Q F4 -.2(ex)108 -705.6 S(pr).2 E F2(?)A F4 -.2(ex)C(pr).2 E F2(:)A F4 -.2(ex)C(pr).2 E F0 -(conditional operator)144 717.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(30)192.055 E 0 Cg EP -%%Page: 31 31 +(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F +(lo)108 679.2 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 691.2 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(31)193.45 E 0 Cg EP +%%Page: 32 32 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF 2.5(=*)108 84 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad> --2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 96 Q/F2 10 -/Times-Italic@0 SF -.2(ex)108 108 S(pr1).2 E F1(,)2.5 E F2 -.2(ex)2.5 G -(pr2).2 E F0(comma)144 120 Q .68(Shell v)108 136.8 R .68 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(id)108 84 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E F2 +A F0 -.25(va)144 96 S(riable post-increment and post-decrement).25 +E F2(++)108 108 Q F1(id)A F22.5 E F1(id)A F0 -.25(va)144 120 S +(riable pre-increment and pre-decrement).25 E F2 2.5108 132 S F0 +(unary minus and plus)144 132 Q F2 2.5(!~)108 144 S F0 +(logical and bitwise ne)144 144 Q -.05(ga)-.15 G(tion).05 E F2(**)108 +156 Q F0 -.15(ex)144 156 S(ponentiation).15 E F2 2.5(*/%)108 168 S F0 +(multiplication, di)144 168 Q(vision, remainder)-.25 E F2 2.5<2bad>108 +180 S F0(addition, subtraction)144 180 Q F2(<< >>)108 192 Q F0 +(left and right bitwise shifts)144 192 Q F2(<= >= < >)108 204 Q F0 +(comparison)144 216 Q F2(== !=)108 228 Q F0(equality and inequality)144 +228 Q F2(&)108 240 Q F0(bitwise AND)144 240 Q F2(^)108 252 Q F0 +(bitwise e)144 252 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108 +264 Q F0(bitwise OR)144 264 Q F2(&&)108 276 Q F0(logical AND)144 276 Q +F2(||)108 288 Q F0(logical OR)144 288 Q F1 -.2(ex)108 300 S(pr).2 E F2 +(?)A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0 +(conditional operator)144 312 Q F2 2.5(=*)108 324 S 2.5(=/)-2.5 G 2.5 +(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=) +-2.5 E F0(assignment)144 336 Q F1 -.2(ex)108 348 S(pr1).2 E F2(,)2.5 E +F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 360 Q .68(Shell v)108 376.8 R .68 (ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68 (xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.508(ated. W)108 148.8 R 1.008(ithin an e)-.4 -F 1.008(xpression, shell v)-.15 F 1.007 +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 388.8 R 1.007(ithin an e)-.4 +F 1.007(xpression, shell v)-.15 F 1.007 (ariables may also be referenced by name without using the parameter) --.25 F -.15(ex)108 160.8 S 1.04(pansion syntax.).15 F 3.54(As)6.04 G -1.04(hell v)-3.54 F 1.04(ariable that is null or unset e)-.25 F -.25(va) --.25 G 1.041(luates to 0 when referenced by name without).25 F 1.467 -(using the parameter e)108 172.8 R 1.467(xpansion syntax.)-.15 F 1.467 -(The v)6.467 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 -(va)-.25 G 1.466(luated as an arithmetic e).25 F(xpression)-.15 E 1.389 -(when it is referenced, or when a v)108 184.8 R 1.389 -(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 -E F2(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2 -F F1(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333 -(assigned a v)108 196.8 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332 -(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G -.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 -H(ts).15 E F2(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332 -(ute turned on)-.2 F(to be used in an e)108 208.8 Q(xpression.)-.15 E -1.406(Constants with a leading 0 are interpreted as octal numbers.)108 -225.6 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F -(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 237.6 R 2.613(et)-.1 -G .113(he form [)-2.613 F F2(base#)A F0 .112(]n, where the optional)B F2 -(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 -(representing the arithmetic base, and)108 249.6 R F2(n)3.033 E F0 .533 -(is a number in that base.)3.033 F(If)5.534 E F2(base#)3.034 E F0 .534 -(is omitted, then base 10 is used.)3.034 F .513(When specifying)108 -261.6 R F2(n)3.013 E F0 3.013(,t)C .513 -(he digits greater than 9 are represented by the lo)-3.013 F .512 -(wercase letters, the uppercase letters,)-.25 F .942 -(@, and _, in that order)108 273.6 R 5.942(.I)-.55 G(f)-5.942 E F2(base) -3.442 E F0 .942(is less than or equal to 36, lo)3.442 F .943 +-.25 F -.15(ex)108 400.8 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G +1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25 +(va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466 +(using the parameter e)108 412.8 R 1.466(xpansion syntax.)-.15 F 1.467 +(The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 +(va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.258 +(when it is referenced, or when a v)108 424.8 R 1.258 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.758(nt).15 G(he) +-3.758 E F1(inte)3.758 E -.1(ge)-.4 G(r).1 E F0(attrib)3.758 E 1.257 +(ute using)-.2 F F2(declar)3.757 E 3.757<65ad>-.18 G(i)-3.757 E F0(is) +3.757 E .332(assigned a v)108 436.8 R 2.832(alue. A)-.25 F .332(null v) +2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832 +(As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 +-.15(ve i)-.2 H(ts).15 E F1(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib) +2.832 E .333(ute turned on)-.2 F(to be used in an e)108 448.8 Q +(xpression.)-.15 E 1.406 +(Constants with a leading 0 are interpreted as octal numbers.)108 465.6 +R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) +-.15 E .112(Otherwise, numbers tak)108 477.6 R 2.612(et)-.1 G .112 +(he form [)-2.612 F F1(base#)A F0 .112(]n, where the optional)B F1(base) +2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534 +(representing the arithmetic base, and)108 489.6 R F1(n)3.034 E F0 .534 +(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533 +(is omitted, then base 10 is used.)3.033 F .512(When specifying)108 +501.6 R F1(n)3.012 E F0 3.012(,t)C .512 +(he digits greater than 9 are represented by the lo)-3.012 F .513 +(wercase letters, the uppercase letters,)-.25 F .943 +(@, and _, in that order)108 513.6 R 5.943(.I)-.55 G(f)-5.943 E F1(base) +3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942 (wercase and uppercase letters may be used)-.25 F -(interchangeably to represent numbers between 10 and 35.)108 285.6 Q -.235(Operators are e)108 302.4 R -.25(va)-.25 G .235 +(interchangeably to represent numbers between 10 and 35.)108 525.6 Q +.234(Operators are e)108 542.4 R -.25(va)-.25 G .234 (luated in order of precedence.).25 F(Sub-e)5.234 E .234 -(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234 -(luated \214rst and may).25 F -.15(ove)108 314.4 S +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235 +(luated \214rst and may).25 F -.15(ove)108 554.4 S (rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 -/Times-Bold@0 SF(CONDITION)72 331.2 Q(AL EXPRESSIONS)-.219 E F0 .255 -(Conditional e)108 343.2 R .255(xpressions are used by the)-.15 F F1([[) -2.755 E F0 .255(compound command and the)2.755 F F1(test)2.755 E F0(and) -2.755 E F1([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F -.77(\214le attrib)108 355.2 R .77 +/Times-Bold@0 SF(CONDITION)72 571.2 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 583.2 R .256(xpressions are used by the)-.15 F F2([[) +2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and) +2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F +.77(\214le attrib)108 595.2 R .77 (utes and perform string and arithmetic comparisons.)-.2 F .77 (Expressions are formed from the follo)5.77 F(wing)-.25 E .426 -(unary or binary primaries.)108 367.2 R F1(Bash)5.426 E F0 .426 +(unary or binary primaries.)108 607.2 R F2(Bash)5.426 E F0 .426 (handles se)2.926 F -.15(ve)-.25 G .426 (ral \214lenames specially when the).15 F 2.926(ya)-.15 G .426 (re used in e)-2.926 F 2.926(xpressions. If)-.15 F .193 -(the operating system on which)108 379.2 R F1(bash)2.693 E F0 .193 +(the operating system on which)108 619.2 R F2(bash)2.693 E F0 .193 (is running pro)2.693 F .193 (vides these special \214les, bash will use them; otherwise it)-.15 F -.589(will emulate them internally with this beha)108 391.2 R .589 -(vior: If an)-.2 F(y)-.15 E F2(\214le)3.089 E F0(ar)3.089 E .589 -(gument to one of the primaries is of the form)-.18 F F2(/de)108 403.2 Q -(v/fd/n)-.15 E F0 2.917(,t)C .417(hen \214le descriptor)-2.917 F F2(n) -2.917 E F0 .417(is check)2.917 F 2.917(ed. If)-.1 F(the)2.917 E F2 +.589(will emulate them internally with this beha)108 631.2 R .589 +(vior: If an)-.2 F(y)-.15 E F1(\214le)3.089 E F0(ar)3.089 E .589 +(gument to one of the primaries is of the form)-.18 F F1(/de)108 643.2 Q +(v/fd/n)-.15 E F0 2.916(,t)C .416(hen \214le descriptor)-2.916 F F1(n) +2.917 E F0 .417(is check)2.917 F 2.917(ed. If)-.1 F(the)2.917 E F1 (\214le)2.917 E F0(ar)2.917 E .417 -(gument to one of the primaries is one of)-.18 F F2(/de)2.916 E(v/stdin) --.15 E F0(,)A F2(/de)108 415.2 Q(v/stdout)-.15 E F0 2.5(,o)C(r)-2.5 E F2 +(gument to one of the primaries is one of)-.18 F F1(/de)2.917 E(v/stdin) +-.15 E F0(,)A F1(/de)108 655.2 Q(v/stdout)-.15 E F0 2.5(,o)C(r)-2.5 E F1 (/de)2.5 E(v/stderr)-.15 E F0 2.5<2c8c>C (le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5 -(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 +(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722 (Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 432 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) --3.221 F(get)-.18 E(of the link, rather than the link itself.)108 444 Q -1.096(When used with)108 462 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 E -F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le) -3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 -E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 -474 Q F1108 498 Q F2(\214le)2.5 E F0 -.35(Tr)144 498 S(ue if).35 E -F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 510 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 510 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a block special \214le.).15 E F1108 522 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 522 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a character special \214le.).15 E F1108 534 -Q F2(\214le)2.5 E F0 -.35(Tr)144 534 S(ue if).35 E F2(\214le)2.5 E F0 --.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1108 546 Q -F2(\214le)2.5 E F0 -.35(Tr)144 546 S(ue if).35 E F2(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists.).15 E F1108 558 Q F2(\214le)2.5 E F0 -.35(Tr)144 -558 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 -E(gular \214le.)-.15 E F1108 570 Q F2(\214le)2.5 E F0 -.35(Tr)144 -570 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is set-group-id.).15 E F1108 582 Q F2(\214le)2.5 E F0 --.35(Tr)144 582 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 594 Q F2(\214le)2.5 E F0 --.35(Tr)144 594 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +108 672 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 684 Q +1.095(When used with)108 702 R F2([[)3.595 E F0 3.595(,t)C(he)-3.595 E +F2(<)3.595 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) +3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.096 +E F2(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 +714 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(32)193.45 E 0 Cg EP +%%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-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.).15 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 a block special \214le.).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 a character special \214le.).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 a directory).15 E(.)-.65 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.).15 E F1108 144 Q F2(\214le)2.5 E F0 -.35(Tr) +144 144 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re) +.15 E(gular \214le.)-.15 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 set-group-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 symbolic link.).15 E F1108 180 Q F2(\214le)2.5 E F0 +-.35(Tr)144 180 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G (ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) --2.5 E F1108 606 Q F2(\214le)2.5 E F0 -.35(Tr)144 606 S(ue if).35 +-2.5 E F1108 192 Q F2(\214le)2.5 E F0 -.35(Tr)144 192 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) -.15 E F1108 618 Q F2(\214le)2.5 E F0 -.35(Tr)144 618 S(ue if).35 E +.15 E F1108 204 Q F2(\214le)2.5 E F0 -.35(Tr)144 204 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1108 -630 Q F2(\214le)2.5 E F0 -.35(Tr)144 630 S(ue if).35 E F2(\214le)2.5 E +216 Q F2(\214le)2.5 E F0 -.35(Tr)144 216 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1 -108 642 Q F2(fd)2.5 E F0 -.35(Tr)144 642 S(ue if \214le descriptor).35 E -F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 654 -Q F2(\214le)2.5 E F0 -.35(Tr)144 654 S(ue if).35 E F2(\214le)2.5 E F0 +108 228 Q F2(fd)2.5 E F0 -.35(Tr)144 228 S(ue if \214le descriptor).35 E +F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 240 +Q F2(\214le)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1 -108 666 Q F2(\214le)2.5 E F0 -.35(Tr)144 666 S(ue if).35 E F2(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 678 Q F2 -(\214le)2.5 E F0 -.35(Tr)144 678 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +108 252 Q F2(\214le)2.5 E F0 -.35(Tr)144 252 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 264 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 264 S(ue if).35 E F2(\214le)2.5 E F0 -.15 (ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1108 -690 Q F2(\214le)2.5 E F0 -.35(Tr)144 690 S(ue if).35 E F2(\214le)2.5 E +276 Q F2(\214le)2.5 E F0 -.35(Tr)144 276 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E -.3 -.15(ve g)-.25 H(roup id.).15 E F1108 702 Q F2(\214le)2.5 E F0 --.35(Tr)144 702 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F1108 714 Q F2(\214le)2.5 E F0 --.35(Tr)144 714 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(31)192.055 E 0 Cg EP -%%Page: 32 32 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84 -S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E -(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1 -108 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F2 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2 -(\214le1)108 108 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 120 S -(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0 -(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1) -108 132 Q F02.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 144 S -(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E -(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E -F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G -(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 156 Q -F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2 -(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5 -(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2 -(\214le1)2.5 E F0(does not.)2.5 E F1108 180 Q F2(optname)2.5 E F0 --.35(Tr)144 192 S .262(ue if the shell option).35 F F2(optname)2.992 E -F0 .262(is enabled.)2.942 F .262 +.3 -.15(ve g)-.25 H(roup id.).15 E F1108 288 Q F2(\214le)2.5 E F0 +-.35(Tr)144 288 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 300 Q F2(\214le)2.5 E F0 +-.35(Tr)144 300 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1 +108 312 Q F2(\214le)2.5 E F0 -.35(Tr)144 312 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E +(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1108 324 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 324 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 336 Q F1 +(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 348 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 360 Q F02.5 E F1(nt) +A F2(\214le2)2.5 E F0 -.35(Tr)144 372 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 384 Q F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 +396 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 408 Q F2 +(optname)2.5 E F0 -.35(Tr)144 420 S .263(ue if the shell option).35 F F2 +(optname)2.992 E F0 .262(is enabled.)2.942 F .262 (See the list of options under the description of the)5.262 F F1 -2.763 E F0(option to the)144 204 Q F1(set)2.5 E F0 -.2(bu)2.5 G -(iltin belo).2 E -.65(w.)-.25 G F1108 216 Q F2(varname)2.5 E F0 --.35(Tr)144 228 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 +2.762 E F0(option to the)144 432 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 444 Q F2(varname)2.5 E F0 +-.35(Tr)144 456 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 -240 Q F2(varname)2.5 E F0 -.35(Tr)144 252 S(ue if the shell v).35 E +468 Q F2(varname)2.5 E F0 -.35(Tr)144 480 S(ue if the shell v).35 E (ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.) -2.68 E F1108 264 Q F2(string)2.5 E F0 -.35(Tr)144 276 S +2.68 E F1108 492 Q F2(string)2.5 E F0 -.35(Tr)144 504 S (ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) -108 288 Q F1108 300 Q F2(string)2.5 E F0 -.35(Tr)144 312 S +108 516 Q F1108 528 Q F2(string)2.5 E F0 -.35(Tr)144 540 S (ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 -(string1)108 328.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 340.8 Q F1 -(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 352.8 S .862 +(string1)108 556.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 568.8 Q F1 +(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 580.8 S .861 (ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 -(should be used with the)3.361 F F1(test)3.361 E F0 .861 -(command for POSIX conformance.)3.361 F .446(When used with the)144 -364.8 R F1([[)2.946 E F0 .446 -(command, this performs pattern matching as described abo)2.946 F .747 --.15(ve \()-.15 H F1(Compound).15 E(Commands)144 376.8 Q F0(\).)A F2 -(string1)108 393.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 405.6 S -(ue if the strings are not equal.).35 E F2(string1)108 422.4 Q F1(<)2.5 -E F2(string2)2.5 E F0 -.35(Tr)144 434.4 S(ue if).35 E F2(string1)2.5 E +(should be used with the)3.361 F F1(test)3.361 E F0 .862 +(command for POSIX conformance.)3.362 F .447(When used with the)144 +592.8 R F1([[)2.946 E F0 .446 +(command, this performs pattern matching as described abo)2.946 F .746 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 604.8 Q F0(\).)A F2 +(string1)108 621.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 633.6 S +(ue if the strings are not equal.).35 E F2(string1)108 650.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 662.4 S(ue if).35 E F2(string1)2.5 E F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 -E(.)-.65 E F2(string1)108 451.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 463.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 -(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 -480 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF -(OP)144 492 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 -(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A -F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 -(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 -(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ -s than or equal to, greater than, or greater than or equal to)144 504 R -F2(ar)144 516 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) -.15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 -E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 -(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 -10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 532.8 Q(ANSION)-.81 E F0 -.614(When a simple command is e)108 544.8 R -.15(xe)-.15 G .614 -(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 +E(.)-.65 E F2(string1)108 679.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 +(Tr)144 691.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 +(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E(GNU Bash 5.0) +72 768 Q(2018 March 15)144.29 E(33)193.45 E 0 Cg EP +%%Page: 34 34 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(ar)108.33 84 Q(g1)-.37 E/F2 10/Times-Bold@0 SF(OP)2.5 +E F1(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF(OP)144 96 Q F0 .385 +(is one of)2.634 F F2(\255eq)2.885 E F0(,)A F2(\255ne)2.885 E F0(,)A F2 +(\255lt)2.885 E F0(,)A F2(\255le)2.885 E F0(,)A F2(\255gt)2.885 E F0 +2.885(,o)C(r)-2.885 E F2(\255ge)2.885 E F0 5.385(.T)C .385 +(hese arithmetic binary operators return true if)-5.385 F F1(ar)2.885 E +(g1)-.37 E F0 .845(is equal to, not equal to, less than, less than or e\ +qual to, greater than, or greater than or equal to)144 108 R F1(ar)144 +120 Q(g2)-.37 E F0 3.589(,r)C(especti)-3.589 E -.15(ve)-.25 G(ly).15 E +(.)-.65 E F1(Ar)7.099 E(g1)-.37 E F0(and)3.589 E F1(ar)3.919 E(g2)-.37 E +F0 1.089(may be positi)3.609 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 G +-2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E 3.59 +(gers. When)-.15 F 1.09(used with the)3.59 F F2([[)3.59 E F0(command,) +144 132 Q F1(Ar)4.22 E(g1)-.37 E F0(and)3.21 E F1(Ar)4.22 E(g2)-.37 E F0 +.71(are e)3.23 F -.25(va)-.25 G .71(luated as arithmetic e).25 F 3.209 +(xpressions \(see)-.15 F F3 .709(ARITHMETIC EV)3.209 F(ALU)-1.215 E(A-) +-.54 E(TION)144 144 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E/F4 10.95 +/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 160.8 Q(ANSION)-.81 E F0 .613 +(When a simple command is e)108 172.8 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 (xpansions, assignments, and redi-)-.15 F(rections, from left to right.) -108 556.8 Q(1.)108 573.6 Q 1.848(The w)144 573.6 R 1.848 -(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849 +108 184.8 Q(1.)108 201.6 Q 1.849(The w)144 201.6 R 1.849 +(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.848 (ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 585.6 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E(2.)108 602.4 Q 1.164(The w)144 602.4 R -1.164(ords that are not v)-.1 F 1.164 -(ariable assignments or redirections are e)-.25 F 3.663(xpanded. If)-.15 -F(an)3.663 E 3.663(yw)-.15 G 1.163(ords remain)-3.763 F .775(after e)144 -614.4 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775 +(name\) and redirections are sa)144 213.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 230.4 Q 1.163(The w)144 230.4 R +1.163(ords that are not v)-.1 F 1.164 +(ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15 +F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144 +242.4 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E -(are the ar)144 626.4 Q(guments.)-.18 E(3.)108 643.2 Q -(Redirections are performed as described abo)144 643.2 Q .3 -.15(ve u) +(are the ar)144 254.4 Q(guments.)-.18 E(3.)108 271.2 Q +(Redirections are performed as described abo)144 271.2 Q .3 -.15(ve u) -.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.) -108 660 Q .717(The te)144 660 R .717(xt after the)-.15 F F1(=)3.217 E F0 +108 288 Q .716(The te)144 288 R .717(xt after the)-.15 F F2(=)3.217 E F0 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 (goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E -.339(command substitution, arithmetic e)144 672 R .339 +.34(command substitution, arithmetic e)144 300 R .339 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 -(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 684 Q .332 -(If no command name results, the v)108 700.8 R .332 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 312 Q .332 +(If no command name results, the v)108 328.8 R .332 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 712.8 S .757 +2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 340.8 S .757 (riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 (xe)-.15 G .757(cuted command and do not af).15 F .757 -(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 724.8 -R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 -(he assignments attempts to assign a v)-3.177 F .677 -(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(32)192.055 E 0 Cg EP -%%Page: 33 33 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the command e)108 -84 Q(xits with a non-zero status.)-.15 E .149 -(If no command name results, redirections are performed, b)108 100.8 R -.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 -(vironment. A)-.4 F(redirection error causes the command to e)108 112.8 +(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 352.8 +R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677 +(he assignments attempts to assign a v)-3.176 F .677 +(alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F +(the command e)108 364.8 Q(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 381.6 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 393.6 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 129.6 R 1.064(xpansion, e) +(If there is a command name left after e)108 410.4 R 1.064(xpansion, e) -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F -4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 -141.6 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 -(xpansions contained a command substitution, the e)-.15 F .069 -(xit status of the command)-.15 F .467(is the e)108 153.6 R .466 -(xit status of the last command substitution performed.)-.15 F .466 -(If there were no command substitutions, the)5.466 F(command e)108 165.6 -Q(xits with a status of zero.)-.15 E/F1 10.95/Times-Bold@0 SF -(COMMAND EXECUTION)72 182.4 Q F0 .546 -(After a command has been split into w)108 194.4 R .547 +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 +422.4 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 434.4 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 446.4 +Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 463.2 Q F0 +.547(After a command has been split into w)108 475.2 R .546 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 206.4 Q(wing actions are tak)-.25 E +F(gu-)-.18 E(ments, the follo)108 487.2 Q(wing actions are tak)-.25 E (en.)-.1 E .379(If the command name contains no slashes, the shell atte\ -mpts to locate it.)108 223.2 R .379(If there e)5.379 F .379 +mpts to locate it.)108 504 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 235.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G -.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E/F2 9 -/Times-Bold@0 SF(FUNCTIONS)2.746 E/F3 9/Times-Roman@0 SF(.)A F0 .246 -(If the name does not match a func-)4.746 F -(tion, the shell searches for it in the list of shell b)108 247.2 Q 2.5 +108 516 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 528 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E -(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31 -(If the name is neither a shell function nor a b)108 264 R .309 -(uiltin, and contains no slashes,)-.2 F/F4 10/Times-Bold@0 SF(bash)2.809 -E F0 .309(searches each element of)2.809 F(the)108 276 Q F2 -.666(PA) -3.162 G(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15 -(xe)-.15 G .662(cutable \214le by that name.).15 F F4(Bash)5.662 E F0 -.663(uses a hash table to remember)3.162 F 1.915 -(the full pathnames of e)108 288 R -.15(xe)-.15 G 1.915 -(cutable \214les \(see).15 F F4(hash)4.415 E F0(under)4.415 E F2 1.915 -(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)-.828 F F0(belo)4.164 E -4.414(w\). A)-.25 F(full)4.414 E .719(search of the directories in)108 -300 R F2 -.666(PA)3.219 G(TH)-.189 E F0 .72 -(is performed only if the command is not found in the hash table.)2.969 -F .72(If the)5.72 F .956(search is unsuccessful, the shell searches for\ - a de\214ned shell function named)108 312 R F4(command_not_f)3.455 E -(ound_han-)-.25 E(dle)108 324 Q F0 5.277(.I)C 2.777(ft)-5.277 G .277 -(hat function e)-2.777 F .277(xists, it is in)-.15 F -.2(vo)-.4 G -.1 -(ke).2 G 2.777(dw).1 G .278 -(ith the original command and the original command')-2.777 F 2.778(sa) --.55 G -.18(rg)-2.778 G(uments).18 E .776(as its ar)108 336 R .776 -(guments, and the function')-.18 F 3.275(se)-.55 G .775 -(xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F -.775(If that function is not)5.775 F -(de\214ned, the shell prints an error message and returns an e)108 348 Q -(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\ - command name contains one or more slashes, the shell e)108 364.8 R -.15 -(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108 -376.8 R -.15(xe)-.15 G .198(cution en).15 F 2.698(vironment. Ar)-.4 F -.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 -(n, and the remain-).15 F(ing ar)108 388.8 Q +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309 +(If the name is neither a shell function nor a b)108 544.8 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 556.8 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 +568.8 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E +F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS) +-.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72 +(search of the directories in)108 580.8 R F3 -.666(PA)3.22 G(TH)-.189 E +F0 .719 +(is performed only if the command is not found in the hash table.)2.97 F +.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\ + a de\214ned shell function named)108 592.8 R F2(command_not_f)3.456 E +(ound_han-)-.25 E(dle)108 604.8 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 616.8 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 628.8 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 640.8 Q 1.089(If the search is success\ +ful, or if the command name contains one or more slashes, the shell e) +108 657.6 R -.15(xe)-.15 G 1.09(cutes the).15 F .198 +(named program in a separate e)108 669.6 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 681.6 Q (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 405.6 R +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 698.4 R -.15(xe)-.15 G 1.809(cution f).15 F 1.809 (ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809 (cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G -4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 417.6 R/F5 10 -/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678 +4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 710.4 R F1 .678 +(shell script)3.178 F F0 3.178(,a\214)C .678 (le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 (ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677 (cute it.).15 F(This)5.677 E .329 -(subshell reinitializes itself, so that the ef)108 429.6 R .329 +(subshell reinitializes itself, so that the ef)108 722.4 R .329 (fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F -.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33 -(andle the script, with)-2.83 F 1.219(the e)108 441.6 R 1.219 +(andle the script, with)-2.83 F(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(34)193.45 E 0 Cg EP +%%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 1.219(the e)108 84 +R 1.219 (xception that the locations of commands remembered by the parent \(see) --.15 F F4(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2 -(SHELL)3.719 E -.09(BU)108 453.6 S(IL).09 E(TIN COMMANDS)-.828 E F3(\))A -F0(are retained by the child.)2.25 E .347(If the program is a \214le be) -108 470.4 R .347(ginning with)-.15 F F4(#!)2.847 E F0 2.847(,t)C .348(h\ +-.15 F/F1 10/Times-Bold@0 SF(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 +G(nder)-3.719 E/F2 9/Times-Bold@0 SF(SHELL)3.719 E -.09(BU)108 96 S(IL) +.09 E(TIN COMMANDS)-.828 E/F3 9/Times-Roman@0 SF(\))A F0 +(are retained by the child.)2.25 E .347(If the program is a \214le be) +108 112.8 R .347(ginning with)-.15 F F1(#!)2.847 E F0 2.847(,t)C .348(h\ e remainder of the \214rst line speci\214es an interpreter for the pro-) --2.847 F 3.178(gram. The)108 482.4 R .678(shell e)3.178 F -.15(xe)-.15 G +-2.847 F 3.178(gram. The)108 124.8 R .678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpreter on operating systems that do not\ handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.192(format themselv) -108 494.4 R 3.692(es. The)-.15 F(ar)3.693 E 1.193 +108 136.8 R 3.692(es. The)-.15 F(ar)3.693 E 1.193 (guments to the interpreter consist of a single optional ar)-.18 F 1.193 (gument follo)-.18 F 1.193(wing the)-.25 F 1.131 -(interpreter name on the \214rst line of the program, follo)108 506.4 R +(interpreter name on the \214rst line of the program, follo)108 148.8 R 1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F -(command ar)108 518.4 Q(guments, if an)-.18 E -.65(y.)-.15 G F1 -(COMMAND EXECUTION ENVIR)72 535.2 Q(ONMENT)-.329 E F0(The shell has an) -108 547.2 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0 -2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 564 Q -1.405(open \214les inherited by the shell at in)144 564 R -.2(vo)-.4 G -1.406(cation, as modi\214ed by redirections supplied to the).2 F F4 -(exec)3.906 E F0 -.2(bu)144 576 S(iltin).2 E<83>108 592.8 Q -(the current w)144 592.8 Q(orking directory as set by)-.1 E F4(cd)2.5 E -F0(,)A F4(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F4(popd)2.5 E F0 2.5(,o)C 2.5 +(command ar)108 160.8 Q(guments, if an)-.18 E -.65(y.)-.15 G/F4 10.95 +/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 177.6 Q(ONMENT)-.329 E F0 +(The shell has an)108 189.6 Q/F5 10/Times-Italic@0 SF -.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 206.4 Q 1.405 +(open \214les inherited by the shell at in)144 206.4 R -.2(vo)-.4 G +1.406(cation, as modi\214ed by redirections supplied to the).2 F F1 +(exec)3.906 E F0 -.2(bu)144 218.4 S(iltin).2 E<83>108 235.2 Q +(the current w)144 235.2 Q(orking directory as set by)-.1 E F1(cd)2.5 E +F0(,)A F1(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F1(popd)2.5 E F0 2.5(,o)C 2.5 (ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E -<83>108 609.6 Q(the \214le creation mode mask as set by)144 609.6 Q F4 +<83>108 252 Q(the \214le creation mode mask as set by)144 252 Q F1 (umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) --2.5 E<83>108 626.4 Q(current traps set by)144 626.4 Q F4(trap)2.5 E F0 -<83>108 643.2 Q .257(shell parameters that are set by v)144 643.2 R .256 -(ariable assignment or with)-.25 F F4(set)2.756 E F0 .256 +-2.5 E<83>108 268.8 Q(current traps set by)144 268.8 Q F1(trap)2.5 E F0 +<83>108 285.6 Q .257(shell parameters that are set by v)144 285.6 R .256 +(ariable assignment or with)-.25 F F1(set)2.756 E F0 .256 (or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E -(in the en)144 655.2 Q(vironment)-.4 E<83>108 672 Q -(shell functions de\214ned during e)144 672 Q -.15(xe)-.15 G +(in the en)144 297.6 Q(vironment)-.4 E<83>108 314.4 Q +(shell functions de\214ned during e)144 314.4 Q -.15(xe)-.15 G (cution or inherited from the shell').15 E 2.5(sp)-.55 G -(arent in the en)-2.5 E(vironment)-.4 E<83>108 688.8 Q -(options enabled at in)144 688.8 Q -.2(vo)-.4 G(cation \(either by def) -.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F4(set) -2.5 E F0<83>108 705.6 Q(options enabled by)144 705.6 Q F4(shopt)2.5 E F0 -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(33)192.055 E 0 Cg EP -%%Page: 34 34 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(shell aliases de\214ned with)144 84 Q/F1 10/Times-Bold@0 SF(alias)2.5 E -F0<83>108 100.8 Q -.25(va)144 100.8 S +(arent in the en)-2.5 E(vironment)-.4 E<83>108 331.2 Q +(options enabled at in)144 331.2 Q -.2(vo)-.4 G(cation \(either by def) +.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set) +2.5 E F0<83>108 348 Q(options enabled by)144 348 Q F1(shopt)2.5 E F0<83> +108 364.8 Q(shell aliases de\214ned with)144 364.8 Q F1(alias)2.5 E F0 +<83>108 381.6 Q -.25(va)144 381.6 S (rious process IDs, including those of background jobs, the v).25 E (alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .426 -(When a simple command other than a b)108 117.6 R .427 -(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 +F2(PPID)2.5 E F0 .426(When a simple command other than a b)108 398.4 R +.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 (cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas) --2.927 G(eparate)-2.927 E -.15(exe)108 129.6 S .134(cution en).15 F .134 +-2.927 G(eparate)-2.927 E -.15(exe)108 410.4 S .134(cution en).15 F .134 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F .133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F -(the shell.)108 141.6 Q<83>108 158.4 Q 1.055(the shell')144 158.4 R +(the shell.)108 422.4 Q<83>108 439.2 Q 1.055(the shell')144 439.2 R 3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G 1.056 (odi\214cations and additions speci\214ed by redirections to the com-) --3.556 F(mand)144 170.4 Q<83>108 187.2 Q(the current w)144 187.2 Q -(orking directory)-.1 E<83>108 204 Q(the \214le creation mode mask)144 -204 Q<83>108 220.8 Q .857(shell v)144 220.8 R .857 +-3.556 F(mand)144 451.2 Q<83>108 468 Q(the current w)144 468 Q +(orking directory)-.1 E<83>108 484.8 Q(the \214le creation mode mask)144 +484.8 Q<83>108 501.6 Q .857(shell v)144 501.6 R .857 (ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 (xport, along with v)-.15 F .857(ariables e)-.25 F .857 -(xported for the command,)-.15 F(passed in the en)144 232.8 Q(vironment) --.4 E<83>108 249.6 Q .306(traps caught by the shell are reset to the v) -144 249.6 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G +(xported for the command,)-.15 F(passed in the en)144 513.6 Q(vironment) +-.4 E<83>108 530.4 Q .306(traps caught by the shell are reset to the v) +144 530.4 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307(arent, and traps ignored)-2.807 F(by the shell are ignored)144 -261.6 Q 2.5(Ac)108 278.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 +542.4 Q 2.5(Ac)108 559.2 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 (di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E (fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E (vironment.)-.4 E .577(Command substitution, commands grouped with pare\ -ntheses, and asynchronous commands are in)108 295.2 R -.2(vo)-.4 G -.1 -(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 307.2 S .244(ubshell en) --2.744 F .244(vironment that is a duplicate of the shell en)-.4 F .245 +ntheses, and asynchronous commands are in)108 576 R -.2(vo)-.4 G -.1(ke) +.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 588 S .244(ubshell en)-2.744 +F .244(vironment that is a duplicate of the shell en)-.4 F .245 (vironment, e)-.4 F .245(xcept that traps caught by the shell are)-.15 F -.359(reset to the v)108 319.2 R .358 +.359(reset to the v)108 600 R .358 (alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) --.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 331.2 -R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 +-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 612 R +-.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 (vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-) --.4 E(ment cannot af)108 343.2 Q(fect the shell')-.25 E 2.5(se)-.55 G --.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 -360 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 +-.4 E(ment cannot af)108 624 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 +640.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) -108 372 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix)2.5 E F0(mode,)2.5 -E F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 -(option in such subshells.)2.5 E .404(If a command is follo)108 388.8 R -.404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti) -2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405 -(ault standard input for the command)-.1 F .198(is the empty \214le)108 -400.8 R F3(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198 -(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197 -(ommand inherits the \214le descriptors of the calling shell)-2.698 F -(as modi\214ed by redirections.)108 412.8 Q/F4 10.95/Times-Bold@0 SF -(ENVIR)72 429.6 Q(ONMENT)-.329 E F0 2.353(When a program is in)108 441.6 -R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg) --4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353 -(rray of strings called the)-4.853 F F3(en)4.853 E(vir)-.4 E(onment)-.45 -E F0 7.353(.T).68 G 2.354(his is a list of)-7.353 F F3(name)108 453.6 Q -F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.5 E F0(=)A F3 -(value)A F0(.).18 E 1.486(The shell pro)108 470.4 R 1.486(vides se)-.15 -F -.15(ve)-.25 G 1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F -3.985(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485 -(cation, the shell scans its o).2 F(wn)-.25 E(en)108 482.4 Q .144(viron\ +108 652.8 R(not in)2.5 E F5(posix)2.5 E F0(mode,)2.5 E F1(bash)2.5 E F0 +(clears the)2.5 E F12.5 E F0(option in such subshells.)2.5 E .404 +(If a command is follo)108 669.6 R .404(wed by a)-.25 F F1(&)2.904 E F0 +.405(and job control is not acti)2.904 F -.15(ve)-.25 G 2.905(,t).15 G +.405(he def)-2.905 F .405(ault standard input for the command)-.1 F .198 +(is the empty \214le)108 681.6 R F5(/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 693.6 Q(GNU Bash 5.0)72 768 +Q(2018 March 15)144.29 E(35)193.45 E 0 Cg EP +%%Page: 36 36 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(ENVIR)72 84 Q(ONMENT)-.329 E F0 2.353 +(When a program is in)108 96 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G +4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na) +.25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F/F2 10 +/Times-Italic@0 SF(en)4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G +2.354(his is a list of)-7.353 F F2(name)108 108 Q F0A F2(value)A F0 +(pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E +1.486(The shell pro)108 124.8 R 1.486(vides se)-.15 F -.15(ve)-.25 G +1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985 +(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485 +(cation, the shell scans its o).2 F(wn)-.25 E(en)108 136.8 Q .144(viron\ ment and creates a parameter for each name found, automatically marking\ - it for)-.4 F F3 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F -2.704(cesses. Ex)108 494.4 R .203(ecuted commands inherit the en)-.15 F -2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) -2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703 -(wp)-.25 G(aram-)-2.703 E 1.153 -(eters and functions to be added to and deleted from the en)108 506.4 R + it for)-.4 F F2 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F +2.704(cesses. Ex)108 148.8 R .203(ecuted commands inherit the en)-.15 F +2.703(vironment. The)-.4 F/F3 10/Times-Bold@0 SF(export)2.703 E F0(and) +2.703 E F3(declar)2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203 +(commands allo)2.703 F 2.703(wp)-.25 G(aram-)-2.703 E 1.153 +(eters and functions to be added to and deleted from the en)108 160.8 R 3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154 -(alue of a parameter in the)-.25 F(en)108 518.4 Q .64 +(alue of a parameter in the)-.25 F(en)108 172.8 Q .64 (vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64 (alue becomes part of the en)-3.39 F .64(vironment, replacing the old.) --.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 530.4 +-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 184.8 R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 (cuted command consists of the shell').15 F 3.08(si)-.55 G .58 (nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F -.301(modi\214ed in the shell, less an)108 542.4 R 2.801(yp)-.15 G .301 +.301(modi\214ed in the shell, less an)108 196.8 R 2.801(yp)-.15 G .301 (airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he) --2.801 E F1(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 -(dditions via the)-2.8 F F1(export)2.8 E F0(and)2.8 E F1(declar)108 -554.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108 -571.2 R .562(vironment for an)-.4 F(y)-.15 E F3 .562(simple command) +-2.801 E F3(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 +(dditions via the)-2.8 F F3(export)2.8 E F0(and)2.8 E F3(declar)108 +208.8 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108 +225.6 R .562(vironment for an)-.4 F(y)-.15 E F2 .562(simple command) 3.402 F F0 .563 (or function may be augmented temporarily by pre\214xing it with)3.833 F -.203(parameter assignments, as described abo)108 583.2 R .502 -.15(ve i) --.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF -(.)A F0 .202(These assignment statements af)4.702 F .202(fect only the) --.25 F(en)108 595.2 Q(vironment seen by that command.)-.4 E .81(If the) -108 612 R F13.31 E F0 .81(option is set \(see the)3.31 F F1(set) -3.31 E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F -F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en) -108 624 Q +.203(parameter assignments, as described abo)108 237.6 R .502 -.15(ve i) +-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5 +9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F +.202(fect only the)-.25 F(en)108 249.6 Q +(vironment seen by that command.)-.4 E .81(If the)108 266.4 R F3 +3.31 E F0 .81(option is set \(see the)3.31 F F3(set)3.31 E F0 -.2(bu) +3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 +.81(parameter assignments are placed in)3.82 F(the en)108 278.4 Q (vironment for a command, not just those that precede the command name.) --.4 E(When)108 640.8 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 +-.4 E(When)108 295.2 Q F3(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 (ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v) --3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085 +-3.736 F(ariable)-.25 E F3(_)3.586 E F0 1.085 (is set to the full \214lename of the command and)3.586 F -(passed to that command in its en)108 652.8 Q(vironment.)-.4 E F4 -(EXIT ST)72 669.6 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 681.6 R -.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v) -.15 F .151(alue returned by the)-.25 F F3(waitpid)2.651 E F0 .151 +(passed to that command in its en)108 307.2 Q(vironment.)-.4 E F1 +(EXIT ST)72 324 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 336 R .15 +(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v).15 +F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151 (system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848 -(tion. Exit)108 693.6 R .348(statuses f)2.848 F .347 +(tion. Exit)108 348 R .348(statuses f)2.848 F .347 (all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25 -F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 705.6 Q 5.506(.E)-.65 G +F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 360 Q 5.506(.E)-.65 G .506(xit statuses from shell b)-5.506 F .507 (uiltins and compound commands are also limited to this range.)-.2 F (Under)5.507 E(certain circumstances, the shell will use special v)108 -717.6 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(34)192.055 E 0 Cg EP -%%Page: 35 35 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(Fo)108 84 S -3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 +372 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo) +108 388.8 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 (urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873 (xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of) --.15 F .048(zero indicates success.)108 96 R 2.548(An)5.048 G .049 +-.15 F .048(zero indicates success.)108 400.8 R 2.548(An)5.048 G .049 (on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549 (ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f) --2.549 F .049(atal sig-)-.1 F(nal)108 108 Q/F1 10/Times-Italic@0 SF(N) -2.5 E F0(,)A/F2 10/Times-Bold@0 SF(bash)2.5 E F0(uses the v)2.5 E -(alue of 128+)-.25 E F1(N)A F0(as the e)2.5 E(xit status.)-.15 E .405 -(If a command is not found, the child process created to e)108 124.8 R +-2.549 F .049(atal sig-)-.1 F(nal)108 412.8 Q F2(N)2.5 E F0(,)A F3(bash) +2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E +(xit status.)-.15 E .405 +(If a command is not found, the child process created to e)108 429.6 R -.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404 -(If a command is)5.404 F(found b)108 136.8 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 153.6 +(If a command is)5.404 F(found b)108 441.6 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 458.4 Q(ails because of an error during e)-.1 E (xpansion or redirection, the e)-.15 E(xit status is greater than zero.) --.15 E .08(Shell b)108 170.4 R .08 -(uiltin commands return a status of 0 \()-.2 F F1(true)A F0 2.581(\)i)C -2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F1(false)A F0 +-.15 E .08(Shell b)108 475.2 R .08 +(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0 2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while) --2.581 F(the)108 182.4 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 +-2.581 F(the)108 487.2 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 (cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468 (xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 -(va)-.4 G .467(lid options or).25 F(missing ar)108 194.4 Q(guments.)-.18 -E F2(Bash)108 211.2 Q F0 .201(itself returns the e)2.701 F .202 +(va)-.4 G .467(lid options or).25 F(missing ar)108 499.2 Q(guments.)-.18 +E F3(Bash)108 516 Q F0 .201(itself returns the e)2.701 F .202 (xit status of the last command e)-.15 F -.15(xe)-.15 G .202 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 223.2 -Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F2 -(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G/F3 -10.95/Times-Bold@0 SF(SIGN)72 240 Q(ALS)-.219 E F0(When)108 252 Q F2 -(bash)3.183 E F0 .683(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G -3.183(nt)-3.183 G .683(he absence of an)-3.183 F 3.183(yt)-.15 G .683 -(raps, it ignores)-3.183 F/F4 9/Times-Bold@0 SF(SIGTERM)3.183 E F0 .682 -(\(so that)2.933 F F2 .682(kill 0)3.182 F F0 .682(does not kill an)3.182 -F(interacti)108 264 Q .757 -.15(ve s)-.25 H .457(hell\), and).15 F F4 -(SIGINT)2.957 E F0 .458(is caught and handled \(so that the)2.707 F F2 -(wait)2.958 E F0 -.2(bu)2.958 G .458(iltin is interruptible\).).2 F .458 -(In all cases,)5.458 F F2(bash)108 276 Q F0(ignores)2.5 E F4(SIGQ)2.5 E -(UIT)-.09 E/F5 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E -(fect,)-.25 E F2(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4 -(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0 -(Non-b)108 292.8 Q 1.065(uiltin commands run by)-.2 F F2(bash)3.565 E F0 -(ha)3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 -F 1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When) -108 304.8 R .747(job control is not in ef)3.247 F .747 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 528 Q +(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F3 +(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F1 +(SIGN)72 544.8 Q(ALS)-.219 E F0(When)108 556.8 Q F3(bash)3.183 E F0 .683 +(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G 3.183(nt)-3.183 G +.683(he absence of an)-3.183 F 3.183(yt)-.15 G .683(raps, it ignores) +-3.183 F F4(SIGTERM)3.183 E F0 .682(\(so that)2.933 F F3 .682(kill 0) +3.182 F F0 .682(does not kill an)3.182 F(interacti)108 568.8 Q .757 -.15 +(ve s)-.25 H .457(hell\), and).15 F F4(SIGINT)2.957 E F0 .458 +(is caught and handled \(so that the)2.707 F F3(wait)2.958 E F0 -.2(bu) +2.958 G .458(iltin is interruptible\).).2 F .458(In all cases,)5.458 F +F3(bash)108 580.8 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0 +(If job control is in ef)4.5 E(fect,)-.25 E F3(bash)2.5 E F0(ignores)2.5 +E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 +E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 597.6 Q 1.065 +(uiltin commands run by)-.2 F F3(bash)3.565 E F0(ha)3.565 E 1.365 -.15 +(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.064 +(alues inherited by the shell from its)-.25 F 3.247(parent. When)108 +609.6 R .747(job control is not in ef)3.247 F .747 (fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and) 2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 -(tion to these inherited handlers.)108 316.8 R .653 +(tion to these inherited handlers.)108 621.6 R .653 (Commands run as a result of command substitution ignore the k)5.653 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 328.8 Q F4 +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 633.6 Q F4 (SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 -(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 345.6 R 2.045 +(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 650.4 R 2.045 (xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346 --.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 357.6 Q F0 +-.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 662.4 Q F0 1.005(to all jobs, running or stopped.)3.255 F 1.004 (Stopped jobs are sent)6.005 F F4(SIGCONT)3.504 E F0 1.004 (to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15 -(ve t)-.25 H(he).15 E F4(SIGHUP)108 369.6 Q F5(.)A F0 2.529 -.8(To p) +(ve t)-.25 H(he).15 E F4(SIGHUP)108 674.4 Q F5(.)A F0 2.529 -.8(To p) 5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\ to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15 -G .93(rom the)-3.43 F 1.357(jobs table with the)108 381.6 R F2(diso) +G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso) 3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F4 1.356 (SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E 1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F4 -(SIGHUP)108 393.6 Q F0(using)2.25 E F2(diso)2.5 E(wn \255h)-.1 E F0(.)A -.166(If the)108 410.4 R F2(huponexit)2.666 E F0 .166 -(shell option has been set with)2.666 F F2(shopt)2.666 E F0(,)A F2(bash) +(SIGHUP)108 698.4 Q F0(using)2.25 E F3(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 715.2 R F3(huponexit)2.666 E F0 .166 +(shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash) 2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 -422.4 Q(xits.)-.15 E(If)108 439.2 Q F2(bash)3.047 E F0 .547(is w)3.047 F -.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G -3.046(sas).15 G .546(ignal for which a trap has been set, the trap) --3.046 F .662(will not be e)108 451.2 R -.15(xe)-.15 G .662 -(cuted until the command completes.).15 F(When)5.663 E F2(bash)3.163 E +727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(36) +193.45 E 0 Cg EP +%%Page: 37 37 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(If)108 84 Q/F1 10 +/Times-Bold@0 SF(bash)3.047 E F0 .547(is w)3.047 F .546 +(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046 +(sas).15 G .546(ignal for which a trap has been set, the trap)-3.046 F +.662(will not be e)108 96 R -.15(xe)-.15 G .662 +(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99 -(via the)108 463.2 R F2(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ -eption of a signal for which a trap has been set will cause the).2 F F2 +(via the)108 108 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\ +tion of a signal for which a trap has been set will cause the).2 F F1 (wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F -(return immediately with an e)108 475.2 Q +(return immediately with an e)108 120 Q (xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E F3(JOB CONTR)72 492 Q(OL)-.329 E F1 -.25 -(Jo)108 504 S 4.567(bc).25 G(ontr)-4.567 E(ol)-.45 E F0 2.067 -(refers to the ability to selecti)5.077 F -.15(ve)-.25 G 2.067 -(ly stop \().15 F F1(suspend)A F0 4.567(\)t)C 2.068(he e)-4.567 F -.15 -(xe)-.15 G 2.068(cution of processes and continue).15 F(\()108 516 Q F1 --.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G -.702(cution at a later point.).15 F 3.202(Au)5.702 G .702 +E -.15(xe)-.15 G(cuted.).15 E/F2 10.95/Times-Bold@0 SF(JOB CONTR)72 +136.8 Q(OL)-.329 E/F3 10/Times-Italic@0 SF -.25(Jo)108 148.8 S 4.567(bc) +.25 G(ontr)-4.567 E(ol)-.45 E F0 2.067(refers to the ability to selecti) +5.077 F -.15(ve)-.25 G 2.067(ly stop \().15 F F3(suspend)A F0 4.567(\)t) +C 2.068(he e)-4.567 F -.15(xe)-.15 G 2.068 +(cution of processes and continue).15 F(\()108 160.8 Q F3 -.37(re)C +(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G .702 +(cution at a later point.).15 F 3.202(Au)5.702 G .702 (ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 (acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace) --.1 E(supplied jointly by the operating system k)108 528 Q(ernel')-.1 E -2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E -F2(bash)2.5 E F0(.)A .784(The shell associates a)108 544.8 R F1(job) +-.1 E(supplied jointly by the operating system k)108 172.8 Q(ernel')-.1 +E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E +F1(bash)2.5 E F0(.)A .784(The shell associates a)108 189.6 R F3(job) 5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785 (eeps a table of currently e)-.1 F -.15(xe)-.15 G .785 -(cuting jobs, which may be).15 F .341(listed with the)108 556.8 R F2 -(jobs)2.841 E F0 2.841(command. When)2.841 F F2(bash)2.841 E F0 .341 -(starts a job asynchronously \(in the)2.841 F F1(bac)2.84 E(kgr)-.2 E -(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 568.8 -Q(e:)-.1 E([1] 25647)144 585.6 Q .241(indicating that this job is job n\ +(cuting jobs, which may be).15 F .341(listed with the)108 201.6 R F1 +(jobs)2.841 E F0 2.841(command. When)2.841 F F1(bash)2.841 E F0 .341 +(starts a job asynchronously \(in the)2.841 F F3(bac)2.84 E(kgr)-.2 E +(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 213.6 +Q(e:)-.1 E([1] 25647)144 230.4 Q .241(indicating that this job is job n\ umber 1 and that the process ID of the last process in the pipeline ass\ -ociated)108 602.4 R .733(with this job is 25647.)108 614.4 R .732 +ociated)108 247.2 R .733(with this job is 25647.)108 259.2 R .732 (All of the processes in a single pipeline are members of the same job) -5.733 F(.)-.4 E F2(Bash)5.732 E F0(uses)3.232 E(the)108 626.4 Q F1(job) +5.733 F(.)-.4 E F1(Bash)5.732 E F0(uses)3.232 E(the)108 271.2 Q F3(job) 4.24 E F0(abstraction as the basis for job control.)2.73 E 3.062 -.8 -(To f)108 643.2 T 1.462(acilitate the implementation of the user interf) -.7 F 1.463(ace to job control, the operating system maintains the)-.1 F -.871(notion of a)108 655.2 R F1(curr)3.371 E .871(ent terminal pr)-.37 F +(To f)108 288 T 1.462(acilitate the implementation of the user interf).7 +F 1.463(ace to job control, the operating system maintains the)-.1 F +.871(notion of a)108 300 R F3(curr)3.371 E .871(ent terminal pr)-.37 F .871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .87 (embers of this process group \(processes whose process)-5.871 F .023 (group ID is equal to the current terminal process group ID\) recei)108 -667.2 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F F4(SIG-)2.523 E(INT)108 679.2 Q -F5(.)A F0 1.347(These processes are said to be in the)5.847 F F1(for) -3.846 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.926 E -(kgr)-.2 E(ound)-.45 E F0 1.346(processes are those whose process)4.616 -F .145(group ID dif)108 691.2 R .145(fers from the terminal')-.25 F .146 +312 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F/F4 9/Times-Bold@0 SF(SIG-)2.523 E +(INT)108 324 Q/F5 9/Times-Roman@0 SF(.)A F0 1.347 +(These processes are said to be in the)5.847 F F3(for)3.846 E -.4(eg) +-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.926 E(kgr)-.2 E(ound) +-.45 E F0 1.346(processes are those whose process)4.616 F .145 +(group ID dif)108 336 R .145(fers from the terminal')-.25 F .146 (s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146 (board-generated signals.).15 F .146(Only fore-)5.146 F .16 -(ground processes are allo)108 703.2 R .16(wed to read from or)-.25 F -2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 -10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.051(minal. Background)108 715.2 R .551 +(ground processes are allo)108 348 R .16(wed to read from or)-.25 F 2.66 +(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 10 +/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.051(minal. Background)108 360 R .551 (processes which attempt to read from \(write to when)3.051 F F6 .551 (stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F -2.098(terminal are sent a)108 727.2 R F4 2.098(SIGTTIN \(SIGTT)4.598 F -(OU\))-.162 E F0 2.098(signal by the k)4.348 F(ernel')-.1 E 4.598(st) --.55 G 2.098(erminal dri)-4.598 F -.15(ve)-.25 G 2.898 -.4(r, w).15 H -2.098(hich, unless caught,).4 F(GNU Bash 4.4)72 768 Q(2016 August 26) -142.895 E(35)192.055 E 0 Cg EP -%%Page: 36 36 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(suspends the process.)108 84 Q 1.087(If the operating system on which) -108 100.8 R/F1 10/Times-Bold@0 SF(bash)3.587 E F0 1.088 +.718(terminal are sent a)108 372 R F4 .718(SIGTTIN \(SIGTT)3.218 F(OU\)) +-.162 E F0 .718(signal by the k)2.968 F(ernel')-.1 E 3.217(st)-.55 G +.717(erminal dri)-3.217 F -.15(ve)-.25 G 1.517 -.4(r, w).15 H .717 +(hich, unless caught, sus-).4 F(pends the process.)108 384 Q 1.087 +(If the operating system on which)108 400.8 R F1(bash)3.587 E F0 1.088 (is running supports job control,)3.588 F F1(bash)3.588 E F0 1.088 -(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 112.8 S -.302(ping the).8 F/F2 10/Times-Italic@0 SF(suspend)3.142 E F0 .302 -(character \(typically)3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301 +(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 412.8 S +.302(ping the).8 F F3(suspend)3.142 E F0 .302(character \(typically) +3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301 (ontrol-Z\) while a process is running causes that process to be)-2.801 -F 2.142(stopped and returns control to)108 124.8 R F1(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F2 2.142(delayed suspend)4.992 F F0 +F 2.142(stopped and returns control to)108 424.8 R F1(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0 2.143(character \(typically)5.413 F F1(^Y)4.643 E F0 4.643(,C)C (ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ mpts to read input from the terminal, and control to be returned)108 -136.8 R(to)108 148.8 Q F1(bash)3.392 E F0 5.892(.T)C .892 +436.8 R(to)108 448.8 Q F1(bash)3.392 E F0 5.892(.T)C .892 (he user may then manipulate the state of this job, using the)-5.892 F F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 -(background, the)108 160.8 R F1(fg)3.395 E F0 .895 +(background, the)108 460.8 R F1(fg)3.395 E F0 .895 (command to continue it in the fore)3.395 F .895(ground, or the)-.15 F F1(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F1(^Z) -3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 172.8 Q .948(fect immediately) +3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 472.8 Q .948(fect immediately) -.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 184.8 Q .777(There are a number of w)108 201.6 R .777 +108 484.8 Q .777(There are a number of w)108 501.6 R .777 (ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1 -(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 213.6 -Q F2(jobspec)A F0 3.457(\). Job)B(number)3.457 E F2(n)3.817 E F0 .957 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 513.6 +Q F3(jobspec)A F0 3.457(\). Job)B(number)3.457 E F3(n)3.817 E F0 .957 (may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ ed to start it, or using a substring that appears in its command line.) -108 225.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E -F0 .59(refers to a)3.09 F(stopped)108 237.6 Q F1(ce)3.463 E F0(job)3.463 +108 525.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E +F0 .59(refers to a)3.09 F(stopped)108 537.6 Q F1(ce)3.463 E F0(job)3.463 E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963 (re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963 (reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087 -(hand, refers to an)108 249.6 R 2.587(yj)-.15 G .087 +(hand, refers to an)108 549.6 R 2.587(yj)-.15 G .087 (ob containing the string)-2.587 F F1(ce)2.587 E F0 .087 (in its command line.)2.587 F .087 -(If the substring matches more than one)5.087 F(job,)108 261.6 Q F1 +(If the substring matches more than one)5.087 F(job,)108 561.6 Q F1 (bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 (he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018 (refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F -F2(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) --2.518 F .495(the last job stopped while it w)108 273.6 R .495 +F3(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) +-2.518 F .495(the last job stopped while it w)108 573.6 R .495 (as in the fore)-.1 F .495(ground or started in the background.)-.15 F -(The)5.494 E F2(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 -(may be)3.224 F .787(referenced using)108 285.6 R F1<25ad>3.287 E F0 +(The)5.494 E F3(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 +(may be)3.224 F .787(referenced using)108 585.6 R F1<25ad>3.287 E F0 5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F1 (%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .788 (can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E -.257(output pertaining to jobs \(e.g., the output of the)108 297.6 R F1 +.257(output pertaining to jobs \(e.g., the output of the)108 597.6 R F1 (jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) -.1 G .256(ys \215agged with a).1 F F1(+)2.756 E F0(,)A .41(and the pre) -108 309.6 R .41(vious job with a)-.25 F F12.91 E F0 5.41(.A)C .411 +108 609.6 R .41(vious job with a)-.25 F F12.91 E F0 5.41(.A)C .411 (single % \(with no accompan)-2.5 F .411 (ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E -(rent job)108 321.6 Q(.)-.4 E .444 -(Simply naming a job can be used to bring it into the fore)108 338.4 R +(rent job)108 621.6 Q(.)-.4 E .444 +(Simply naming a job can be used to bring it into the fore)108 638.4 R (ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for) -.15 F F1 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C (ringing)-2.943 E 1.472(job 1 from the background into the fore)108 -350.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473 +650.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473 (%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F -(equi)108 362.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 379.2 +(equi)108 662.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 679.2 R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F (Normally)5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.63 G .13 (its until it is about to print a).1 F .157 -(prompt before reporting changes in a job')108 391.2 R 2.657(ss)-.55 G +(prompt before reporting changes in a job')108 691.2 R 2.657(ss)-.55 G .157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158 (ther output.)-2.658 F .158(If the)5.158 F F12.658 E F0 .158 -(option to)2.658 F(the)108 403.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148 +(option to)2.658 F(the)108 703.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148 (iltin command is enabled,).2 F F1(bash)2.648 E F0 .148 (reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15 -(ny t)-5.147 H .147(rap on).15 F/F3 9/Times-Bold@0 SF(SIGCHLD)2.647 E F0 -.147(is e)2.397 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108 -415.2 Q(xits.)-.15 E .032(If an attempt to e)108 432 R(xit)-.15 E F1 -(bash)2.532 E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533 -(,i)-.4 G 2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033 -(shell option has been enabled)2.533 F 2.02(using the)108 444 R F1 -(shopt)4.52 E F0 -.2(bu)4.52 G 2.02 -(iltin, running\), the shell prints a w).2 F 2.019 -(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019 -(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 -456 R(The)5.458 E F1(jobs)2.958 E F0 .459 +(ny t)-5.147 H .147(rap on).15 F F4(SIGCHLD)2.647 E F0 .147(is e)2.397 F +-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 715.2 Q(xits.) +-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(37)193.45 E 0 Cg EP +%%Page: 38 38 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .032 +(If an attempt to e)108 84 R(xit)-.15 E/F1 10/Times-Bold@0 SF(bash)2.532 +E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533(,i)-.4 G +2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033 +(shell option has been enabled)2.533 F 2.02(using the)108 96 R F1(shopt) +4.52 E F0 -.2(bu)4.52 G 2.02(iltin, running\), the shell prints a w).2 F +2.019(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019 +(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 +108 R(The)5.458 E F1(jobs)2.958 E F0 .459 (command may then be used to inspect their status.)2.958 F .459(If a) -5.459 F .604(second attempt to e)108 468 R .604 +5.459 F .604(second attempt to e)108 120 R .604 (xit is made without an interv)-.15 F .604 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E -(and an)108 480 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F4 -10.95/Times-Bold@0 SF(PR)72 496.8 Q(OMPTING)-.329 E F0 .644(When e)108 -508.8 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F1(bash)3.144 E F0 .645(displays the primary prompt)3.145 F -F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F .315 -(and the secondary prompt)108 520.8 R F3(PS2)2.815 E F0 .315 -(when it needs more input to complete a command.)2.565 F F1(Bash)5.314 E -F0(displays)2.814 E F1(PS0)2.814 E F0(after)2.814 E .049 -(it reads a command b)108 532.8 R .049(ut before e)-.2 F -.15(xe)-.15 G -.049(cuting it.).15 F F1(Bash)5.049 E F0(allo)2.549 E .05 -(ws these prompt strings to be customized by inserting)-.25 F 2.5(an)108 -544.8 S(umber of backslash-escaped special characters that are decoded \ -as follo)-2.5 E(ws:)-.25 E F1(\\a)144 556.8 Q F0 -(an ASCII bell character \(07\))180 556.8 Q F1(\\d)144 568.8 Q F0 -(the date in "W)180 568.8 Q(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E F1(\\D{)144 580.8 Q F2(format)A F1(})A F0(the)180 -592.8 Q F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime) -3.927 E F0 1.427 +(and an)108 132 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .644 +(When the shell is w)108 148.8 R .644 +(aiting for a job or process using the)-.1 F F1(wait)3.145 E F0 -.2(bu) +3.145 G .645(iltin, and job control is enabled,).2 F F1(wait)3.145 E F0 +(will)3.145 E .428(return when the job changes state. The)108 160.8 R F1 +2.928 E F0 .428(option will force)2.928 F F1(wait)2.928 E F0 .428 +(to w)2.928 F .428(ait until the job or process terminates)-.1 F +(before returning.)108 172.8 Q/F2 10.95/Times-Bold@0 SF(PR)72 189.6 Q +(OMPTING)-.329 E F0 .644(When e)108 201.6 R -.15(xe)-.15 G .644 +(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F1(bash)3.144 E +F0 .645(displays the primary prompt)3.145 F/F3 9/Times-Bold@0 SF(PS1) +3.145 E F0 .645(when it is ready to read a command,)2.895 F .428 +(and the secondary prompt)108 213.6 R F3(PS2)2.928 E F0 .427 +(when it needs more input to complete a command.)2.678 F F1(Bash)5.427 E +F0(displays)2.927 E F3(PS0)2.927 E F0(after)2.677 E .037 +(it reads a command b)108 225.6 R .037(ut before e)-.2 F -.15(xe)-.15 G +.037(cuting it.).15 F F1(Bash)5.037 E F0(displays)2.537 E F3(PS4)2.538 E +F0 .038(as described abo)2.288 F .338 -.15(ve b)-.15 H .038 +(efore tracing each com-).15 F 1.122(mand when the)108 237.6 R F1 +3.622 E F0 1.122(option is enabled.)3.622 F F1(Bash)6.122 E F0(allo) +3.622 E 1.122(ws these prompt strings to be customized by inserting a) +-.25 F(number of backslash-escaped special characters that are decoded \ +as follo)108 249.6 Q(ws:)-.25 E F1(\\a)144 261.6 Q F0 +(an ASCII bell character \(07\))180 261.6 Q F1(\\d)144 273.6 Q F0 +(the date in "W)180 273.6 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F1(\\D{)144 285.6 Q/F4 10/Times-Italic@0 SF(format) +A F1(})A F0(the)180 297.6 Q F4(format)3.926 E F0 1.426(is passed to) +3.926 F F4(strftime)3.926 E F0 1.427 (\(3\) and the result is inserted into the prompt string; an)B(empty)180 -604.8 Q F2(format)2.5 E F0 +309.6 Q F4(format)2.5 E F0 (results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F1(\\e)144 616.8 Q F0 -(an ASCII escape character \(033\))180 616.8 Q F1(\\h)144 628.8 Q F0 -(the hostname up to the \214rst `.)180 628.8 Q(')-.7 E F1(\\H)144 640.8 -Q F0(the hostname)180 640.8 Q F1(\\j)144 652.8 Q F0 -(the number of jobs currently managed by the shell)180 652.8 Q F1(\\l) -144 664.8 Q F0(the basename of the shell')180 664.8 Q 2.5(st)-.55 G -(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 676.8 Q F0(ne)180 676.8 Q -(wline)-.25 E F1(\\r)144 688.8 Q F0(carriage return)180 688.8 Q F1(\\s) -144 700.8 Q F0(the name of the shell, the basename of)180 700.8 Q F1($0) +(The braces are required)5 E F1(\\e)144 321.6 Q F0 +(an ASCII escape character \(033\))180 321.6 Q F1(\\h)144 333.6 Q F0 +(the hostname up to the \214rst `.)180 333.6 Q(')-.7 E F1(\\H)144 345.6 +Q F0(the hostname)180 345.6 Q F1(\\j)144 357.6 Q F0 +(the number of jobs currently managed by the shell)180 357.6 Q F1(\\l) +144 369.6 Q F0(the basename of the shell')180 369.6 Q 2.5(st)-.55 G +(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 381.6 Q F0(ne)180 381.6 Q +(wline)-.25 E F1(\\r)144 393.6 Q F0(carriage return)180 393.6 Q F1(\\s) +144 405.6 Q F0(the name of the shell, the basename of)180 405.6 Q F1($0) 2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1 -(\\t)144 712.8 Q F0(the current time in 24-hour HH:MM:SS format)180 -712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(36)192.055 E 0 Cg -EP -%%Page: 37 37 +(\\t)144 417.6 Q F0(the current time in 24-hour HH:MM:SS format)180 +417.6 Q F1(\\T)144 429.6 Q F0 +(the current time in 12-hour HH:MM:SS format)180 429.6 Q F1(\\@)144 +441.6 Q F0(the current time in 12-hour am/pm format)180 441.6 Q F1(\\A) +144 453.6 Q F0(the current time in 24-hour HH:MM format)180 453.6 Q F1 +(\\u)144 465.6 Q F0(the username of the current user)180 465.6 Q F1(\\v) +144 477.6 Q F0(the v)180 477.6 Q(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 489.6 Q F0(the release of)180 489.6 Q +F1(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 +(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 501.6 Q F0 .116 +(the current w)180 501.6 R .116(orking directory)-.1 F 2.616(,w)-.65 G +(ith)-2.616 E F3($HOME)2.616 E F0(abbre)2.366 E .115 +(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F3(PR) +180 513.6 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E +F1(\\W)144 525.6 Q F0(the basename of the current w)180 525.6 Q +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0 +(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 537.6 Q F0 +(the history number of this command)180 537.6 Q F1(\\#)144 549.6 Q F0 +(the command number of this command)180 549.6 Q F1(\\$)144 561.6 Q F0 +(if the ef)180 561.6 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E +F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 573.6 Q F4 +(nnn)A F0(the character corresponding to the octal number)180 573.6 Q F4 +(nnn)2.5 E F1(\\\\)144 585.6 Q F0 2.5(ab)180 585.6 S(ackslash)-2.5 E F1 +(\\[)144 597.6 Q F0(be)180 597.6 Q 1.257(gin a sequence of non-printing\ + characters, which could be used to embed a terminal)-.15 F +(control sequence into the prompt)180 609.6 Q F1(\\])144 621.6 Q F0 +(end a sequence of non-printing characters)180 621.6 Q .12 +(The command number and the history number are usually dif)108 638.4 R +.119(ferent: the history number of a command is its)-.25 F 1.585(positi\ +on in the history list, which may include commands restored from the hi\ +story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0 +(belo)108 662.4 Q .541(w\), while the command number is the position in\ + the sequence of commands e)-.25 F -.15(xe)-.15 G .54 +(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 674.4 R +.546(After the string is decoded, it is e)5.546 F .546 +(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F +.352(tion, arithmetic e)108 686.4 R .352(xpansion, and quote remo)-.15 F +-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 +(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852 +F(description of the)108 698.4 Q F1(shopt)2.5 E F0(command under)2.5 E +F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) +-.25 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(38)193.45 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(\\T)144 84 Q F0(the current time in 12-hour HH:MM:SS format)180 84 Q -F1(\\@)144 96 Q F0(the current time in 12-hour am/pm format)180 96 Q F1 -(\\A)144 108 Q F0(the current time in 24-hour HH:MM format)180 108 Q F1 -(\\u)144 120 Q F0(the username of the current user)180 120 Q F1(\\v)144 -132 Q F0(the v)180 132 Q(ersion of)-.15 E F1(bash)2.5 E F0 -(\(e.g., 2.00\))2.5 E F1(\\V)144 144 Q F0(the release of)180 144 Q F1 -(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 -(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 156 Q F0 .115(the current w) -180 156 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F2 9 -/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116 -(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F2(PR) -180 168 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E -F1(\\W)144 180 Q F0(the basename of the current w)180 180 Q -(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F2($HOME)2.5 E F0 -(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 192 Q F0 -(the history number of this command)180 192 Q F1(\\#)144 204 Q F0 -(the command number of this command)180 204 Q F1(\\$)144 216 Q F0 -(if the ef)180 216 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E -F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 228 Q/F3 10 -/Times-Italic@0 SF(nnn)A F0 -(the character corresponding to the octal number)180 228 Q F3(nnn)2.5 E -F1(\\\\)144 240 Q F0 2.5(ab)180 240 S(ackslash)-2.5 E F1(\\[)144 252 Q -F0(be)180 252 Q 1.257(gin a sequence of non-printing characters, which \ -could be used to embed a terminal)-.15 F -(control sequence into the prompt)180 264 Q F1(\\])144 276 Q F0 -(end a sequence of non-printing characters)180 276 Q .119 -(The command number and the history number are usually dif)108 292.8 R -.12(ferent: the history number of a command is its)-.25 F 1.585(positio\ -n in the history list, which may include commands restored from the his\ -tory \214le \(see)108 304.8 R F2(HIST)4.084 E(OR)-.162 E(Y)-.315 E F0 -(belo)108 316.8 Q .541(w\), while the command number is the position in\ - the sequence of commands e)-.25 F -.15(xe)-.15 G .541 -(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 328.8 R -.546(After the string is decoded, it is e)5.546 F .546 -(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F -.351(tion, arithmetic e)108 340.8 R .352(xpansion, and quote remo)-.15 F --.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 -(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852 -F(description of the)108 352.8 Q F1(shopt)2.5 E F0(command under)2.5 E -F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) --.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 369.6 Q F0 .151 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(READLINE)72 84 Q F0 .15 (This is the library that handles reading input when using an interacti) -108 381.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 -(\255\255noediting)2.65 E F0(option)2.65 E 1.208(is gi)108 393.6 R -.15 -(ve)-.25 G 3.708(na).15 G 3.708(ts)-3.708 G 1.208(hell in)-3.708 F -.2 -(vo)-.4 G 3.708(cation. Line).2 F 1.208 -(editing is also used when using the)3.708 F F13.709 E F0 1.209 -(option to the)3.709 F F1 -.18(re)3.709 G(ad).18 E F0 -.2(bu)3.709 G -3.709(iltin. By).2 F(def)108 405.6 Q .851 +108 96 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F/F2 10 +/Times-Bold@0 SF(\255\255noediting)2.651 E F0(option)2.651 E 1.209 +(is gi)108 108 R -.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209 +(hell in)-3.709 F -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208 +(editing is also used when using the)3.709 F F23.708 E F0 1.208 +(option to the)3.708 F F2 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G +3.708(iltin. By).2 F(def)108 120 Q .851 (ault, the line editing commands are similar to those of Emacs.)-.1 F -3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .851 -(ace is also)-.1 F -.2(av)108 417.6 S 3.35(ailable. Line)-.05 F .85 +3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 +(ace is also)-.1 F -.2(av)108 132 S 3.35(ailable. Line)-.05 F .85 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) --3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 -.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E -(\(see)108 429.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) --.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) --3.263 F 3.263(fl)-.25 G .763 -(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E -(emacs)108 441.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 -(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 458.4 Q +-3.35 F F2 .85(\255o emacs)3.35 F F0(or)3.35 E F2 .85(\255o vi)3.35 F F0 +.85(options to the)3.35 F F2(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E +(\(see)108 144 Q/F3 9/Times-Bold@0 SF .762(SHELL B)3.262 F(UIL)-.09 E +.762(TIN COMMANDS)-.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot) +-.8 G .763(urn of)-3.263 F 3.263(fl)-.25 G .763 +(ine editing after the shell is running, use the)-3.263 F F2(+o)3.263 E +(emacs)108 156 Q F0(or)2.5 E F2(+o vi)2.5 E F0(options to the)2.5 E F2 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F2(Readline Notation)87 172.8 Q F0 .463(In this section, the Emacs-style notation is used to denote k) -108 470.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) -2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A -1.153(e.g., C\255n means Control\255N.)108 482.4 R(Similarly)6.153 E(,) --.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) --.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152 -(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 494.4 S .83 -(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 -(y, M)-.05 H.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33 -(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831 -(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H -.831(his mak).65 F(es)-.1 E .6(ESC the)108 506.4 R F3 .6(meta pr)3.1 F -(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0 -.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp) --3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599 -(hen hold).15 F(the Control k)108 518.4 Q .3 -.15(ey w)-.1 H -(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) -.65 E .619(Readline commands may be gi)108 535.2 R -.15(ve)-.25 G 3.119 -(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G -.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho) -108 547.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti).4 G -3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619 +108 184.8 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1 +(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 196.8 R +(Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153 +(ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653 +(oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke) +108 208.8 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke) +3.591 G 2.131 -.65(y, M)-.05 H.65 E F4(x)A F0 .831(means ESC)3.331 F +F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13 +-.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65 +(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 220.8 R F4 .599 +(meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599 +(he combination M\255C\255)-5.599 F F4(x)A F0 .599 +(means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G +.6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F +(the Control k)108 232.8 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4 +(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62 +(Readline commands may be gi)108 249.6 R -.15(ve)-.25 G 3.119(nn).15 G +(umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619 +(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108 +261.6 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G +3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 1.018(acts in the forw)108 559.2 R 1.018 -(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C -1.018(auses that command to act in a backw)-3.518 F 1.019 -(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 571.2 Q +(ument to a command that).18 F 1.019(acts in the forw)108 273.6 R 1.018 +(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C +1.018(auses that command to act in a backw)-3.518 F 1.018 +(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 285.6 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .812(When a command is described as)108 588 R F3 +-.25 E -.65(w.)-.25 G .811(When a command is described as)108 302.4 R F4 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 -(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3 -(yank-)-3.311 E(ing)108 600 Q F0 2.529(\). The)B .029(killed te)2.529 F -.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 +(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812 +(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4 +(yank-)-3.312 E(ing)108 314.4 Q F0 2.529(\). The)B .029(killed te)2.529 +F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) --.15 F .567(which can be yank)108 612 R .567(ed all at once.)-.1 F .567 -(Commands which do not kill te)5.567 F .567 +-.15 F .567(which can be yank)108 326.4 R .567(ed all at once.)-.1 F +.567(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 624 Q F1(Readline Initialization)87 640.8 Q F0 .091(Readline is cus\ -tomized by putting commands in an initialization \214le \(the)108 652.8 -R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .092 -(name of this \214le)2.591 F .197(is tak)108 664.8 R .196(en from the v) --.1 F .196(alue of the)-.25 F F2(INPUTRC)2.696 E F0 -.25(va)2.446 G +108 338.4 Q F2(Readline Initialization)87 355.2 Q F0 .091(Readline is c\ +ustomized by putting commands in an initialization \214le \(the)108 +367.2 R F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 +(name of this \214le)2.591 F .196(is tak)108 379.2 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F3(INPUTRC)2.696 E F0 -.25(va)2.446 G 2.696(riable. If).25 F .196(that v)2.696 F .196 -(ariable is unset, the def)-.25 F .196(ault is)-.1 F F3(~/.inputr)2.696 -E(c)-.37 E F0 5.196(.W).31 G .196(hen a)-5.196 F 1.034(program which us\ +(ariable is unset, the def)-.25 F .196(ault is)-.1 F F4(~/.inputr)2.696 +E(c)-.37 E F0 5.196(.W).31 G .197(hen a)-5.196 F 1.034(program which us\ es the readline library starts up, the initialization \214le is read, a\ -nd the k)108 676.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25 -(va)108 688.8 S 1.15(riables are set.).25 F 1.15(There are only a fe) -6.15 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.149 -(wed in the readline initialization \214le.)-.25 F(Blank)6.149 E .736 -(lines are ignored.)108 700.8 R .737(Lines be)5.737 F .737 -(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737 -(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .737 -(indicate conditional)3.237 F 2.5(constructs. Other)108 712.8 R +nd the k)108 391.2 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 +(va)108 403.2 S 1.149(riables are set.).25 F 1.149(There are only a fe) +6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15 +(wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737 +(lines are ignored.)108 415.2 R .737(Lines be)5.737 F .737 +(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737 +(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736 +(indicate conditional)3.236 F 2.5(constructs. Other)108 427.2 R (lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E -(ariable settings.)-.25 E .987(The def)108 729.6 R .987(ault k)-.1 F --.15(ey)-.1 G .987(-bindings may be changed with an).15 F F3(inputr) -3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 -(programs that use this library may)3.487 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(37)192.055 E 0 Cg EP -%%Page: 38 38 +(ariable settings.)-.25 E .986(The def)108 444 R .986(ault k)-.1 F -.15 +(ey)-.1 G .987(-bindings may be changed with an).15 F F4(inputr)3.497 E +(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 +(programs that use this library may)3.487 F(add their o)108 456 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 472.8 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 489.6 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(or)108 501.6 Q(C\255Meta\255u: uni)144 +513.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 525.6 +Q F4(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G +(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4 +(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo) +108 542.4 R 1.261(wing symbolic character names are recognized:)-.25 F +F4 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4 +(ESC)3.761 E F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0 +(,).73 E F4(RET)3.76 E F0(,)1.27 E F4(RETURN)108 554.4 Q F0(,)1.1 E F4 +(SPC)2.5 E F0(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G +(nd)-2.5 E F4 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 +(In addition to command names, readline allo)108 571.2 R .209(ws k)-.25 +F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 +(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) +-.1 H(s).15 E(pressed \(a)108 583.2 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2 +(Readline K)87 600 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 612 R .666 -.15(ey b)-.1 H .366 +(indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366 +(\214le is simple.)3.176 F .366(All that is required is the name of the) +5.366 F .263(command or the te)108 624 R .264(xt of a macro and a k)-.15 +F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.).15 F +.264(The name may be speci-)5.264 F .853(\214ed in one of tw)108 636 R +3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H +.853(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4 +(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 +F -.15(ey)-.1 G(sequence.)108 648 Q .16(When using the form)108 664.8 R +F2 -.1(ke)2.66 G(yname).1 E F0(:)A F4(function\255name).833 E F0(or)2.66 +E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161 +(is the name of a k)2.84 F .461 -.15(ey s)-.1 H .161(pelled out in Eng-) +.15 F 2.5(lish. F)108 676.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) +144 700.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E +(Meta-Rubout: backw)144 712.8 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(39)193.45 E 0 Cg EP +%%Page: 40 40 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(add their o)108 84 -Q(wn commands and bindings.)-.25 E -.15(Fo)108 100.8 S 2.5(re).15 G -(xample, placing)-2.65 E(M\255Control\255u: uni)144 117.6 Q -.15(ve)-.25 -G(rsal\255ar).15 E(gument)-.18 E(or)108 129.6 Q(C\255Meta\255u: uni)144 -141.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 153.6 -Q/F1 10/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G -(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G -(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument) --.37 E F0(.).68 E 1.26(The follo)108 170.4 R 1.261 -(wing symbolic character names are recognized:)-.25 F F1 -.4(RU)3.761 G -(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1(ESC)3.761 E F0(,).72 -E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0(,).73 E F1(RET)3.761 E -F0(,)1.27 E F1(RETURN)108 182.4 Q F0(,)1.1 E F1(SPC)2.5 E F0(,).72 E F1 -(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F1 -.5(TA)2.5 G -(B).5 E F0(.).27 E .209(In addition to command names, readline allo)108 -199.2 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G -2.709(eb)-2.709 G .209(ound to a string that is inserted when the k) --2.709 F .509 -.15(ey i)-.1 H(s).15 E(pressed \(a)108 211.2 Q F1(macr) -2.5 E(o)-.45 E F0(\).)A/F2 10/Times-Bold@0 SF(Readline K)87 228 Q -(ey Bindings)-.25 E F0 .366(The syntax for controlling k)108 240 R .666 --.15(ey b)-.1 H .366(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 -.366(\214le is simple.)3.176 F .366 -(All that is required is the name of the)5.366 F .264(command or the te) -108 252 R .264(xt of a macro and a k)-.15 F .564 -.15(ey s)-.1 H .264 -(equence to which it should be bound.).15 F .263(The name may be speci-) -5.264 F .853(\214ed in one of tw)108 264 R 3.353(ow)-.1 G .853 -(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 -(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr) -3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 -(ey)-.1 G(sequence.)108 276 Q .161(When using the form)108 292.8 R F2 --.1(ke)2.661 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)2.661 -E F1(macr)2.661 E(o)-.45 E F0(,)A F1 -.1(ke)2.661 G(yname)-.2 E F0 .16 -(is the name of a k)2.84 F .46 -.15(ey s)-.1 H .16(pelled out in Eng-) -.15 F 2.5(lish. F)108 304.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) -144 328.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E -(Meta-Rubout: backw)144 340.8 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 352.8 Q .698(In the abo)108 369.6 R .998 -.15 -(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698 -(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G -(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 -(is bound to the func-)3.728 F(tion)108 381.6 Q F2 -(backward\255kill\255w)2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1 -(C\255o)2.599 E F0 .258(is bound to run the macro e)2.939 F .258 -(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -393.6 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .055(In the second form,)108 410.4 R F2("k)2.555 -E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr) -2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 -(fers from)-.25 F F2 -.1(ke)2.556 G(yname).1 E F0(abo)2.556 E .356 -.15 -(ve i)-.15 H 2.556(nt).15 G .056(hat strings)-2.556 F 1.284 -(denoting an entire k)108 422.4 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .699(In the abo) +108 84 R .998 -.15(ve ex)-.15 H(ample,).15 E/F1 10/Times-Italic@0 SF +(C\255u)3.038 E F0 .698(is bound to the function)3.448 F/F2 10 +/Times-Bold@0 SF(uni)3.198 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E +F0(,)A F1(M\255DEL)3.878 E F0 .698(is bound to the func-)3.728 F(tion) +108 96 Q F2(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd) +-2.758 E F1(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F +.259(xpressed on the right hand side \(that is, to)-.15 F(insert the te) +108 108 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 124.8 R F2("k)2.556 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) +2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 +(denoting an entire k)108 136.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .385(GNU Emacs style k)108 434.4 R .685 -.15(ey e)-.1 H -.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .386 -(xample, b)-.15 F .386(ut the symbolic character names)-.2 F -(are not recognized.)108 446.4 Q("\\C\255u": uni)144 470.4 Q -.15(ve) +(Some)6.284 E .386(GNU Emacs style k)108 148.8 R .686 -.15(ey e)-.1 H +.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 +(xample, b)-.15 F .385(ut the symbolic character names)-.2 F +(are not recognized.)108 160.8 Q("\\C\255u": uni)144 184.8 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 482.4 Q -("\\e[11~": "Function K)144 494.4 Q .3 -.15(ey 1)-.25 H(").15 E .315 -(In this e)108 511.2 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag) -3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 196.8 Q +("\\e[11~": "Function K)144 208.8 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 225.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag) +3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 -.314(is bound to the func-)3.544 F(tion)108 523.2 Q F2 -.18(re)2.5 G +.315(is bound to the func-)3.545 F(tion)108 237.6 Q F2 -.18(re)2.5 G .18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 (ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 (Function Key 1)2.5 E F0(.)A -(The full set of GNU Emacs style escape sequences is)108 540 Q F2 -<5c43ad>144 552 Q F0(control pre\214x)180 552 Q F2<5c4dad>144 564 Q F0 -(meta pre\214x)180 564 Q F2(\\e)144 576 Q F0(an escape character)180 576 -Q F2(\\\\)144 588 Q F0(backslash)180 588 Q F2(\\")144 600 Q F0 -(literal ")180 600 Q F2<5c08>144 612 Q F0(literal \010)180 612 Q(In add\ -ition to the GNU Emacs style escape sequences, a second set of backslas\ -h escapes is a)108 628.8 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 640.8 -Q F0(alert \(bell\))180 640.8 Q F2(\\b)144 652.8 Q F0(backspace)180 -652.8 Q F2(\\d)144 664.8 Q F0(delete)180 664.8 Q F2(\\f)144 676.8 Q F0 -(form feed)180 676.8 Q F2(\\n)144 688.8 Q F0(ne)180 688.8 Q(wline)-.25 E -F2(\\r)144 700.8 Q F0(carriage return)180 700.8 Q F2(\\t)144 712.8 Q F0 -(horizontal tab)180 712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 -E(38)192.055 E 0 Cg EP -%%Page: 39 39 +(The full set of GNU Emacs style escape sequences is)108 254.4 Q F2 +<5c43ad>144 266.4 Q F0(control pre\214x)180 266.4 Q F2<5c4dad>144 278.4 +Q F0(meta pre\214x)180 278.4 Q F2(\\e)144 290.4 Q F0 +(an escape character)180 290.4 Q F2(\\\\)144 302.4 Q F0(backslash)180 +302.4 Q F2(\\")144 314.4 Q F0(literal ")180 314.4 Q F2<5c08>144 326.4 Q +F0(literal \010)180 326.4 Q(In addition to the GNU Emacs style escape s\ +equences, a second set of backslash escapes is a)108 343.2 Q -.25(va)-.2 +G(ilable:).25 E F2(\\a)144 355.2 Q F0(alert \(bell\))180 355.2 Q F2(\\b) +144 367.2 Q F0(backspace)180 367.2 Q F2(\\d)144 379.2 Q F0(delete)180 +379.2 Q F2(\\f)144 391.2 Q F0(form feed)180 391.2 Q F2(\\n)144 403.2 Q +F0(ne)180 403.2 Q(wline)-.25 E F2(\\r)144 415.2 Q F0(carriage return)180 +415.2 Q F2(\\t)144 427.2 Q F0(horizontal tab)180 427.2 Q F2(\\v)144 +439.2 Q F0 -.15(ve)180 439.2 S(rtical tab).15 E F2(\\)144 451.2 Q F1 +(nnn)A F0(the eight-bit character whose v)180 451.2 Q +(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0 +(\(one to three digits\))2.5 E F2(\\x)144 463.2 Q F1(HH)A F0 +(the eight-bit character whose v)180 463.2 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142(When entering the te)108 +480 R 1.141(xt of a macro, single or double quotes must be used to indi\ +cate a macro de\214nition.)-.15 F .089(Unquoted te)108 492 R .089 +(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089 +F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F -.15(ve) +-.15 G(are e)108 504 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E +2.5(yo)-.15 G(ther character in the macro te)-2.5 E +(xt, including " and \010.)-.15 E F2(Bash)108 520.8 Q F0(allo)2.93 E .43 +(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429 +(indings to be displayed or modi\214ed with the).15 F F2(bind)2.929 E F0 +-.2(bu)2.929 G .429(iltin command.).2 F .045 +(The editing mode may be switched during interacti)108 532.8 R .345 -.15 +(ve u)-.25 H .046(se by using the).15 F F22.546 E F0 .046 +(option to the)2.546 F F2(set)2.546 E F0 -.2(bu)2.546 G .046 +(iltin command).2 F(\(see)108 544.8 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E +(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 +(Readline V)87 561.6 Q(ariables)-.92 E F0 .044(Readline has v)108 573.6 +R .043(ariables that can be used to further customize its beha)-.25 F +(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 +(riable may be set in the).25 F F1(inpu-)2.553 E(tr)108 585.6 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F2(set)144 602.4 Q F1 +(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 +619.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F +(alues)-.25 E F2(On)3.29 E F0(or)3.29 E F2(Off)3.29 E F0 .79 +(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-) +5.79 E .449(nized v)108 631.2 R .448(ariable names are ignored.)-.25 F +.448(When a v)5.448 F .448(ariable v)-.25 F .448 +(alue is read, empty or null v)-.25 F .448(alues, "on" \(case-insensi-) +-.25 F(ti)108 643.2 Q -.15(ve)-.25 G .467(\), and "1" are equi).15 F +-.25(va)-.25 G .468(lent to).25 F F2(On)2.968 E F0 5.468(.A)C .468 +(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468 +(lent to).25 F F2(Off)2.968 E F0 5.468(.T)C .468(he v)-5.468 F .468 +(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 655.2 S(lues are:) +.25 E F2(bell\255style \(audible\))108 672 Q F0 .011 +(Controls what happens when readline w)144 684 R .011 +(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F2(none)2.51 +E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 +(rings the bell.)144 696 R .94(If set to)5.94 F F2(visible)3.44 E F0 +3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) +-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A +(readline attempts to ring the terminal')144 708 Q 2.5(sb)-.55 G(ell.) +-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(40)193.45 E 0 Cg EP +%%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\v)144 84 Q F0 -.15(ve)180 84 S(rtical tab).15 E F1(\\)144 96 Q/F2 -10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 96 Q -(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(one to three digits\))2.5 E F1(\\x)144 108 Q F2(HH)A F0 -(the eight-bit character whose v)180 108 Q(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.141(When entering the te)108 -124.8 R 1.141(xt of a macro, single or double quotes must be used to in\ -dicate a macro de\214nition.)-.15 F .09(Unquoted te)108 136.8 R .09 -(xt is assumed to be a function name.)-.15 F .089(In the macro body) -5.089 F 2.589(,t)-.65 G .089(he backslash escapes described abo)-2.589 F --.15(ve)-.15 G(are e)108 148.8 Q 2.5(xpanded. Backslash)-.15 F -(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E -(xt, including " and \010.)-.15 E F1(Bash)108 165.6 Q F0(allo)2.929 E -.429(ws the current readline k)-.25 F .729 -.15(ey b)-.1 H .429 -(indings to be displayed or modi\214ed with the).15 F F1(bind)2.93 E F0 --.2(bu)2.93 G .43(iltin command.).2 F .046 -(The editing mode may be switched during interacti)108 177.6 R .346 -.15 -(ve u)-.25 H .046(se by using the).15 F F12.545 E F0 .045 -(option to the)2.545 F F1(set)2.545 E F0 -.2(bu)2.545 G .045 -(iltin command).2 F(\(see)108 189.6 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E -(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -(Readline V)87 206.4 Q(ariables)-.92 E F0 .043(Readline has v)108 218.4 -R .043(ariables that can be used to further customize its beha)-.25 F -(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 -(riable may be set in the).25 F F2(inpu-)2.554 E(tr)108 230.4 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 247.2 Q F2 -(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -264 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) --.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29 -F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .448(nized v) -108 276 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F -.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .449 -(alues, "on" \(case-insensi-)-.25 F(ti)108 288 Q -.15(ve)-.25 G .468 -(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) -2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 -F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467 -(he v)-5.468 F .467(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 -300 S(lues are:).25 E F1(bell\255style \(audible\))108 316.8 Q F0 .01 -(Controls what happens when readline w)144 328.8 R .011 -(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) -2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E -.94(rings the bell.)144 340.8 R .94(If set to)5.94 F F1(visible)3.44 E -F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25 -(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0 -(,)A(readline attempts to ring the terminal')144 352.8 Q 2.5(sb)-.55 G -(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 364.8 Q F0 -.055(If set to)144 376.8 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\ -empts to bind the control characters treated specially by the k)-2.555 F -(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 388.8 Q -.15 -(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) --.25 G(lents.).25 E F1(blink\255matching\255par)108 400.8 Q(en \(Off\)) --.18 E F0 .21(If set to)144 412.8 R F1(On)2.71 E F0 2.71(,r)C .21 +SF(bind\255tty\255special\255chars \(On\))108 84 Q F0 .056(If set to)144 +96 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempts to bind the cont\ +rol characters treated specially by the k)-2.556 F(ernel')-.1 E 2.555 +(st)-.55 G(ermi-)-2.555 E(nal dri)144 108 Q -.15(ve)-.25 G 2.5(rt).15 G +2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1 +(blink\255matching\255par)108 120 Q(en \(Off\))-.18 E F0 .21(If set to) +144 132 R F1(On)2.71 E F0 2.71(,r)C .21 (eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 (he cursor to an opening parenthesis when a closing).15 F -(parenthesis is inserted.)144 424.8 Q F1(color)108 436.8 Q +(parenthesis is inserted.)144 144 Q F1(color)108 156 Q (ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) -144 448.8 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\ -eadline displays the common pre\214x of the set of possible)-3.015 F -2.936(completions using a dif)144 460.8 R 2.936(ferent color)-.25 F -7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935 -(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 472.8 Q -F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 484.8 Q -(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 496.8 R F1(On)4.079 E -F0 4.079(,r)C 1.579(eadline displays possible completions using dif) --4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 -(type. The)144 508.8 R(color de\214nitions are tak)2.5 E(en from the v) --.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 -E(ariable.)-.25 E F1(comment\255begin \(`)108 520.8 Q(`#')-.63 E('\)) --.63 E F0 .885(The string that is inserted when the readline)144 532.8 R -F1(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G -3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 544.8 Q F1 +144 168 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\ +dline displays the common pre\214x of the set of possible)-3.015 F 2.935 +(completions using a dif)144 180 R 2.935(ferent color)-.25 F 7.936(.T) +-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936 +(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 192 Q F0 +(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 204 Q +(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 216 R F1(On)4.08 E F0 +4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F +1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 +228 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the) +-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E +F1(comment\255begin \(`)108 240 Q(`#')-.63 E('\))-.63 E F0 .884 +(The string that is inserted when the readline)144 252 R F1 +(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G +3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 264 Q F1 (M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 -(in vi command mode.)2.5 E F1(completion\255display\255width \(-1\))108 -556.8 Q F0 1.453(The number of screen columns used to display possible \ -matches when performing completion.)144 568.8 R .194(The v)144 580.8 R +(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\)) +108 276 Q F0 1.453(The number of screen columns used to display possibl\ +e matches when performing completion.)144 288 R .193(The v)144 300 R .193(alue is ignored if it is less than 0 or greater than the terminal \ -screen width.)-.25 F 2.693(Av)5.193 G .193(alue of 0 will)-2.943 F -(cause matches to be displayed one per line.)144 592.8 Q(The def)5 E -(ault v)-.1 E(alue is -1.)-.25 E F1(completion\255ignor)108 604.8 Q -(e\255case \(Off\))-.18 E F0(If set to)144 616.8 Q F1(On)2.5 E F0 2.5 -(,r)C(eadline performs \214lename matching and completion in a case\255\ -insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 -(completion\255map\255case \(Off\))108 628.8 Q F0 .093(If set to)144 -640.8 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor) -2.593 E(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F -.093(yphens \()-.05 F F2A F0 2.593(\)a)C .094(nd underscores)-2.593 -F(\()144 652.8 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va) --.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 -H(lename matching and completion.).15 E F1(completion\255pr)108 664.8 Q -(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\ -ers of the common pre\214x of a list of possible completions that is di\ -splayed)144 676.8 R 1.274(without modi\214cation.)144 688.8 R 1.274 -(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x) --.25 F 1.275(es longer than this)-.15 F -.25(va)144 700.8 S(lue are rep\ -laced with an ellipsis when displaying possible completions.).25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(39)192.055 E 0 Cg EP -%%Page: 40 40 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(completion\255query\255items \(100\))108 84 Q F0 .53 -(This determines when the user is queried about vie)144 96 R .529 -(wing the number of possible completions gen-)-.25 F .56(erated by the) -144 108 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F -.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) --.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 120 R +screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F +(cause matches to be displayed one per line.)144 312 Q(The def)5 E +(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 324 Q +(e\255case \(Off\))-.18 E F0(If set to)144 336 Q F1(On)2.5 E F0 2.5(,r)C +(eadline performs \214lename matching and completion in a case\255insen\ +siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 +(completion\255map\255case \(Off\))108 348 Q F0 .094(If set to)144 360 R +F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E +(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093 +(yphens \()-.05 F/F2 10/Times-Italic@0 SFA F0 2.593(\)a)C .093 +(nd underscores)-2.593 F(\()144 372 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G +(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E +.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1 +(completion\255pr)108 384 Q(e\214x\255display\255length \(0\))-.18 E F0 +.829(The length in characters of the common pre\214x of a list of possi\ +ble completions that is displayed)144 396 R 1.275 +(without modi\214cation.)144 408 R 1.275(When set to a v)6.275 F 1.274 +(alue greater than zero, common pre\214x)-.25 F 1.274 +(es longer than this)-.15 F -.25(va)144 420 S(lue are replaced with an \ +ellipsis when displaying possible completions.).25 E F1 +(completion\255query\255items \(100\))108 432 Q F0 .529 +(This determines when the user is queried about vie)144 444 R .53 +(wing the number of possible completions gen-)-.25 F .561(erated by the) +144 456 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061 +F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v) +-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 468 R .783(If the number of possible completions is greater than or equal to \ -the v)5.783 F .782(alue of this)-.25 F -.25(va)144 132 S .237 +the v)5.782 F .783(alue of this)-.25 F -.25(va)144 480 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(on the terminal.)144 144 Q F1(con)108 156 -Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 168 R F1(On) -3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 G .613 -(rt characters with the eighth bit set to an ASCII k).15 F .912 -.15 -(ey s)-.1 H .612(equence by).15 F .541 +.237(re simply listed)-2.737 F(on the terminal.)144 492 Q F1(con)108 504 +Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 516 R F1(On) +3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613 +(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15 +(ey s)-.1 H .613(equence by).15 F .541 (stripping the eighth bit and pre\214xing an escape character \(in ef) -144 180 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF -.542(meta pr)3.042 F(e-)-.37 E<8c78>144 192 Q F0 2.5(\). The)B(def)2.5 E -(ault is)-.1 E F2(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E -F2(Of)2.5 E(f)-.18 E F0(if the locale contains eight-bit characters.)2.5 -E F1(disable\255completion \(Off\))108 204 Q F0 .038(If set to)144 216 R -F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +144 528 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F +(e-)-.37 E<8c78>144 540 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2 +(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f) +-.18 E F0(if the locale contains eight-bit characters.)2.5 E F1 +(disable\255completion \(Off\))108 552 Q F0 .038(If set to)144 564 R F1 +(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 (ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 228 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(echo\255contr)108 240 Q(ol\255characters \(On\))-.18 E F0 1.21 -(When set to)144 252 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 -(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 +144 576 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 588 Q(ol\255characters \(On\))-.18 E F0 1.211 +(When set to)144 600 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G +1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 264 Q -.15(ey)-.1 G -(board.).15 E F1(editing\255mode \(emacs\))108 276 Q F0 .142 -(Controls whether readline be)144 288 R .141(gins with a set of k)-.15 F -.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 -(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 -(can be set to either)144 300 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(enable\255brack)108 312 Q(eted\255paste \(Off\))-.1 E F0 1.221 -(When set to)144 324 R F1(On)3.721 E F0 3.721(,r)C 1.221 +(corresponding to a signal generated from the k)144 612 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 624 Q F0 .141 +(Controls whether readline be)144 636 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0 +(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0 +(can be set to either)144 648 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(emacs\255mode\255string \(@\))108 660 Q F0 .518(If the)144 672 +R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G +.517(riable is enabled, this string is displayed immediately before the) +.25 F .622 +(last line of the primary prompt when emacs editing mode is acti)144 684 +R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F +.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 696 S 3.34(yb)-.05 G +.839(inding, so the standard set of meta- and control pre\214x)-3.34 F +.839(es and backslash escape sequences is)-.15 F -.2(av)144 708 S 2.798 +(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298 +(gin and end sequences of non-printing characters, which)-.15 F +(can be used to embed a terminal control sequence into the mode string.) +144 720 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(41)193.45 E 0 Cg +EP +%%Page: 42 42 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(enable\255brack)108 84 Q(eted\255paste \(Off\))-.1 E F0 1.222 +(When set to)144 96 R F1(On)3.721 E F0 3.721(,r)C 1.221 (eadline will con\214gure the terminal in a w)-3.721 F 1.221 (ay that will enable it to insert each)-.1 F .353 -(paste into the editing b)144 336 R(uf)-.2 E .353(fer as a single strin\ -g of characters, instead of treating each character as if)-.25 F .543 -(it had been read from the k)144 348 R -.15(ey)-.1 G 3.043(board. This) -.15 F .543(can pre)3.043 F -.15(ve)-.25 G .544 +(paste into the editing b)144 108 R(uf)-.2 E .353(fer as a single strin\ +g of characters, instead of treating each character as if)-.25 F .544 +(it had been read from the k)144 120 R -.15(ey)-.1 G 3.043(board. This) +.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 (nt pasted characters from being interpreted as).15 F(editing commands.) -144 360 Q F1(enable\255k)108 372 Q(eypad \(Off\))-.1 E F0 .893 -(When set to)144 384 R F1(On)3.393 E F0 3.393(,r)C .893 +144 132 Q F1(enable\255k)108 144 Q(eypad \(Off\))-.1 E F0 .892 +(When set to)144 156 R F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G -.893(pad when it is called.).15 F .892(Some sys-)5.893 F -(tems need this to enable the arro)144 396 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 408 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 420 R F1(On)3.14 E F0 3.14(,r)C .64 +.893(pad when it is called.).15 F .893(Some sys-)5.893 F +(tems need this to enable the arro)144 168 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(enable\255meta\255k)108 180 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 192 R F1(On)3.14 E F0 3.14(,r)C .64 (eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 (eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 432 Q +(he terminal claims to support).15 F(when it is called.)144 204 Q (On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H 2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 444 Q F0(If set to)144 456 Q F1(On)2.5 E F0 +(expand\255tilde \(Off\))108 216 Q F0(If set to)144 228 Q F1(On)2.5 E F0 2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) --.15 E(ord completion.)-.1 E F1(history\255pr)108 468 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 1.339(If set to)144 480 R F1(On) -3.839 E F0 3.839(,t)C 1.338(he history code attempts to place point at \ -the same location on each history line)-3.839 F(retrie)144 492 Q -.15 +-.15 E(ord completion.)-.1 E F1(history\255pr)108 240 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 252 R F1(On) +3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ +the same location on each history line)-3.838 F(retrie)144 264 Q -.15 (ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G (ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 -(history\255size \(unset\))108 504 Q F0 .948 -(Set the maximum number of history entries sa)144 516 R -.15(ve)-.2 G -3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .949 -(If set to zero, an)5.948 F 3.449(ye)-.15 G(xisting)-3.599 E .483 -(history entries are deleted and no ne)144 528 R 2.983(we)-.25 G .483 -(ntries are sa)-2.983 F -.15(ve)-.2 G 2.983(d. If).15 F .482(set to a v) -2.983 F .482(alue less than zero, the num-)-.25 F .277 -(ber of history entries is not limited.)144 540 R .277(By def)5.277 F -.278(ault, the number of history entries is set to the v)-.1 F .278 -(alue of)-.25 F(the)144 552 Q F1(HISTSIZE)3.411 E F0 .911(shell v)3.411 -F 3.411(ariable. If)-.25 F .911(an attempt is made to set)3.411 F F2 -(history\255size)3.41 E F0 .91(to a non-numeric v)3.41 F(alue,)-.25 E -(the maximum number of history entries will be set to 500.)144 564 Q F1 -(horizontal\255scr)108 576 Q(oll\255mode \(Off\))-.18 E F0 .448 -(When set to)144 588 R F1(On)2.948 E F0 2.948(,m)C(ak)-2.948 E .448 -(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449 +(history\255size \(unset\))108 276 Q F0 .949 +(Set the maximum number of history entries sa)144 288 R -.15(ve)-.2 G +3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 +(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 +(history entries are deleted and no ne)144 300 R 2.982(we)-.25 G .483 +(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) +2.983 F .483(alue less than zero, the num-)-.25 F .278 +(ber of history entries is not limited.)144 312 R .277(By def)5.278 F +.277(ault, the number of history entries is set to the v)-.1 F .277 +(alue of)-.25 F(the)144 324 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F +3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10 +/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v) +3.411 F(alue,)-.25 E +(the maximum number of history entries will be set to 500.)144 336 Q F1 +(horizontal\255scr)108 348 Q(oll\255mode \(Off\))-.18 E F0 .449 +(When set to)144 360 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 +(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ - ne)144 600 R(w)-.25 E(line.)144 612 Q F1(input\255meta \(Off\))108 624 -Q F0 1.061(If set to)144 636 R F1(On)3.561 E F0 3.561(,r)C 1.062(eadlin\ + ne)144 372 R(w)-.25 E(line.)144 384 Q F1(input\255meta \(Off\))108 396 +Q F0 1.062(If set to)144 408 R F1(On)3.562 E F0 3.562(,r)C 1.061(eadlin\ e will enable eight-bit input \(that is, it will not strip the eighth b\ -it from the)-3.561 F .336(characters it reads\), re)144 648 R -.05(ga) +it from the)-3.562 F .335(characters it reads\), re)144 420 R -.05(ga) -.15 G .335(rdless of what the terminal claims it can support.).05 F -.335(The name)5.335 F F1(meta\255\215ag)2.835 E F0(is)2.835 E 2.864(as) -144 660 S(ynon)-2.864 E .364(ym for this v)-.15 F 2.864(ariable. The) +.336(The name)5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as) +144 432 S(ynon)-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The) -.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864 -(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .365 -(if the locale contains)2.865 F(eight-bit characters.)144 672 Q F1 -(isear)108 684 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) +(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364 +(if the locale contains)2.864 F(eight-bit characters.)144 444 Q F1 +(isear)108 456 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) -.63 E F0 .439(The string of characters that should terminate an increm\ -ental search without subsequently e)144 696 R -.15(xe)-.15 G(cut-).15 E -.934(ing the character as a command.)144 708 R .935(If this v)5.935 F -.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 -(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 720 Q F2 -(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(40)192.055 E 0 Cg EP -%%Page: 41 41 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(ke)108 84 S(ymap \(emacs\)).1 E F0 2.021 -(Set the current readline k)144 96 R -.15(ey)-.1 G 4.521(map. The).15 F -2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021 -(map names is).15 F/F2 10/Times-Italic@0 SF 2.02 -(emacs, emacs\255standar)4.52 F(d,)-.37 E .068 -(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 108 R F0 2.568(,a)C +ental search without subsequently e)144 468 R -.15(xe)-.15 G(cut-).15 E +.935(ing the character as a command.)144 480 R .935(If this v)5.935 F +.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934 +(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 492 Q F2 +(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke) +108 504 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 516 +R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021 +(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021 +(emacs, emacs\255standar)4.521 F(d,)-.37 E .069 +(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 528 R F0 2.568(,a)C (nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068 (is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) -2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 120 R -.25(va)-.25 -G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C +2.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 540 R -.25(va)-.25 +G 1.543(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C 1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs) 4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1 -(editing\255mode)4.043 E F0(also)4.043 E(af)144 132 Q(fects the def)-.25 -E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -(emacs\255mode\255string \(@\))108 144 Q F0 .051(This string is display\ -ed immediately before the last line of the primary prompt when emacs ed\ -iting)144 156 R .293(mode is acti)144 168 R -.15(ve)-.25 G 5.293(.T).15 -G .293(he v)-5.293 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793 -(eak)-.1 G .593 -.15(ey b)-2.893 H .293 -(inding, so the standard set of meta- and control).15 F(pre\214x)144 180 -Q .601(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101 -(ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .602 -(gin and end)-.15 F .019(sequences of non-printing characters, which ca\ -n be used to embed a terminal control sequence into)144 192 R -(the mode string.)144 204 Q F1 -.1(ke)108 216 S(yseq\255timeout \(500\)) -.1 E F0 .367(Speci\214es the duration)144 228 R F2 -.37(re)2.867 G -(adline).37 E F0 .367(will w)2.867 F .367 -(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) --.1 H(equence).15 E 1.356(\(one that can form a complete k)144 240 R +(editing\255mode)4.044 E F0(also)4.044 E(af)144 552 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 564 S +(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 576 R +F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s) +-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 588 R 1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) --.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.355(an tak)-3.856 F 3.855(ea) --.1 G(dditional)-3.855 E .32(input to complete a longer k)144 252 R .62 +-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea) +-.1 G(dditional)-3.856 E .32(input to complete a longer k)144 600 R .62 -.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F -.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re) -2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 264 R .907 +2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 612 R .907 (ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 -(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .906 -(alue of)-.25 F .05(1000 means that)144 276 R F2 -.37(re)2.55 G(adline) +(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907 +(alue of)-.25 F .05(1000 means that)144 624 R F2 -.37(re)2.55 G(adline) .37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 -(less than or equal to zero, or to a non-numeric v)144 288 R(alue,)-.25 +(less than or equal to zero, or to a non-numeric v)144 636 R(alue,)-.25 E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 -(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) --2.551 E(to decide which k)144 300 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F1(mark\255dir)108 312 Q(ectories \(On\)) --.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,c)C +(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) +-2.552 E(to decide which k)144 648 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 660 Q(ectories \(On\)) +-.18 E F0(If set to)144 672 Q F1(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) -.15 E F1(mark\255modi\214ed\255lines \(Off\))108 336 Q F0(If set to)144 -348 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 684 Q F0(If set to)144 +696 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A F1(mark\255symlink)108 360 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 372 R F1(On)2.675 E F0 -2.675(,c)C .175 +(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(42)193.45 E 0 +Cg EP +%%Page: 43 43 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(mark\255symlink)108 84 Q(ed\255dir)-.1 E(ectories \(Off\))-.18 E F0 +.175(If set to)144 96 R F1(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 384 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 108 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 396 Q F0 .193(This v)144 408 R -.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 -(auses readline to match \214les whose names be)-2.693 F .192 -(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 -(\214les\) when performing \214lename completion.)144 420 R .456 +(match\255hidden\255\214les \(On\))108 120 Q F0 .192(This v)144 132 R +.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192 +(auses readline to match \214les whose names be)-2.692 F .193 +(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457 +(\214les\) when performing \214lename completion.)144 144 R .456 (If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 432 Q F1 -(menu\255complete\255display\255pr)108 444 Q(e\214x \(Off\))-.18 E F0 -1.586(If set to)144 456 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ +-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 156 Q F1 +(menu\255complete\255display\255pr)108 168 Q(e\214x \(Off\))-.18 E F0 +1.585(If set to)144 180 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ ion displays the common pre\214x of the list of possible completions) --4.086 F(\(which may be empty\) before c)144 468 Q -(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 480 Q F0 -.506(If set to)144 492 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ +-4.085 F(\(which may be empty\) before c)144 192 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 204 Q F0 +.507(If set to)144 216 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ display characters with the eighth bit set directly rather than as a me\ -ta-)-3.006 F(pre\214x)144 504 Q .885(ed escape sequence.)-.15 F .884 -(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C -.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .884 -(if the locale contains)3.384 F(eight-bit characters.)144 516 Q F1 -(page\255completions \(On\))108 528 Q F0 .808(If set to)144 540 R F1(On) -3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) -3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 +ta-)-3.007 F(pre\214x)144 228 Q .884(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(Of)3.384 E +(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F2(On) +3.384 E F0 .885(if the locale contains)3.384 F(eight-bit characters.)144 +240 Q F1(page\255completions \(On\))108 252 Q F0 .809(If set to)144 264 +R F1(On)3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2 +(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 552 Q F1 -(print\255completions\255horizontally \(Off\))108 564 Q F0 1.319 -(If set to)144 576 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\ -play completions with matches sorted horizontally in alphabetical)-3.819 -F(order)144 588 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 600 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .698(If set to)144 612 R F1(On)3.198 E F0 3.198(,r)C .699 +(tions at a time.)144 276 Q F1 +(print\255completions\255horizontally \(Off\))108 288 Q F0 1.318 +(If set to)144 300 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ +play completions with matches sorted horizontally in alphabetical)-3.818 +F(order)144 312 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 324 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .699(If set to)144 336 R F1(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 624 S +-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 348 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F1 -.18(re)144 636 S(adline) -.18 E F0(.)A F1(sho)108 648 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .303(This alters the def)144 660 R .303(ault beha)-.1 F .304 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 360 S(adline) +.18 E F0(.)A F1(sho)108 372 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 384 R .304(ault beha)-.1 F .304 (vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) -2.804 E F0 2.804(,w)C .304(ords which ha)-2.904 F .604 -.15(ve m)-.2 H +2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 672 R(bell.)144 684 Q F1 -(sho)108 696 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 -(This alters the def)144 708 R 5.345(ault beha)-.1 F 5.345 -(vior of the completion functions in a f)-.2 F 5.346(ashion similar to) --.1 F F1(sho)144 720 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C -4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 +isted immediately instead of ringing the)144 396 R(bell.)144 408 Q F1 +(sho)108 420 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 432 R 5.346(ault beha)-.1 F 5.345 +(vior of the completion functions in a f)-.2 F 5.345(ashion similar to) +-.1 F F1(sho)144 444 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(41)192.055 E 0 Cg EP -%%Page: 42 42 +(ore than one possible completion).15 F 1.04(without an)144 456 R 3.54 +(yp)-.15 G 1.039 +(ossible partial completion \(the possible completions don')-3.54 F +3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ +es to be listed immediately instead of ringing the bell.)144 468 Q F1 +(sho)108 480 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021 +(If set to)144 492 R F1(On)3.521 E F0 3.521(,a)C 1.022 +(dd a string to the be)-3.521 F 1.022 +(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F +(command, or vi insertion.)144 504 Q(The mode strings are user)5 E +(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1 +(skip\255completed\255text \(Off\))108 516 Q F0 .095(If set to)144 528 R +F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 +(ault completion beha)-.1 F .094 +(vior when inserting a single match into the line.)-.2 F(It')144 540 Q +2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 +(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 +F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ +the completion that match characters after point in the w)144 552 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 564 Q +(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 576 Q F0 .517(If the)144 +588 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G +.518(riable is enabled, this string is displayed immediately before the) +.25 F .475(last line of the primary prompt when vi editing mode is acti) +144 600 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475 +(The v)5.475 F(alue)-.25 E 1.235(is e)144 612 R 1.235(xpanded lik)-.15 F +3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236 +(inding, so the standard set of meta- and control pre\214x).15 F 1.236 +(es and backslash)-.15 F .315(escape sequences is a)144 624 R -.25(va) +-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F +.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ +an be used to embed a terminal control sequence into the mode string.) +144 636 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 648 Q F0 .517 +(If the)144 660 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 +-.25(va)3.017 G .518 +(riable is enabled, this string is displayed immediately before the).25 +F .186(last line of the primary prompt when vi editing mode is acti)144 +672 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v) +5.186 F .186(alue is)-.25 F -.15(ex)144 684 S 1.929(panded lik).15 F +4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929 +(inding, so the standard set of meta- and control pre\214x).15 F 1.93 +(es and backslash)-.15 F .315(escape sequences is a)144 696 R -.25(va) +-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F +.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\ +an be used to embed a terminal control sequence into the mode string.) +144 708 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(43)193.45 E 0 Cg +EP +%%Page: 44 44 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039(without an) -144 84 R 3.539(yp)-.15 G 1.039 -(ossible partial completion \(the possible completions don')-3.539 F -3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\ -s to be listed immediately instead of ringing the bell.)144 96 Q/F1 10 -/Times-Bold@0 SF(sho)108 108 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\)) --.18 E F0 1.019(If set to)144 120 R F1(On)3.519 E F0 3.519(,a)C 1.018 -(dd a character to the be)-3.519 F 1.018 -(ginning of the prompt indicating the editing mode: emacs)-.15 F -(\(@\), vi command \(:\) or vi insertion \(+\).)144 132 Q F1 -(skip\255completed\255text \(Off\))108 144 Q F0 .094(If set to)144 156 R -F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095 -(ault completion beha)-.1 F .095 -(vior when inserting a single match into the line.)-.2 F(It')144 168 Q -2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046 -(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1 -F .045(enabled, readline does not)2.545 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 180 R -1.395(ord being com-)-.1 F(pleted, so portions of the w)144 192 Q -(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(vi\255cmd\255mode\255string \(\(cmd\)\))108 204 Q F0 1.198(This string\ - is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 216 R .521(mode is acti)144 228 R .821 -.15(ve a)-.25 -H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25 -F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .822 -.15(ey b)-3.122 H .522 -(inding, so the standard).15 F .87(set of meta- and control pre\214x)144 -240 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G -3.369(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be) -144 252 R .386(gin and end sequences of non-printing characters, which \ -can be used to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 264 Q F1 -(vi\255ins\255mode\255string \(\(ins\)\))108 276 Q F0 1.198(This string\ - is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 288 R .782(mode is acti)144 300 R 1.083 -.15(ve a)-.25 -H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e) --.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H -.783(inding, so the standard).15 F .87 -(set of meta- and control pre\214x)144 312 R .869 -(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.369 -(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be)144 -324 R .386(gin and end sequences of non-printing characters, which can \ -be used to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 336 Q F1 -(visible\255stats \(Off\))108 348 Q F0 .847(If set to)144 360 R F1(On) +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(visible\255stats \(Off\))108 84 Q F0 .846(If set to)144 96 R F1(On) 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 (st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF (stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B -(when listing possible completions.)144 372 Q F1 -(Readline Conditional Constructs)87 388.8 Q F0 .05 -(Readline implements a f)108 400.8 R .05(acility similar in spirit to t\ -he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 412.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(when listing possible completions.)144 108 Q F1 +(Readline Conditional Constructs)87 124.8 Q F0 .05 +(Readline implements a f)108 136.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .096 +(which allo)108 148.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 (indings and v).15 F .096 -(ariable settings to be performed as the result of tests.)-.25 F .096 -(There are four parser)5.096 F(directi)108 424.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 441.6 Q F0(The)144 441.6 Q F1($if)2.962 -E F0 .462(construct allo)2.962 F .463(ws bindings to be made based on t\ -he editing mode, the terminal being used,)-.25 F .478 -(or the application using readline.)144 453.6 R .477(The te)5.477 F .477 -(xt of the test e)-.15 F .477 -(xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 465.6 Q F1(mode)144 482.4 Q F0(The)180 -482.4 Q F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 -(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 -(sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 494.4 R .565(may be used in conjunction with the)3.065 F -F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) -3.065 F .735(set bindings in the)180 506.4 R F2(emacs\255standar)3.235 E -(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 -(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 518.4 -Q F1(term)144 535.2 Q F0(The)180 535.2 Q F1(term=)3.197 E F0 .696 +(ariable settings to be performed as the result of tests.)-.25 F .097 +(There are four parser)5.096 F(directi)108 160.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 177.6 Q F0(The)144 177.6 Q F1($if)2.963 +E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ +he editing mode, the terminal being used,)-.25 F +(or the application using readline.)144 189.6 Q(The te)5 E +(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E +(,)-.4 E -.15(ex)146.5 201.6 S(tends to the end of the line; unless oth\ +erwise noted, no characters are required to isolate it.).15 E F1(mode) +144 218.4 Q F0(The)180 218.4 Q F1(mode=)3.711 E F0 1.211(form of the) +3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711 +(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F +3.065(mode. This)180 230.4 R .565(may be used in conjunction with the) +3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565 +(command, for instance, to)3.065 F .735(set bindings in the)180 242.4 R +F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx) +3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F +(out in emacs mode.)180 254.4 Q F1(term)144 271.2 Q F0(The)180 271.2 Q +F1(term=)3.197 E F0 .696 (form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 547.2 R +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 283.2 R .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 -(wo)3.154 G .654(rd on the right side of).1 F(the)180 559.2 Q F1(=)3.232 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 295.2 Q F1(=)3.232 E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\ minal and the portion of the terminal)-.05 F(name before the \214rst)180 -571.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +307.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 (to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 -2.5(,f).77 G(or instance.)-2.5 E F1(application)144 588 Q F0(The)180 600 -Q F1(application)3.003 E F0 .503 +2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 324 S(rsion).1 E F0(The) +180 336 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608 +(test may be used to perform comparisons ag)3.108 F .609 +(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 348 Q F1 -.1 +(ve)3.929 G(rsion).1 E F0 -.15(ex)3.929 G 1.428 +(pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.428 +(set of comparison operators)3.928 F(includes)180 360 Q F1(=)2.605 E F0 +2.605(,\()C(and)-2.605 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1 +(<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd) +-2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106 +(ersion number supplied on the right side)-.15 F 1.472 +(of the operator consists of a major v)180 372 R 1.471(ersion number) +-.15 F 3.971(,a)-.4 G 3.971(no)-3.971 G 1.471 +(ptional decimal point, and an)-3.971 F .766(optional minor v)180 384 R +.766(ersion \(e.g.,)-.15 F F1(7.1)3.266 E F0 .766(\). If the minor v)B +.766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.267 E F0(.)A +1.756(The operator may be separated from the string)180 396 R F1 -.1(ve) +4.255 G(rsion).1 E F0 1.755(and from the v)4.255 F 1.755(ersion number) +-.15 F(ar)180 408 Q(gument by whitespace.)-.18 E F1(application)144 +424.8 Q F0(The)180 436.8 Q F1(application)3.003 E F0 .503 (construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 -612 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +448.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .5(particular v)180 -624 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +460.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 (ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 -(ci\214c program.)180 636 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(ci\214c program.)180 472.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 -(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 648 Q -(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 672 Q F0 -(Bash)2.5 E 2.5(#Q)180 684 S(uote the current or pre)-2.5 E(vious w)-.25 -E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 696 Q F1($endif)180 708 Q -F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(42)192.055 E 0 Cg EP -%%Page: 43 43 +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 484.8 +Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 508.8 Q F0 +(Bash)2.5 E 2.5(#Q)180 520.8 S(uote the current or pre)-2.5 E(vious w) +-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 532.8 Q F1($endif)180 +544.8 Q F2(variable)144 561.6 Q F0(The)180 573.6 Q F2(variable)3.776 E +F0 1.276(construct pro)3.776 F 1.276 +(vides simple equality tests for readline v)-.15 F 1.277(ariables and v) +-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180 +585.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2 +(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079 +(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\ +or by whitespace; the operator may be separated from)180 597.6 R .13 +(the v)180 609.6 R .13(alue on the right hand side by whitespace.)-.25 F +.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F +(tested. Boolean v)180 621.6 Q(ariables must be tested ag)-.25 E +(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f) +-.18 E F0(.)A F1($endif)108 638.4 Q F0(This command, as seen in the pre) +144 638.4 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0 +(command.)2.5 E F1($else)108 655.2 Q F0(Commands in this branch of the) +144 655.2 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E +-.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 672 +Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356 +(es a single \214lename as an ar)-.1 F .357 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 696 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 +($include)144 720 Q F2(/etc/inputr)5.833 E(c)-.37 E F0(GNU Bash 5.0)72 +768 Q(2018 March 15)144.29 E(44)193.45 E 0 Cg EP +%%Page: 45 45 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e) --.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 -($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if) -2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356 -(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356 -(es a single \214lename as an ar)-.1 F .357 -(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 --.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 -E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37 -E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835 +SF(Sear)87 84 Q(ching)-.18 E F0 .835(Readline pro)108 96 R .835 (vides commands for searching through the command history \(see)-.15 F -/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E -.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q -(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E -(emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 -E .697(Incremental searches be)108 223.2 R .697 +/F2 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 108 Q +(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E/F3 10/Times-Italic@0 +SF(incr)2.51 E(emental)-.37 E F0(and)3.01 E F3(non-incr)2.5 E(emental) +-.37 E F0(.).51 E .697(Incremental searches be)108 124.8 R .697 (gin before the user has \214nished typing the search string.)-.15 F .698(As each character of the)5.698 F .113 -(search string is typed, readline displays the ne)108 235.2 R .112 +(search string is typed, readline displays the ne)108 136.8 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 E 5.112(.A)-.55 G(n)-5.112 E .542 -(incremental search requires only as man)108 247.2 R 3.042(yc)-.15 G +(incremental search requires only as man)108 148.8 R 3.042(yc)-.15 G .542(haracters as needed to \214nd the desired history entry)-3.042 F 5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224 -(acters present in the v)108 259.2 R .224(alue of the)-.25 F F1(isear) +(acters present in the v)108 160.8 R .224(alue of the)-.25 F F1(isear) 2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 (riable are used to terminate an incremental search.).25 F .66 -(If that v)108 271.2 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 172.8 R .66(ariable has not been assigned a v)-.25 F .66 (alue the Escape and Control-J characters will terminate an incre-)-.25 -F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\ +F .097(mental search.)108 184.8 R .096(Control-G will abort an incremen\ tal search and restore the original line.)5.097 F .096 (When the search is)5.096 F(terminated, the history entry containing th\ -e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214) -108 312 T 1.339(nd other matching entries in the history list, type Con\ -trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 -(search backw)108 324 R .675(ard or forw)-.1 F .675 +e search string becomes the current line.)108 196.8 Q 2.938 -.8(To \214) +108 213.6 T 1.339(nd other matching entries in the history list, type C\ +ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 225.6 R .675(ard or forw)-.1 F .675 (ard in the history for the ne)-.1 F .674 (xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674 -(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H -.174 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 237.6 R .474 -.15(ey s)-.1 +H .174 (equence bound to a readline command will terminate the search and e).15 F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E -.541(instance, a)108 348 R F2(ne)3.041 E(wline)-.15 E F0 .541 +.541(instance, a)108 249.6 R F3(ne)3.041 E(wline)-.15 E F0 .541 (will terminate the search and accept the line, thereby e)3.041 F -.15 -(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q -.653(Readline remembers the last incremental search string.)108 376.8 R -.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 261.6 +Q .653(Readline remembers the last incremental search string.)108 278.4 +R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) -3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E -(ing characters de\214ning a ne)108 388.8 Q 2.5(ws)-.25 G +(ing characters de\214ning a ne)108 290.4 Q 2.5(ws)-.25 G (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) -2.5 E .567(Non-incremental searches read the entire search string befo\ -re starting to search for matching history lines.)108 405.6 R(The searc\ +re starting to search for matching history lines.)108 307.2 R(The searc\ h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391 -(The follo)108 446.4 R 1.391 +rent line.)108 319.2 Q F1(Readline Command Names)87 336 Q F0 1.391 +(The follo)108 348 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F -3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 R .122 +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 360 R .122 (names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 -(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E -F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E +(the follo)2.621 F(wing)-.25 E(descriptions,)108 372 Q F3(point)3.41 E +F0 .91(refers to the current cursor position, and)3.41 F F3(mark)3.411 E F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) -.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5 +.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 384 Q F0 2.5 (command. The)2.5 F(te)2.5 E -(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3 +(xt between the point and mark is referred to as the)-.15 E F3 -.37(re) +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 400.8 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 412.8 Q F0(Mo)144 424.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 -(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15 +(end\255of\255line \(C\255e\))108 436.8 Q F0(Mo)144 448.8 Q .3 -.15 (ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 -559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f) +460.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 472.8 Q .3 -.15(ve f) -.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 -(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b) --.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w) -.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw) +(backward\255char \(C\255b\))108 484.8 Q F0(Mo)144 496.8 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 508.8 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 520.8 Q .823 -.15(ve f)-.15 H(orw) .15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) -.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q -(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41 +(ters and digits\).)144 532.8 Q F1(backward\255w)108 544.8 Q +(ord \(M\255b\))-.1 E F0(Mo)144 556.8 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F -(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2 -Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H +(characters \(letters and digits\).)144 568.8 Q F1(shell\255f)108 580.8 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 592.8 Q .784 -.15(ve f)-.15 H (orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 (ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) --.8 F(ters.)144 703.2 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(43)192.055 E 0 Cg EP -%%Page: 44 44 +-.8 F(ters.)144 604.8 Q F1(shell\255backward\255w)108 616.8 Q(ord)-.1 E +F0(Mo)144 628.8 Q .908 -.15(ve b)-.15 H .609 +(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 +(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F +(metacharacters.)144 640.8 Q F1(pr)108 652.8 Q -.15(ev)-.18 G +(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 664.8 R +1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891 +(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89 +(ysical screen line.)-.05 F .87(This will not ha)144 676.8 R 1.17 -.15 +(ve t)-.2 H .87(he desired ef).15 F .87 +(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G +3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 688.8 Q(ysical line or \ +if point is not greater than the length of the prompt plus the screen w\ +idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638 +(Attempt to mo)144 712.8 R .938 -.15(ve p)-.15 H .638 +(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F +.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha) +144 724.8 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009 +(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G +2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(45)193.45 E 0 Cg EP +%%Page: 46 46 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15 -(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609 -(vious w)-.25 F 3.109(ord. W)-.1 F .609 -(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q -F1(clear\255scr)108 120 Q(een \(C\255l\))-.18 E F0 .993 -(Clear the screen lea)144 132 R .993 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .772(line or if t\ +he length of the current Readline line is not greater than the length o\ +f the prompt plus)144 84 R(the screen width.)144 96 Q/F1 10/Times-Bold@0 +SF(clear\255scr)108 108 Q(een \(C\255l\))-.18 E F0 .993 +(Clear the screen lea)144 120 R .993 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G .993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 144 Q F1 -.18(re)108 156 +(current line without clearing the screen.)144 132 Q F1 -.18(re)108 144 S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -168 Q F1(Commands f)87 184.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 196.8 Q(n\))-.15 E F0 .158 -(Accept the line re)144 208.8 R -.05(ga)-.15 G .158 +156 Q F1(Commands f)87 172.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 184.8 Q(n\))-.15 E F0 .159 +(Accept the line re)144 196.8 R -.05(ga)-.15 G .159 (rdless of where the cursor is.).05 F .158(If this line is non-empty) -5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 -(according to the state of the)144 220.8 R/F2 9/Times-Bold@0 SF +5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 +(according to the state of the)144 208.8 R/F2 9/Times-Bold@0 SF (HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F .699(the line is a modi\214ed history line, then)3.199 F -(restore the history line to its original state.)144 232.8 Q F1(pr)108 -244.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 256.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 268.8 -Q F0(Fetch the ne)144 280.8 Q(xt command from the history list, mo)-.15 +(restore the history line to its original state.)144 220.8 Q F1(pr)108 +232.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 244.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 256.8 +Q F0(Fetch the ne)144 268.8 Q(xt command from the history list, mo)-.15 E(ving forw)-.15 E(ard in the list.)-.1 E F1 -(beginning\255of\255history \(M\255<\))108 292.8 Q F0(Mo)144 304.8 Q .3 +(beginning\255of\255history \(M\255<\))108 280.8 Q F0(Mo)144 292.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F1(end\255of\255history \(M\255>\))108 316.8 Q F0(Mo)144 328.8 Q +-.65 E F1(end\255of\255history \(M\255>\))108 304.8 Q F0(Mo)144 316.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 -(re v)108 340.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.47(Search backw)144 352.8 R 1.471 -(ard starting at the current line and mo)-.1 F 1.471 +(re v)108 328.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 340.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.47 (ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 364.8 Q F1 -.25(fo)108 376.8 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 388.8 R 1.132(ard starting at the current line and mo) --.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) --.25 F(.)-.65 E(This is an incremental search.)144 400.8 Q F1 -(non\255incr)108 412.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H -(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) -144 424.8 R .164(ard through the history starting at the current line u\ -sing a non-incremental search for)-.1 F 2.5(as)144 436.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 448.8 Q +(This is an incremental search.)144 352.8 Q F1 -.25(fo)108 364.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 +(Search forw)144 376.8 R 1.131(ard starting at the current line and mo) +-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 388.8 Q F1 +(non\255incr)108 400.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) +144 412.8 R .164(ard through the history starting at the current line u\ +sing a non-incremental search for)-.1 F 2.5(as)144 424.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 436.8 Q (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.354(Search forw)144 460.8 R 1.354(ard through the history using \ +E F0 1.353(Search forw)144 448.8 R 1.354(ard through the history using \ a non-incremental search for a string supplied by the)-.1 F(user)144 -472.8 Q(.)-.55 E F1(history\255sear)108 484.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .248(Search forw)144 496.8 R .249(ard through the history for\ +460.8 Q(.)-.55 E F1(history\255sear)108 472.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .249(Search forw)144 484.8 R .249(ard through the history for\ the string of characters between the start of the current line)-.1 F -(and the point.)144 508.8 Q(This is a non-incremental search.)5 E F1 -(history\255sear)108 520.8 Q(ch\255backward)-.18 E F0 .951(Search backw) -144 532.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 544.8 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 556.8 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 -568.8 R .622(gument to the pre)-.18 F .622 -(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .795(at point.)144 580.8 R -.4(Wi)5.795 G .794 -(th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294 -(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 -(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 -(ords in the)-.1 F(pre)144 592.8 Q .291(vious command be)-.25 F .291 +(and the point.)144 496.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 508.8 Q(ch\255backward)-.18 E F0 .95(Search backw) +144 520.8 R .951(ard through the history for the string of characters b\ +etween the start of the current)-.1 F(line and the point.)144 532.8 Q +(This is a non-incremental search.)5 E F1(history\255substring\255sear) +108 544.8 Q(ch\255backward)-.18 E F0 .951(Search backw)144 556.8 R .951 +(ard through the history for the string of characters between the start\ + of the current)-.1 F .007(line and the current cursor position \(the) +144 568.8 R/F3 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B +.007(search string may match an)2.507 F .007(ywhere in a history)-.15 F +2.5(line. This)144 580.8 R(is a non-incremental search.)2.5 E F1 +(history\255substring\255sear)108 592.8 Q(ch\255f)-.18 E(orward)-.25 E +F0 .249(Search forw)144 604.8 R .249(ard through the history for the st\ +ring of characters between the start of the current line)-.1 F .318 +(and the point.)144 616.8 R .319(The search string may match an)5.318 F +.319(ywhere in a history line.)-.15 F .319(This is a non-incremental) +5.319 F(search.)144 628.8 Q F1(yank\255nth\255ar)108 640.8 Q 2.5(g\()-.1 +G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 652.8 R .622 +(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25 +F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144 +664.8 R -.4(Wi)5.794 G .794(th an ar).4 F(gument)-.18 E F3(n)3.294 E F0 +3.294(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 +(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795 +(ords in the)-.1 F(pre)144 676.8 Q .292(vious command be)-.25 F .292 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 -(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292 -(ord from the end of)-.1 F .282(the pre)144 604.8 R .282(vious command.) --.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281 -(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 -(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 616.8 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 628.8 Q -2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 -(Insert the last ar)144 640.8 R 1.307(gument to the pre)-.18 F 1.307 -(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 -(vious history entry\).)-.25 F -.4(Wi)144 652.8 S .204(th a numeric ar) -.4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F -(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi) --5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar) -2.703 E(g)-.1 E F0(mo)144 664.8 Q .806 -.15(ve b)-.15 H .507 -(ack through the history list, inserting the last w).15 F .507 -(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -1.397(to the \214rst call\) of each line in turn.)144 676.8 R(An)6.396 E -3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396 -(gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls) -.15 E .491(determines the direction to mo)144 688.8 R .791 -.15(ve t) --.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga) --.15 G(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 -(ument switches the direction).18 F .494 -(through the history \(back or forw)144 700.8 R 2.994(ard\). The)-.1 F -.494(history e)2.994 F .494(xpansion f)-.15 F .494 -(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 -712.8 S(rd, as if the "!$" history e).1 E -(xpansion had been speci\214ed.)-.15 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(44)192.055 E 0 Cg EP -%%Page: 45 45 +(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .291 +(ord from the end of)-.1 F .281(the pre)144 688.8 R .281(vious command.) +-.25 F .281(Once the ar)5.281 F(gument)-.18 E F3(n)2.781 E F0 .281 +(is computed, the ar)2.781 F .281(gument is e)-.18 F .282 +(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 700.8 Q +(xpansion had been speci\214ed.)-.15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(46)193.45 E 0 Cg EP +%%Page: 47 47 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(shell\255expand\255line \(M\255C\255e\))108 84 Q F0 .622 -(Expand the line as the shell does.)144 96 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 108 Q(ord e)-.1 E 2.5 +SF(yank\255last\255ar)108 84 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F +-1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 96 R 1.308 +(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F 1.307 +(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)144 108 +S .203(th a numeric ar).4 F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 +H .204(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 +5.204(.S)C(uccessi)-5.204 E .504 -.15(ve c)-.25 H .204(alls to).15 F F1 +(yank\255last\255ar)2.704 E(g)-.1 E F0(mo)144 120 Q .807 -.15(ve b)-.15 +H .507(ack through the history list, inserting the last w).15 F .507 +(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E +1.396(to the \214rst call\) of each line in turn.)144 132 R(An)6.396 E +3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397 +(gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls) +.15 E .492(determines the direction to mo)144 144 R .792 -.15(ve t)-.15 +H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G +(ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491 +(ument switches the direction).18 F .494 +(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F +.494(history e)2.994 F .494(xpansion f)-.15 F .494 +(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 +168 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 180 Q F0 .623 +(Expand the line as the shell does.)144 192 R .622 +(This performs alias and history e)5.622 F .622 +(xpansion as well as all of the)-.15 F(shell w)144 204 Q(ord e)-.1 E 2.5 (xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 (YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G (or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 120 Q F0 .939 -(Perform history e)144 132 R .939(xpansion on the current line.)-.15 F +(history\255expand\255line \(M\255^\))108 216 Q F0 .938 +(Perform history e)144 228 R .939(xpansion on the current line.)-.15 F (See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E -(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) --3.438 F(tion of history e)144 144 Q(xpansion.)-.15 E F1(magic\255space) -108 156 Q F0 1.626(Perform history e)144 168 R 1.626 -(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 -(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 -(belo)144 180 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 192 Q F0 .395 -(Perform alias e)144 204 R .395(xpansion on the current line.)-.15 F -(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H -.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 216 Q F1 -(history\255and\255alias\255expand\255line)108 228 Q F0 -(Perform history and alias e)144 240 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 252 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 264 S(ynon)-2.5 E(ym for) +(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) +-3.439 F(tion of history e)144 240 Q(xpansion.)-.15 E F1(magic\255space) +108 252 Q F0 1.627(Perform history e)144 264 R 1.627 +(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F2 +(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 +(belo)144 276 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F1(alias\255expand\255line)108 288 Q F0 .394 +(Perform alias e)144 300 R .394(xpansion on the current line.)-.15 F +(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 312 Q F1 +(history\255and\255alias\255expand\255line)108 324 Q F0 +(Perform history and alias e)144 336 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 348 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 360 S(ynon)-2.5 E(ym for) -.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 -(operate\255and\255get\255next \(C\255o\))108 276 Q F0 .947 -(Accept the current line for e)144 288 R -.15(xe)-.15 G .948 -(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 -(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F -(history for editing.)144 300 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G -(ument is ignored.).18 E F1 -(edit\255and\255execute\255command \(C\255xC\255e\))108 312 Q F0(In)144 -324 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(operate\255and\255get\255next \(C\255o\))108 372 Q F0 .948 +(Accept the current line for e)144 384 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 +(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F .729 +(history for editing.)144 396 R 3.229(An)5.729 G .729(umeric ar)-3.229 F +.729 +(gument, if supplied, speci\214es the history entry to use instead of) +-.18 F(the current line.)144 408 Q F1 +(edit\255and\255execute\255command \(C\255x C\255e\))108 420 Q F0(In)144 +432 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 (cute the result as shell commands.).15 F F1(Bash)6.026 E F0 -(attempts to in)144 336 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) +(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) -.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0 (and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 -352.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 364.8 +460.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 472.8 Q F1(\(usually C\255d\))2.5 E F0 .798 -(The character indicating end-of-\214le as set, for e)144 376.8 R .799 +(The character indicating end-of-\214le as set, for e)144 484.8 R .799 (xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 (ft)-5.799 G .799(his character is read when)-3.299 F .592 -(there are no characters on the line, and point is at the be)144 388.8 R +(there are no characters on the line, and point is at the be)144 496.8 R .592(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 400.8 Q F2(EOF)2.5 E F3(.)A F1 -(delete\255char \(C\255d\))108 412.8 Q F0 .441 -(Delete the character at point.)144 424.8 R .442 +(as the end of input and returns)144 508.8 Q F2(EOF)2.5 E F3(.)A F1 +(delete\255char \(C\255d\))108 520.8 Q F0 .441 +(Delete the character at point.)144 532.8 R .442 (If this function is bound to the same character as the tty)5.441 F F1 -(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s) +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 544.8 Q 2.5(,a)-.4 G(s) -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R +108 556.8 Q F0 .553(Delete the character behind the cursor)144 568.8 R 5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 (umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552 -(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1 --.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474 +(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 580.8 Q F1 +-.25(fo)108 592.8 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 604.8 R 2.973(,u)-.4 G .474 (nless the cursor is at the end of the line, in which case the)-2.973 F -(character behind the cursor is deleted.)144 508.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 .779(Add the ne)144 -532.8 R .779(xt character typed to the line v)-.15 F 3.279 +(character behind the cursor is deleted.)144 616.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 628.8 Q F0 .779(Add the ne)144 +640.8 R .779(xt character typed to the line v)-.15 F 3.279 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 -(,f)C(or)-3.278 E -.15(ex)144 544.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 556.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 568.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0 -(Insert the character typed.)144 592.8 Q F1 -(transpose\255chars \(C\255t\))108 604.8 Q F0 .321 -(Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15 -(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 -(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 -(If point is at the end of the line, then this transposes the tw)144 -628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E -.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) --.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) --2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F -(is at the end of the line, this transposes the last tw)144 676.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q -(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 -700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F --.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(45)192.055 E 0 Cg EP -%%Page: 46 46 +(,f)C(or)-3.278 E -.15(ex)144 652.8 S(ample.).15 E F1 +(tab\255insert \(C\255v T)108 664.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 676.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 688.8 Q F0 +(Insert the character typed.)144 700.8 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(47)193.45 E 0 Cg EP +%%Page: 48 48 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q -1.647(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 +SF(transpose\255chars \(C\255t\))108 84 Q F0 .321 +(Drag the character before point forw)144 96 R .321(ard o)-.1 F -.15(ve) +-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 +(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 +(If point is at the end of the line, then this transposes the tw)144 108 +R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05 +(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 120 Q(guments ha)-.18 E .3 +-.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 132 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +144 R .023(ord before point past the w)-.1 F .023(ord after point, mo) +-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) +-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F +(is at the end of the line, this transposes the last tw)144 156 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 168 Q +(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 180 +R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga) +-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 204 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 216 Q 1.647 +(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 (ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 (ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) --.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132 +-.25 F(vious)-.25 E -.1(wo)144 228 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 240 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 252 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 -(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156 -S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 264 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 276 +S(rwrite\255mode).1 E F0 -.8(To)144 288 S .437(ggle o).8 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 (xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 (gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 -(Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +(Wi)144 300 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15(ve n)-.25 H .781(umeric ar).15 F .781 (gument, switches to insert mode.)-.18 F .78(This command af)5.781 F -(fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) +(fects)-.25 E(only)144 312 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) 4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 /Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 -(starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G +(starts in insert)4.395 F 3.969(mode. In)144 324 R -.15(ove)3.969 G 1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F -.957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958 +.957(pushing the te)144 336 R .957(xt to the right.)-.15 F .958 (Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 -.958(replace the character)3.458 F(before point with a space.)144 228 Q +.958(replace the character)3.458 F(before point with a space.)144 348 Q (By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 -244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0 -(Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw) -144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8 +364.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 376.8 Q F0 +(Kill the te)144 388.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 400.8 Q F0(Kill backw) +144 412.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 424.8 Q F0(Kill backw)144 436.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 448.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 364.8 R .728 +460.8 Q F1(kill\255w)108 472.8 Q(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 484.8 R .728 (ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 496.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G -(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 508.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 520.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 -(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 412.8 Q -(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 424.8 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 532.8 Q +(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 544.8 R .729(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F -.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 436.8 S +.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 556.8 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 448.8 Q(ord)-.1 E F0 3.025(Kill the w)144 460.8 R 3.025 +108 568.8 Q(ord)-.1 E F0 3.025(Kill the w)144 580.8 R 3.025 (ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 472.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 496.8 R .364 +5.525 E(ward\255w)144 592.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 604.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 616.8 R .364 (ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 (ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 -508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .167(Kill the w) -144 532.8 R .166 +628.8 Q F1(unix\255\214lename\255rubout)108 640.8 Q F0 .167(Kill the w) +144 652.8 R .166 (ord behind point, using white space and the slash character as the w) --.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 544.8 Q +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 664.8 Q (xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) --2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 556.8 Q F0 -(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108 -580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re) --.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E -F0(Cop)144 616.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E -(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.8(yt) --.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E -(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 -(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -652.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 676.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 -(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 -E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 -(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 688.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 700.8 Q -F0 -1(Ya)144 712.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E -(fer at point.)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(46) -192.055 E 0 Cg EP -%%Page: 47 47 +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 676.8 Q F0 +(Delete all spaces and tabs around point.)144 688.8 Q F1(kill\255r)108 +700.8 Q(egion)-.18 E F0(Kill the te)144 712.8 Q(xt in the current re) +-.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(48) +193.45 E 0 Cg EP +%%Page: 49 49 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(yank\255pop \(M\255y\))108 84 Q F0 -(Rotate the kill ring, and yank the ne)144 96 Q 2.5(wt)-.25 G 2.5 +SF(copy\255r)108 84 Q(egion\255as\255kill)-.18 E F0(Cop)144 96 Q 2.5(yt) +-.1 G(he te)-2.5 E(xt in the re)-.15 E(gion to the kill b)-.15 E(uf)-.2 +E(fer)-.25 E(.)-.55 E F1(copy\255backward\255w)108 108 Q(ord)-.1 E F0 +(Cop)144 120 Q 4.8(yt)-.1 G 2.3(he w)-4.8 F 2.3 +(ord before point to the kill b)-.1 F(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 +G 2.301(he w)-7.301 F 2.301(ord boundaries are the same as)-.1 F F1 +(back-)4.801 E(ward\255w)144 132 Q(ord)-.1 E F0(.)A F1(copy\255f)108 144 +Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)144 156 Q 4.508(yt)-.1 G 2.008 +(he w)-4.508 F 2.008(ord follo)-.1 F 2.008(wing point to the kill b)-.25 +F(uf)-.2 E(fer)-.25 E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 +(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G +(ward\255w)144 168 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 180 Q F0 -1 +(Ya)144 192 S(nk the top of the kill ring into the b)1 E(uf)-.2 E +(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 204 Q F0 +(Rotate the kill ring, and yank the ne)144 216 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E -F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 112.8 Q -(guments)-.1 E(digit\255ar)108 124.8 Q +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 232.8 Q +(guments)-.1 E(digit\255ar)108 244.8 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 -(Add this digit to the ar)144 136.8 R .367 +(Add this digit to the ar)144 256.8 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 (rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05 -(ga)-.15 G(-).05 E(ti)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G -(ument.).18 E F1(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 -E F0 .779(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F +(ga)-.15 G(-).05 E(ti)144 268.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 280.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .779(This is another w)144 292.8 R .779(ay to specify an ar)-.1 F 3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -196.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +304.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +316.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) --.2 F(-)-.2 E .898(wise ignored.)144 208.8 R .898 +-.2 F(-)-.2 E .898(wise ignored.)144 328.8 R .898 (As a special case, if this command is immediately follo)5.898 F .898 (wed by a character that is)-.25 F 1.23 -(neither a digit nor minus sign, the ar)144 220.8 R 1.23 +(neither a digit nor minus sign, the ar)144 340.8 R 1.23 (gument count for the ne)-.18 F 1.23(xt command is multiplied by four) --.15 F(.)-.55 E .822(The ar)144 232.8 R .822 +-.15 F(.)-.55 E .822(The ar)144 352.8 R .822 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 (cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F -(gument)-.18 E(count four)144 244.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 +(gument)-.18 E(count four)144 364.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) -87 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 285.6 R 1.137 +87 381.6 Q(complete \(T)108 393.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 405.6 R 1.137 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 -(attempts completion treating the)3.637 F(te)144 297.6 Q .532(xt as a v) +(attempts completion treating the)3.637 F(te)144 417.6 Q .532(xt as a v) -.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with) -.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F .533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te) -144 309.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 +144 429.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 (\), or command \(including aliases and functions\) in turn.)B .701 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 321.6 Q F1 -(possible\255completions \(M\255?\))108 333.6 Q F0 -(List the possible completions of the te)144 345.6 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783 -(Insert all completions of the te)144 369.6 R .783 +(duces a match, \214lename completion is attempted.)144 441.6 Q F1 +(possible\255completions \(M\255?\))108 453.6 Q F0 +(List the possible completions of the te)144 465.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 477.6 Q F0 .783 +(Insert all completions of the te)144 489.6 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H .783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 -381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .929(Similar to)144 -405.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +501.6 Q F0(.)A F1(menu\255complete)108 513.6 Q F0 .929(Similar to)144 +525.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 F .929(ord to be completed with a single match from the list of)-.1 F -1.193(possible completions.)144 417.6 R 1.193(Repeated e)6.193 F -.15 +1.193(possible completions.)144 537.6 R 1.193(Repeated e)6.193 F -.15 (xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 (steps through the list of possible)3.694 F .829 -(completions, inserting each match in turn.)144 429.6 R .828 +(completions, inserting each match in turn.)144 549.6 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 441.6 R F1(bell\255style)3.227 E F0 +(\(subject to the setting of)144 561.6 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 -(positions forw)144 453.6 R 1.73(ard in the list of matches; a ne)-.1 F +(positions forw)144 573.6 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 465.6 Q(This command is intended to be bound to) +E(through the list.)144 585.6 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 477.6 Q F0 .82 -(Identical to)144 489.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ault.)-.1 E F1(menu\255complete\255backward)108 597.6 Q F0 .82 +(Identical to)144 609.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 (ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 (ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 501.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 +(menu\255complete)144 621.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 (nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) .15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 513.6 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 525.6 R +F1(delete\255char\255or\255list)108 633.6 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 645.6 R .234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.734 E F0(\).)A .425(If at the end of the line, beha)144 537.6 R -.15 +2.734 E F0(\).)A .425(If at the end of the line, beha)144 657.6 R -.15 (ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 (possible\255completions)2.925 E F0 5.425(.T)C .425 -(his command is unbound)-5.425 F(by def)144 549.6 Q(ault.)-.1 E F1 -(complete\255\214lename \(M\255/\))108 561.6 Q F0 -(Attempt \214lename completion on the te)144 573.6 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 585.6 Q -F0(List the possible completions of the te)144 597.6 Q -(xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 609.6 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 621.6 Q -(xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 633.6 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 645.6 Q -(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -657.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 -669.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -F1(possible\255v)108 681.6 Q(ariable\255completions \(C\255x $\))-.1 E -F0(List the possible completions of the te)144 693.6 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 705.6 Q F0 -(Attempt completion on the te)144 717.6 Q -(xt before point, treating it as a hostname.)-.15 E(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(47)192.055 E 0 Cg EP -%%Page: 48 48 +(his command is unbound)-5.425 F(by def)144 669.6 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 681.6 Q F0 +(Attempt \214lename completion on the te)144 693.6 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 705.6 Q +F0(List the possible completions of the te)144 717.6 Q +(xt before point, treating it as a \214lename.)-.15 E(GNU Bash 5.0)72 +768 Q(2018 March 15)144.29 E(49)193.45 E 0 Cg EP +%%Page: 50 50 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(possible\255hostname\255completions \(C\255x @\))108 84 Q F0 -(List the possible completions of the te)144 96 Q +SF(complete\255user)108 84 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 96 Q +(xt before point, treating it as a username.)-.15 E F1(possible\255user) +108 108 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 120 Q +(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 +132 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 144 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(possible\255v)108 156 Q(ariable\255completions \(C\255x $\))-.1 E F0 +(List the possible completions of the te)144 168 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 180 Q F0 +(Attempt completion on the te)144 192 Q (xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 108 Q F0 .581 -(Attempt completion on the te)144 120 R .581 +(possible\255hostname\255completions \(C\255x @\))108 204 Q F0 +(List the possible completions of the te)144 216 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(complete\255command \(M\255!\))108 228 Q F0 .581 +(Attempt completion on the te)144 240 R .581 (xt before point, treating it as a command name.)-.15 F .58 -(Command comple-)5.58 F .715(tion attempts to match the te)144 132 R +(Command comple-)5.58 F .715(tion attempts to match the te)144 252 R .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F -(\214nally e)144 144 Q -.15(xe)-.15 G +(\214nally e)144 264 Q -.15(xe)-.15 G (cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 156 Q F0 -(List the possible completions of the te)144 168 Q +(possible\255command\255completions \(C\255x !\))108 276 Q F0 +(List the possible completions of the te)144 288 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 180 Q(AB\))-.9 E F0 .425 -(Attempt completion on the te)144 192 R .425 +(dynamic\255complete\255history \(M\255T)108 300 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 312 R .425 (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 (ainst lines from the history list)-.05 F -(for possible completion matches.)144 204 Q F1(dab)108 216 Q(br)-.1 E +(for possible completion matches.)144 324 Q F1(dab)108 336 Q(br)-.1 E -.15(ev)-.18 G(\255expand).15 E F0 .61 -(Attempt menu completion on the te)144 228 R .611 +(Attempt menu completion on the te)144 348 R .611 (xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 (ainst lines from the his-)-.05 F -(tory list for possible completion matches.)144 240 Q F1 -(complete\255into\255braces \(M\255{\))108 252 Q F0 .4(Perform \214lena\ +(tory list for possible completion matches.)144 360 Q F1 +(complete\255into\255braces \(M\255{\))108 372 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 264 R(the list is a)144 276 Q -.25(va)-.2 G +in braces so)144 384 R(the list is a)144 396 Q -.25(va)-.2 G (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 292.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 316.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 412.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 424.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 436.8 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E F1(end\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 340.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 448.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 460.8 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 -(call\255last\255kbd\255macr)108 352.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 364.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) +(call\255last\255kbd\255macr)108 472.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 484.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) -.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 376.8 Q -.15(ey)-.1 G(board.).15 -E F1(print\255last\255kbd\255macr)108 388.8 Q 2.5(o\()-.18 G(\))-2.5 E -F0(Print the last k)144 400.8 Q -.15(ey)-.1 G + appear as if).15 F(typed at the k)144 496.8 Q -.15(ey)-.1 G(board.).15 +E F1(print\255last\255kbd\255macr)108 508.8 Q 2.5(o\()-.18 G(\))-2.5 E +F0(Print the last k)144 520.8 Q -.15(ey)-.1 G (board macro de\214ned in a format suitable for the).15 E/F2 10 /Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S.18 E +(Miscellaneous)87 537.6 Q -.18(re)108 549.6 S.18 E (ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 441.6 R F2(inputr)4.277 E(c)-.37 E F0 +(Read in the contents of the)144 561.6 R F2(inputr)4.277 E(c)-.37 E F0 1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 (indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 -453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 477.6 R +573.6 Q F1(abort \(C\255g\))108 585.6 Q F0 3.248 +(Abort the current editing command and ring the terminal')144 597.6 R 5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 489.6 Q F0(\).)A F1(do\255upper)108 501.6 Q -(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 513.6 R F2(x) -4.256 E F0 1.755(is lo)4.256 F 1.755 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 525.6 Q(.)-.55 E F1(pr)108 537.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 549.6 Q -(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 -(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1 -(undo \(C\255_, C\255x C\255u\))108 561.6 Q F0 -(Incremental undo, separately remembered for each line.)144 573.6 Q F1 --2.29 -.18(re v)108 585.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 597.6 R 1.095(This is lik)6.095 +(bell\255style)144 609.6 Q F0(\).)A F1(do\255lo)108 621.6 Q(wer)-.1 E +(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.) +C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 633.6 R F2(x) +4.239 E F0 1.739 +(is uppercase, run the command that is bound to the corresponding)4.239 +F(meta\214ed lo)144 645.6 Q(wercase character)-.25 E 5(.T)-.55 G +(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo) +2.5 E(wercase.)-.25 E F1(pr)108 657.6 Q(e\214x\255meta \(ESC\))-.18 E F0 +(Metafy the ne)144 669.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 +SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 +(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 681.6 Q F0 +(Incremental undo, separately remembered for each line.)144 693.6 Q F1 +-2.29 -.18(re v)108 705.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 717.6 R 1.095(This is lik)6.095 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F -(return the line to its initial state.)144 609.6 Q F1 -(tilde\255expand \(M\255&\))108 621.6 Q F0(Perform tilde e)144 633.6 Q +(return the line to its initial state.)144 729.6 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(50)193.45 E 0 Cg EP +%%Page: 51 51 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(tilde\255expand \(M\255&\))108 84 Q F0(Perform tilde e)144 96 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 645.6 Q F0 -(Set the mark to the point.)144 657.6 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 108 Q F0 +(Set the mark to the point.)144 120 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 -(exchange\255point\255and\255mark \(C\255x C\255x\))108 669.6 Q F0(Sw) -144 681.6 Q .283(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 132 Q F0(Sw)144 +144 Q .283(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G 2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) -144 693.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 -(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -717.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G -3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 +144 156 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 +(character\255sear)108 168 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 180 S +.535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G 3.035(dt) +.15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 (xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 (ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 729.6 Q(vious occurrences.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(48)192.055 E 0 Cg EP -%%Page: 49 49 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(character\255sear)108 84 Q(ch\255backward \(M\255C\255]\))-.18 E F0 -3.544(Ac)144 96 S 1.044(haracter is read and point is mo)-3.544 F -.15 -(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 +144 192 Q(vious occurrences.)-.25 E F1(character\255sear)108 204 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 216 S 1.044 +(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G +3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 (vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 108 Q F1 -(skip\255csi\255sequence)108 120 Q F0 1.826 -(Read enough characters to consume a multi-k)144 132 R 2.126 -.15(ey s) +(count searches for subsequent occurrences.)144 228 Q F1 +(skip\255csi\255sequence)108 240 Q F0 1.826 +(Read enough characters to consume a multi-k)144 252 R 2.126 -.15(ey s) -.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G -4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 144 R .791 +4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 264 R .791 (Such sequences be)5.791 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831 +.331(If this sequence is bound to "\\[", k)144 276 R -.15(ey)-.1 G 2.831 (sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) -.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) -.15 E .026(itly bound to a readline command, instead of inserting stra\ -y characters into the editing b)144 168 R(uf)-.2 E(fer)-.25 E 5.026(.T) --.55 G(his)-5.026 E(is unbound by def)144 180 Q(ault, b)-.1 E +y characters into the editing b)144 288 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 300 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -192 Q F0 -.4(Wi)144 204 S .48(thout a numeric ar).4 F .48(gument, the v) +312 Q F0 -.4(Wi)144 324 S .48(thout a numeric ar).4 F .48(gument, the v) -.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 --.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 216 Q .245 +-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 336 Q .245 (ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244 (gument is supplied, this command acts as a toggle: if)-.18 F .321 -(the characters at the be)144 228 R .321 +(the characters at the be)144 348 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 (comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F .832(inserted, otherwise the characters in)144 240 R F1 +-.25 F .832(inserted, otherwise the characters in)144 360 R F1 (comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 (ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 252 R 1.468 +(In either case, the line is accepted as if a ne)144 372 R 1.468 (wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 264 Q F0 .84 +1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 384 Q F0 .84 (causes this command to mak)3.34 F 3.339(et)-.1 G .839 (he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F -(gu-)-.18 E(ment causes the comment character to be remo)144 276 Q -.15 +(gu-)-.18 E(ment causes the comment character to be remo)144 396 Q -.15 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G -(cuted by the shell.).15 E F1(glob\255complete\255w)108 288 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 300 R .791 +(cuted by the shell.).15 E F1(glob\255complete\255w)108 408 Q +(ord \(M\255g\))-.1 E F0 .791(The w)144 420 R .791 (ord before point is treated as a pattern for pathname e)-.1 F .792 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 312 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 432 R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 324 Q(ord \(C\255x *\)) --.1 E F0 .176(The w)144 336 R .176 +le completions.)2.5 E F1(glob\255expand\255w)108 444 Q(ord \(C\255x *\)) +-.1 E F0 .176(The w)144 456 R .176 (ord before point is treated as a pattern for pathname e)-.1 F .176 (xpansion, and the list of matching \214le-)-.15 F .516 -(names is inserted, replacing the w)144 348 R 3.016(ord. If)-.1 F 3.016 +(names is inserted, replacing the w)144 468 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 (gument is supplied, an asterisk is appended)-.18 F(before pathname e) -144 360 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 372 Q F0 .923(The list of e)144 384 R .923(xpansions that w)-.15 F +144 480 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 492 Q F0 .923(The list of e)144 504 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 (glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F -.872(the line is redra)144 396 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(the line is redra)144 516 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15 -(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .627 -(Print all of the functions and their k)144 432 R .927 -.15(ey b)-.1 H +(ex)144 528 S(pansion.).15 E F1(dump\255functions)108 540 Q F0 .627 +(Print all of the functions and their k)144 552 R .927 -.15(ey b)-.1 H .626(indings to the readline output stream.).15 F .626(If a numeric ar) 5.626 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 444 Q +(ment is supplied, the output is formatted in such a w)144 564 Q (ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) -2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 456 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 468 R 1.799 +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 576 Q(ariables)-.1 E F0 +1.799(Print all of the settable readline v)144 588 R 1.799 (ariables and their v)-.25 F 1.8(alues to the readline output stream.) --.25 F 1.8(If a)6.8 F .305(numeric ar)144 480 R .304 +-.25 F 1.8(If a)6.8 F .305(numeric ar)144 600 R .304 (gument is supplied, the output is formatted in such a w)-.18 F .304 -(ay that it can be made part of an)-.1 F F2(inputr)144 492 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 516 R .892 -.15(ey s)-.1 H .592 +(ay that it can be made part of an)-.1 F F2(inputr)144 612 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 624 Q(os)-.18 E F0 .592 +(Print all of the readline k)144 636 R .892 -.15(ey s)-.1 H .592 (equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 528 Q +3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 648 Q .528(gument is supplied, the output is formatted in such a w)-.18 F .528 (ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 -(\214le.)144 540 Q F1(display\255shell\255v)108 552 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 564 Q +(\214le.)144 660 Q F1(display\255shell\255v)108 672 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 684 Q (ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 -592.8 R .147(ord completion is attempted for an ar)-.1 F .147 +F0(.)A F1(Pr)87 700.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +712.8 R .147(ord completion is attempted for an ar)-.1 F .147 (gument to a command for which a completion speci\214cation \(a)-.18 F -F2(compspec)108 604.8 Q F0 3.829(\)h)C 1.329 +F2(compspec)108 724.8 Q F0 3.829(\)h)C 1.329 (as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) --.25 F(programmable completion f)108 616.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .497 -(First, the command name is identi\214ed.)108 633.6 R .497 -(If the command w)5.497 F .498 -(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 -645.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 -(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) -5.233 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 657.6 R .823 -(for the w)108 669.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F -.822(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.866(\214rst. If)108 681.6 R .367(no compspec is found fo\ -r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.866 F(follo)108 693.6 Q .299(wing the \214nal slash.)-.25 F .298 -(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 -G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) -108 705.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E -.817(Once a compspec has been found, it is used to generate the list of\ - matching w)108 722.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(49)192.055 E 0 Cg EP -%%Page: 50 50 +-.25 F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(51)193.45 E 0 Cg EP +%%Page: 52 52 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(found, the def)108 -84 Q(ault)-.1 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0 -(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1 -(Completing)2.5 E F0(is performed.)2.5 E .464 -(First, the actions speci\214ed by the compspec are used.)108 100.8 R +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(programmable completion f)108 84 Q(acilities are in)-.1 E -.2(vo)-.4 G +-.1(ke).2 G(d.).1 E .497(First, the command name is identi\214ed.)108 +100.8 R .497(If the command w)5.497 F .498 +(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 +112.8 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +(ompspec de\214ned with the)-2.733 F/F1 10/Times-Bold@0 SF2.733 E +F0 .233(option to)2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F +.233(If a comp-)5.233 F .481(spec has been de\214ned for that command, \ +the compspec is used to generate the list of possible completions)108 +124.8 R .823(for the w)108 136.8 R 3.323(ord. If)-.1 F .823 +(the command w)3.323 F .822(ord is a full pathname, a compspec for the \ +full pathname is searched for)-.1 F 2.866(\214rst. If)108 148.8 R .367(\ +no compspec is found for the full pathname, an attempt is made to \214n\ +d a compspec for the portion)2.866 F(follo)108 160.8 Q .299 +(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 +G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) +108 172.8 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E +.817(Once a compspec has been found, it is used to generate the list of\ + matching w)108 189.6 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 +(ompspec is not)-3.317 F(found, the def)108 201.6 Q(ault)-.1 E F1(bash) +2.5 E F0(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 +E F1(Completing)2.5 E F0(is performed.)2.5 E .464 +(First, the actions speci\214ed by the compspec are used.)108 218.4 R .463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F -.463(ord being)-.1 F .595(completed are returned.)108 112.8 R .595 +.463(ord being)-.1 F .595(completed are returned.)108 230.4 R .595 (When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 (option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 124.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E -F0(is used to \214lter the matches.)2.25 E(An)108 141.6 Q 4.084(yc)-.15 +(shell v)108 242.4 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E +F0(is used to \214lter the matches.)2.25 E(An)108 259.2 Q 4.084(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 (xpansion pattern to the)-.15 F F14.084 E F0 1.584 -(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 153.6 S +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 271.2 S .554(rds generated by the pattern need not match the w).1 F .555 (ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555 (shell v)2.805 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 165.6 Q(ut the)-.2 E F2 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 182.4 Q -.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 -F F12.821 E F0 .32(option is considered.)2.821 F .32 +(able is not used to \214lter the matches, b)108 283.2 Q(ut the)-.2 E F2 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 300 Q .321 +(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 F +F12.821 E F0 .32(option is considered.)2.821 F .32 (The string is \214rst split using the)5.32 F .412(characters in the)108 -194.4 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 +312 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 (ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F .413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 -(using brace e)108 206.4 R .092(xpansion, tilde e)-.15 F .092 +(using brace e)108 324 R .092(xpansion, tilde e)-.15 F .092 (xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091 -(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 -218.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H -(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 -1.396(The results are split using the rules described)5.896 F(abo)108 -230.4 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21 -(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 +(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 336 +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 348 Q +.51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21(rd Splitting).75 F +F0 5.21(.T)C .209(he results of the e)-5.21 F .209 (xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 -(ord being com-)-.1 F(pleted, and the matching w)108 242.4 Q +(ord being com-)-.1 F(pleted, and the matching w)108 360 Q (ords become the possible completions.)-.1 E 1.237 -(After these matches ha)108 259.2 R 1.537 -.15(ve b)-.2 H 1.237 +(After these matches ha)108 376.8 R 1.537 -.15(ve b)-.2 H 1.237 (een generated, an).15 F 3.737(ys)-.15 G 1.238 (hell function or command speci\214ed with the)-3.737 F F13.738 E -F0(and)3.738 E F13.738 E F0 3.376(options is in)108 271.2 R -.2 +F0(and)3.738 E F13.738 E F0 3.376(options is in)108 388.8 R -.2 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 (d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2 -(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 +(COMP_KEY)108 400.8 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 (va)2.407 G .157(riables are assigned v).25 F .157 (alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158 (Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 -295.2 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +412.8 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G .986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 (riables are also set.).25 F(When)5.985 E .346 -(the function or command is in)108 307.2 R -.2(vo)-.4 G -.1(ke).2 G .346 +(the function or command is in)108 424.8 R -.2(vo)-.4 G -.1(ke).2 G .346 (d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C 2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) --.18 E .264(are being completed, the second ar)108 319.2 R .264 +-.18 E .264(are being completed, the second ar)108 436.8 R .264 (gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) -2.764 F .263(ord being completed, and the third ar)-.1 F .263 -(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 331.2 +(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 448.8 R .628(ord preceding the w)-.1 F .629 (ord being completed on the current command line.)-.1 F .629 -(No \214ltering of the generated)5.629 F .715(completions ag)108 343.2 R +(No \214ltering of the generated)5.629 F .715(completions ag)108 460.8 R .715(ainst the w)-.05 F .714(ord being completed is performed; the func\ tion or command has complete free-)-.1 F(dom in generating the matches.) -108 355.2 Q(An)108 372 Q 2.937(yf)-.15 G .437(unction speci\214ed with) --2.937 F F12.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G -2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F -2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438 -(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.957 E F0 -.2(bu) -2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) -.65 G .456(enerate the matches.)-2.956 F .456 -(It must put the possible completions in the)5.456 F F2(COMPREPL)108 396 -Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 E(Ne) -108 412.8 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 +108 472.8 Q(An)108 489.6 Q 2.937(yf)-.15 G .437 +(unction speci\214ed with)-2.937 F F12.937 E F0 .437(is in)2.937 F +-.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437 +(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437 +(he shell f)-2.937 F .438(acilities, including)-.1 F(the)108 501.6 Q F1 +(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756 +-.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456 +(It must put the possible completions in the)5.456 F F2(COMPREPL)108 +513.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 +E(Ne)108 530.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 (ommand speci\214ed with the)-2.58 F F12.58 E F0 .081 (option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na) -2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25 -(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 424.8 +(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 542.4 R .359(should print a list of completions, one per line, to the standar\ d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108 -436.8 Q(wline, if necessary)-.25 E(.)-.65 E .376 -(After all of the possible completions are generated, an)108 453.6 R +554.4 Q(wline, if necessary)-.25 E(.)-.65 E .376 +(After all of the possible completions are generated, an)108 571.2 R 2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.877 -E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 465.6 R +E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 583.2 R .682(\214lter is a pattern as used for pathname e)3.182 F .681 (xpansion; a)-.15 F F1(&)3.181 E F0 .681 (in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 -(the w)108 477.6 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G +(the w)108 595.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G (iteral)-3.022 E F1(&)3.022 E F0 .523 (may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 489.6 R +-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 607.2 R (An)5.85 E 3.35(yc)-.15 G .849 (ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G 3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) --3.349 E F1(!)3.349 E F0(ne)108 501.6 Q -.05(ga)-.15 G .764 +-3.349 E F1(!)3.349 E F0(ne)108 619.2 Q -.05(ga)-.15 G .764 (tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 (ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G -3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 513.6 Q F0 +3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 631.2 Q F0 (shell option is enabled, the match is performed without re)2.5 E -.05 (ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 -530.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 -F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E -F13.087 E F0 .587(options are added to each member of the com-) -3.087 F(pletion list, and the result is returned to the readline comple\ -tion code as the list of possible completions.)108 542.4 Q .246 -(If the pre)108 559.2 R .247(viously-applied actions do not generate an) --.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir) -2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F -F1(complete)108 571.2 Q F0(when the compspec w)2.5 E +648 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F +.587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E F1 +3.087 E F0 .587(options are added to each member of the com-)3.087 +F(pletion list, and the result is returned to the readline completion c\ +ode as the list of possible completions.)108 660 Q .246(If the pre)108 +676.8 R .247(viously-applied actions do not generate an)-.25 F 2.747(ym) +-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names) +-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F F1(complete) +108 688.8 Q F0(when the compspec w)2.5 E (as de\214ned, directory name completion is attempted.)-.1 E .462 -(If the)108 588 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962 -F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 +(If the)108 705.6 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w) +2.962 F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 -F(pletion is attempted and an)108 600 Q 2.5(ym)-.15 G -(atches are added to the results of the other actions.)-2.5 E .559 -(By def)108 616.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 -(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 +F(pletion is attempted and an)108 717.6 Q 2.5(ym)-.15 G +(atches are added to the results of the other actions.)-2.5 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(52)193.45 E 0 Cg EP +%%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 .559(By def)108 84 +R .559(ault, if a compspec is found, whate)-.1 F -.15(ve)-.25 G 3.059 +(ri).15 G 3.059(tg)-3.059 G .56 (enerates is returned to the completion code as the full set)-3.059 F -.632(of possible completions.)108 628.8 R .632(The def)5.632 F(ault)-.1 -E F1(bash)3.132 E F0 .631 +.632(of possible completions.)108 96 R .632(The def)5.632 F(ault)-.1 E +/F1 10/Times-Bold@0 SF(bash)3.132 E F0 .631 (completions are not attempted, and the readline def)3.131 F .631 -(ault of \214le-)-.1 F .558(name completion is disabled.)108 640.8 R -.558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) -3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 -(when the compspec)3.059 F -.1(wa)108 652.8 S 3.172(sd).1 G .672 +(ault of \214le-)-.1 F .558(name completion is disabled.)108 108 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 120 S 3.172(sd).1 G .672 (e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .671(If the)5.671 F F13.171 E(default)108 664.8 Q F0 1.207 +-.1 F .671(If the)5.671 F F13.171 E(default)108 132 Q F0 1.207 (option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F 3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F -(will be performed if the compspec \(and, if attempted, the def)108 -676.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) -2.5 E .245(When a compspec indicates that directory name completion is \ -desired, the programmable completion func-)108 693.6 R .632(tions force\ - readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 705.6 R 2.762(to the v)108 717.6 R 2.762 +(will be performed if the compspec \(and, if attempted, the def)108 144 +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 desire\ +d, the programmable completion func-)108 160.8 R .632(tions force readl\ +ine to append a slash to completed names which are symbolic links to di\ +rectories, subject)108 172.8 R 2.762(to the v)108 184.8 R 2.762 (alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 (readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 -(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 729.6 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 196.8 Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(50)192.055 E 0 Cg EP -%%Page: 51 51 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .19 -(There is some support for dynamically modifying completions.)108 84 R -.191(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 96 R 1.33(ault completion speci\214ed with)-.1 F/F1 -10/Times-Bold@0 SF 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83 -(sp)-.55 G 1.33(ossible for shell functions e)-3.83 F -.15(xe)-.15 G -1.33(cuted as).15 F .93(completion handlers to indicate that completion\ - should be retried by returning an e)108 108 R .93(xit status of 124.) --.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the c\ -ompspec associated with the command on which completion is)108 120 R -.665(being attempted \(supplied as the \214rst ar)108 132 R .666 +.19(There is some support for dynamically modifying completions.)108 +213.6 R .191(This is most useful when used in combina-)5.191 F 1.172 +(tion with a def)108 225.6 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 237.6 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 249.6 R .665 +(being attempted \(supplied as the \214rst ar)108 261.6 R .666 (gument when the function is e)-.18 F -.15(xe)-.15 G .666 (cuted\), programmable completion).15 F .084(restarts from the be)108 -144 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 -G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F .083 -(ws a set of)-.25 F(completions to be b)108 156 Q(uilt dynamically as c\ -ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 172.8 S 2.636(ri).15 G .137 +273.6 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 285.6 Q(uilt dynamicall\ +y as completion is attempted, rather than being loaded all at once.)-.2 +E -.15(Fo)108 302.4 S 2.636(ri).15 G .137 (nstance, assuming that there is a library of compspecs, each k)-2.636 F .137(ept in a \214le corresponding to the name of)-.1 F -(the command, the follo)108 184.8 Q(wing def)-.25 E +(the command, the follo)108 314.4 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F2 10/Courier@0 SF(_completion_loader\(\))108 201.6 Q({)108 213.6 Q 6 -(.")144 225.6 S +E/F2 10/Courier@0 SF(_completion_loader\(\))108 331.2 Q({)108 343.2 Q 6 +(.")144 355.2 S (/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -237.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108 -249.6 Q/F3 10.95/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0 -.372(When the)108 290.4 R F1 .372(\255o history)2.872 F F0 .372 +367.2 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +379.2 Q/F3 10.95/Times-Bold@0 SF(HIST)72 408 Q(OR)-.197 E(Y)-.383 E F0 +.372(When the)108 420 R F1 .372(\255o history)2.872 F F0 .372 (option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372 (iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304 -(the list of commands pre)108 302.4 R .304(viously typed.)-.25 F .304 +(the list of commands pre)108 432 R .304(viously typed.)-.25 F .304 (The v)5.304 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) 2.804 E F0 -.25(va)2.554 G .305(riable is used as the number of com-).25 -F .43(mands to sa)108 314.4 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43 +F .43(mands to sa)108 444 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43 (istory list.)-2.93 F .43(The te)5.43 F .429(xt of the last)-.15 F F5 (HISTSIZE)2.929 E F0 .429(commands \(def)2.679 F .429(ault 500\) is sa) -.1 F -.15(ve)-.2 G 2.929(d. The).15 F(shell)2.929 E .287 (stores each command in the history list prior to parameter and v)108 -326.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 338.4 -S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565 +456 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 468 S +4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565 (xpansion is performed, subject to the v)-.15 F 1.565 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.815 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) -A F0 .082 +(and)3.815 E F5(HISTCONTR)108 480 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.)A +F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 367.2 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 +108 496.8 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 E F4(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108 -379.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +508.8 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .658 -(lines speci\214ed by the v)108 391.2 R .658(alue of)-.25 F F5 +(lines speci\214ed by the v)108 520.8 R .658(alue of)-.25 F F5 (HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F1(HISTFILESIZE)3.158 E F0 -.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 403.2 S +.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 532.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 415.2 Q 1.604 +(When the history \214le is read, lines)5.142 F(be)108 544.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 .098 -(stamps for the preceding history line.)108 427.2 R .098 -(These timestamps are optionally displayed depending on the v)5.098 F -.098(alue of)-.25 F(the)108 439.2 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E -F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(wed immediately by a digit are interpreted as time-)-.25 F .151 +(stamps for the follo)108 556.8 R .151(wing history line.)-.25 F .151 +(These timestamps are optionally displayed depending on the v)5.151 F +.15(alue of)-.25 F(the)108 568.8 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E F0 +-.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 (hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 ($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159 -(copied from the history list to)108 451.2 R F5($HISTFILE)2.659 E F6(.)A +(copied from the history list to)108 580.8 R F5($HISTFILE)2.659 E F6(.)A F0 .159(If the)4.659 F F1(histappend)2.658 E F0 .158 (shell option is enabled \(see the description of)2.658 F F1(shopt)108 -463.2 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081 +592.8 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081 (TIN COMMANDS)-.828 F F0(belo)2.332 E .082 (w\), the lines are appended to the history \214le, otherwise the)-.25 F -.197(history \214le is o)108 475.2 R -.15(ve)-.15 G 2.697(rwritten. If) +.197(history \214le is o)108 604.8 R -.15(ve)-.15 G 2.697(rwritten. If) .15 F F5(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\ unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583 -(If the)108 487.2 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 +(If the)108 616.8 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 G .584 (riable is set, time stamps are written to the history \214le, mark).25 -F .584(ed with the his-)-.1 F 1.148(tory comment character)108 499.2 R +F .584(ed with the his-)-.1 F 1.148(tory comment character)108 628.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 511.2 +(character to distinguish timestamps from other history lines.)108 640.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 523.2 R F5(HISTFILESIZE)3.257 E +(truncated to contain no more than)108 652.8 R F5(HISTFILESIZE)3.257 E F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 535.2 Q +(is unset, or set to null, a non-)3.007 F(numeric v)108 664.8 Q (alue, or a numeric v)-.25 E (alue less than zero, the history \214le is not truncated.)-.25 E .298 -(The b)108 552 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see)2.798 -E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0(belo) -2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15(xe) --.15 G(-).15 E .472(cute a portion of the history list.)108 564 R(The) -5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471 +(The b)108 681.6 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see) +2.798 E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0 +(belo)2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15 +(xe)-.15 G(-).15 E .472(cute a portion of the history list.)108 693.6 R +(The)5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471 (iltin may be used to display or modify the history list and).2 F .001 -(manipulate the history \214le.)108 576 R .001 +(manipulate the history \214le.)108 705.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 588 Q -(vide access to the history list.)-.15 E 1.486(The shell allo)108 604.8 -R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 -(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F5(HISTCONTR)3.985 -E(OL)-.27 E F0(and)3.735 E F5(HISTIGNORE)108 616.8 Q F0 -.25(va)2.707 G -.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o) --.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F1 -(cmdhist)108 628.8 Q F0 .75 +-.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 717.6 Q +(vide access to the history list.)-.15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(53)193.45 E 0 Cg EP +%%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 1.486 +(The shell allo)108 84 R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986 +(rw).15 G 1.486(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 +G 3.986(nt)-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E/F1 9 +/Times-Bold@0 SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1 +(HISTIGNORE)108 96 Q F0 -.25(va)2.707 G .457 +(riables may be set to cause the shell to sa).25 F .758 -.15(ve o)-.2 H +.458(nly a subset of the commands entered.).15 F(The)5.458 E/F2 10 +/Times-Bold@0 SF(cmdhist)108 108 Q F0 .75 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 -(the same history entry)108 640.8 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 120 R 3.577(,a)-.65 G 1.077 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.577 E F0 -.374(shell option causes the shell to sa)108 652.8 R .674 -.15(ve t)-.2 -H .374(he command with embedded ne).15 F .373 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F2(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 132 R .674 -.15(ve t)-.2 H +.374(he command with embedded ne).15 F .373 (wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 -(description of the)108 664.8 R F1(shopt)2.818 E F0 -.2(bu)2.818 G .318 -(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F +(description of the)108 144 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F (UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 -(for information on setting and)2.568 F(unsetting shell options.)108 -676.8 Q F3(HIST)72 693.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E -(ANSION)-.81 E F0 .611(The shell supports a history e)108 705.6 R .611 -(xpansion feature that is similar to the history e)-.15 F .61 -(xpansion in)-.15 F F1(csh.)3.11 E F0 .61(This section)5.61 F .87 -(describes what syntax features are a)108 717.6 R -.25(va)-.2 G 3.371 -(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(for information on setting and)2.568 F(unsetting shell options.)108 156 +Q/F3 10.95/Times-Bold@0 SF(HIST)72 172.8 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 +184.8 R .611(xpansion feature that is similar to the history e)-.15 F +.61(xpansion in)-.15 F F2(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 +F .87(describes what syntax features are a)108 196.8 R -.25(va)-.2 G +3.371(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 (ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F -2.014(can be disabled using the)108 729.6 R F1(+H)4.514 E F0 2.014 -(option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F5 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 -(TIN COMMANDS)-.828 F F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(51)192.055 E 0 Cg EP -%%Page: 52 52 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(belo)108 84 Q 2.5 -(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H -(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E -1.305(History e)108 100.8 R 1.305(xpansions introduce w)-.15 F 1.306(or\ -ds from the history list into the input stream, making it easy to repea\ -t)-.1 F .21(commands, insert the ar)108 112.8 R .21(guments to a pre) --.18 F .209 +2.014(can be disabled using the)108 208.8 R F2(+H)4.514 E F0 2.014 +(option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014 +(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 +(TIN COMMANDS)-.828 F F0(belo)108 220.8 Q 2.5(w\). Non-interacti)-.25 F +.3 -.15(ve s)-.25 H(hells do not perform history e).15 E +(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 237.6 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 249.6 R .21(guments to a pre)-.18 F .209 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 124.8 Q(.)-.65 E 1.163(History e)108 -141.6 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F -.1(wo)108 153.6 S 3.2 -(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 -(arts. The)-3.2 F .7 -(\214rst is to determine which line from the history list to use during) -3.2 F 4.367(substitution. The)108 165.6 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.367 F 1.868 -(The line)6.868 F .663(selected from the history is the)108 177.6 R/F1 -10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 -(nd the portions of that line that are acted upon are)-3.163 F F1(wor) -3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F1(modi\214er)108 189.6 -Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 -(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 -(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F -(ashion)-.1 E .352(as when reading input, so that se)108 201.6 R -.15 -(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 -(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 -(one w)108 213.6 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 -(pansions are introduced by the appearance of the history e).15 F .625 -(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 225.6 Q -/F2 10/Times-Bold@0 SF(!)3.511 E F0 .178(by def)3.511 F 2.678 -(ault. Only)-.1 F .178(backslash \()2.678 F F2(\\).833 E F0 2.678(\)a) -.833 G .178(nd single quotes can quote the history e)-2.678 F .177 -(xpansion character)-.15 F 2.677(,b)-.4 G .177(ut the his-)-2.877 F .67 -(tory e)108 237.6 R .67(xpansion character is also treated as quoted if\ - it immediately precedes the closing double quote in a)-.15 F -(double-quoted string.)108 249.6 Q(Se)108 266.4 Q -.15(ve)-.25 G .03 +F(vious)-.25 E(commands quickly)108 261.6 Q(.)-.65 E 1.163(History e)108 +278.4 R 1.163(xpansion is performed immediately after a complete line i\ +s read, before the shell breaks it into)-.15 F -.1(wo)108 290.4 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 302.4 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 314.4 R .766 +(The line selected from the)5.766 F .253(history is the)108 326.4 R/F4 +10/Times-Italic@0 SF -.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253 +(nd the portions of that line that are acted upon are)-2.753 F F4(wor) +2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F4(modi\214er)2.754 E(s) +-.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539 +(able to manipulate the selected w)108 338.4 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 350.4 +R -.15(ve)-.25 G(ral).15 E F4(metac)3.072 E(har)-.15 E(acter)-.15 E F0 +.572(-separated w)B .572(ords surrounded by quotes are considered one w) +-.1 F 3.073(ord. His-)-.1 F .356(tory e)108 362.4 R .355 +(xpansions are introduced by the appearance of the history e)-.15 F .355 +(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F2(!) +3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108 +374.4 R F2(\\).833 E F0 3.29(\)a).833 G .79 +(nd single quotes can quote the history e)-3.29 F .79 +(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F +(xpansion)-.15 E .789(character is also treated as quoted if it immedia\ +tely precedes the closing double quote in a double-quoted)108 386.4 R +(string.)108 398.4 Q(Se)108 415.2 Q -.15(ve)-.25 G .03 (ral characters inhibit history e).15 F .03 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 -F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 278.4 T -3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 427.2 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 290.4 Q(xpansion.)-.15 E(Se)108 307.2 Q -.15 -(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E -F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 -(vior of history e)-.2 F(xpansion.)-.15 E 1.142(If the)108 319.2 R F2 +(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E +F0(will also inhibit e)108 439.2 Q(xpansion.)-.15 E(Se)108 456 Q -.15 +(ve)-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 +E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 +(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 468 R F2 (histv)3.643 E(erify)-.1 E F0 1.143 (shell option is enabled \(see the description of the)3.643 F F2(shopt) 3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 --.18(re)3.643 G(adline).18 E F0(is)3.643 E .461(being used, history sub\ -stitutions are not immediately passed to the shell parser)108 331.2 R -5.46(.I)-.55 G .46(nstead, the e)-5.46 F .46(xpanded line)-.15 F 1.515 -(is reloaded into the)108 343.2 R F2 -.18(re)4.015 G(adline).18 E F0 -1.515(editing b)4.015 F(uf)-.2 E 1.516(fer for further modi\214cation.) --.25 F(If)6.516 E F2 -.18(re)4.016 G(adline).18 E F0 1.516 -(is being used, and the)4.016 F F2(histr)108 355.2 Q(eedit)-.18 E F0 -1.202(shell option is enabled, a f)3.702 F 1.202 +-.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ +stitutions are not immediately passed to the shell parser)108 480 R +5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F +1.516(is reloaded into the)108 492 R F2 -.18(re)4.016 G(adline).18 E F0 +1.516(editing b)4.016 F(uf)-.2 E 1.516(fer for further modi\214cation.) +-.25 F(If)6.516 E F2 -.18(re)4.015 G(adline).18 E F0 1.515 +(is being used, and the)4.015 F F2(histr)108 504 Q(eedit)-.18 E F0 1.202 +(shell option is enabled, a f)3.702 F 1.202 (ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 367.2 S -.25(ff).2 G -1.16(er for correction.).25 F(The)6.16 E F23.66 E F0 1.16 -(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 -(iltin command may be used to see what a history).2 F -.15(ex)108 379.2 -S .056(pansion will do before using it.).15 F(The)5.056 E F22.556 -E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G -.055(iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 391.2 Q -.15(xe)-.15 G +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 516 S -.25(ff).2 G +1.161(er for correction.).25 F(The)6.161 E F23.661 E F0 1.161 +(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16 +(iltin command may be used to see what a history).2 F -.15(ex)108 528 S +.055(pansion will do before using it.).15 F(The)5.055 E F22.555 E +F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G .056 +(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 540 Q -.15(xe)-.15 G (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G -(ilable for subsequent recall.).25 E 2.2(The shell allo)108 408 R 2.2 +(ilable for subsequent recall.).25 E 2.2(The shell allo)108 556.8 R 2.2 (ws control of the v)-.25 F 2.2(arious characters used by the history e) --.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.147(description of)108 -420 R F2(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder) -.15 E F2 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146 +-.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 +568.8 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) +.15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 (shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 432 Q F2 -(Ev)87 448.8 Q(ent Designators)-.1 E F0 .204(An e)108 460.8 R -.15(ve) +(mark history timestamps when writing the history \214le.)108 580.8 Q F2 +(Ev)87 597.6 Q(ent Designators)-.1 E F0 .205(An e)108 609.6 R -.15(ve) -.25 G .204(nt designator is a reference to a command line entry in the\ - history list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e) -108 472.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 489.6 -Q F0 1.608(Start a history substitution, e)144 489.6 R 1.608 + history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e) +108 621.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 F2(!)108 638.4 +Q F0 1.607(Start a history substitution, e)144 638.4 R 1.607 (xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107 -(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F -(\(when the)144 501.6 Q F2(extglob)2.5 E F0 +(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F +(\(when the)144 650.4 Q F2(extglob)2.5 E F0 (shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G -(iltin\).).2 E F2(!)108 513.6 Q F1(n)A F0(Refer to command line)144 -513.6 Q F1(n)2.5 E F0(.).24 E F2<21ad>108 525.6 Q F1(n)A F0 -(Refer to the current command minus)144 525.6 Q F1(n)2.5 E F0(.).24 E F2 -(!!)108 537.6 Q F0(Refer to the pre)144 537.6 Q(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 549.6 Q F1(string) +(iltin\).).2 E F2(!)108 662.4 Q F4(n)A F0(Refer to command line)144 +662.4 Q F4(n)2.5 E F0(.).24 E F2<21ad>108 674.4 Q F4(n)A F0 +(Refer to the current command minus)144 674.4 Q F4(n)2.5 E F0(.).24 E F2 +(!!)108 686.4 Q F0(Refer to the pre)144 686.4 Q(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 698.4 Q F4(string) A F0 .865(Refer to the most recent command preceding the current positi\ -on in the history list starting with)144 549.6 R F1(string)144 561.6 Q -F0(.).22 E F2(!?)108 573.6 Q F1(string)A F2([?])A F0 1.503(Refer to the\ - most recent command preceding the current position in the history list\ - containing)144 585.6 R F1(string)144 597.6 Q F0 5(.T).22 G(he trailing) --5 E F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo) -2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 -SF(^)108 614.6 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 -.783(Quick substitution.)144 621.6 R .783(Repeat the pre)5.783 F .784 -(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.284 E F1 -(string2)3.284 E F0 5.784(.E).02 G(qui)-5.784 E -.25(va)-.25 G .784 -(lent to).25 F -.74(``)144 633.6 S(!!:s/).74 E F1(string1)A F0(/)A F1 -(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 645.6 Q F0 -(The entire command line typed so f)144 645.6 Q(ar)-.1 E(.)-.55 E F2 --.75(Wo)87 662.4 S(rd Designators).75 E F0 -.8(Wo)108 674.4 S 1.314 -(rd designators are used to select desired w).8 F 1.314(ords from the e) --.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.313 -(separates the e)3.813 F -.15(ve)-.25 G 1.313(nt speci\214cation).15 F -.529(from the w)108 686.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G -3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 -(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 -($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) --3.029 E F2(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301 -(are numbered from the be)108 698.4 R 1.301 -(ginning of the line, with the \214rst w)-.15 F 1.3 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.3 G 1.3(rds are).8 F -(inserted into the current line separated by single spaces.)108 710.4 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(52)192.055 E 0 Cg EP -%%Page: 53 53 +on in the history list starting with)144 698.4 R F4(string)144 710.4 Q +F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(54)193.45 E 0 Cg +EP +%%Page: 55 55 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2 -10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w) -A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5 -(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063 -(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar) -2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064 -(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144 -144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0(The w)144 156 Q -(ord matched by the most recent `?)-.1 E F2(string)A F0(?' search.)A F2 -(x)108.77 168 Q F1A F2(y)A F0 2.5(Ar)144 168 S(ange of w)-2.5 E -(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E -F2(y)A F0('.)A F1(*)108 180 Q F0 .316(All of the w)144 180 R .316 -(ords b)-.1 F .316(ut the zeroth.)-.2 F .315(This is a synon)5.315 F -.315(ym for `)-.15 F F2(1\255$)A F0 2.815('. It)B .315 -(is not an error to use)2.815 F F1(*)2.815 E F0 .315(if there is)2.815 F -(just one w)144 192 Q(ord in the e)-.1 E -.15(ve)-.25 G -(nt; the empty string is returned in that case.).15 E F1(x*)108 204 Q F0 -(Abbre)144 204 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 216 Q -F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1 -(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 -232.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G -(nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E --.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 249.6 Q F0 .183 -(After the optional w)108 261.6 R .183(ord designator)-.1 F 2.683(,t)-.4 -G .184(here may appear a sequence of one or more of the follo)-2.683 F -.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 273.6 Q F1(h) -108 290.4 Q F0(Remo)144 290.4 Q .3 -.15(ve a t)-.15 H +SF(!?)108 84 Q/F2 10/Times-Italic@0 SF(string)A F1([?])A F0 1.503(Refer\ + to the most recent command preceding the current position in the histo\ +ry list containing)144 96 R F2(string)144 108 Q F0 5(.T).22 G +(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2(string)2.84 E +F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12 +/Times-Bold@0 SF(^)108 125 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3 +(^)5 I F0 .784(Quick substitution.)144 132 R .784(Repeat the pre)5.784 F +.784(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.283 E +F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783 +(lent to).25 F -.74(``)144 144 S(!!:s/).74 E F2(string1)A F0(/)A F2 +(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0 +(belo)2.5 E(w\).)-.25 E F1(!#)108 156 Q F0 +(The entire command line typed so f)144 156 Q(ar)-.1 E(.)-.55 E F1 -.75 +(Wo)87 172.8 S(rd Designators).75 E F0 -.8(Wo)108 184.8 S 1.313 +(rd designators are used to select desired w).8 F 1.314(ords from the e) +-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 1.314 +(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F +.53(from the w)108 196.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G +3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 +(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1 +($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) +-3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 +(are numbered from the be)108 208.8 R 1.3 +(ginning of the line, with the \214rst w)-.15 F 1.301 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 +F(inserted into the current line separated by single spaces.)108 220.8 Q +F1 2.5(0\()108 237.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 249.6 Q +2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E +F2(n)108.36 261.6 Q F0(The)144 261.6 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E +F1(^)108 273.6 Q F0(The \214rst ar)144 273.6 Q 2.5(gument. That)-.18 F +(is, w)2.5 E(ord 1.)-.1 E F1($)108 285.6 Q F0 .064(The last w)144 285.6 +R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064 +(gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F +.063(ord if there is only)-.1 F(one w)144 297.6 Q(ord in the line.)-.1 E +F1(%)108 309.6 Q F0(The w)144 309.6 Q(ord matched by the most recent `?) +-.1 E F2(string)A F0(?' search.)A F2(x)108.77 321.6 Q F1A F2(y)A F0 +2.5(Ar)144 321.6 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C +(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 333.6 Q F0 +.315(All of the w)144 333.6 R .315(ords b)-.1 F .315(ut the zeroth.)-.2 +F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 +('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 +(if there is)2.816 F(just one w)144 345.6 Q(ord in the e)-.1 E -.15(ve) +-.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 +357.6 Q F0(Abbre)144 357.6 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1 +<78ad>108 369.6 Q F0(Abbre)144 369.6 Q(viates)-.25 E F2(x\255$)2.5 E F0 +(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E +(ord.)-.1 E(If a w)108 386.4 Q(ord designator is supplied without an e) +-.1 E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E +(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 +(Modi\214ers)87 403.2 Q F0 .184(After the optional w)108 415.2 R .184 +(ord designator)-.1 F 2.684(,t)-.4 G .183 +(here may appear a sequence of one or more of the follo)-2.684 F .183 +(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 427.2 Q F1(h)108 +444 Q F0(Remo)144 444 Q .3 -.15(ve a t)-.15 H (railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) -108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a)-.15 H +108 456 Q F0(Remo)144 456 Q .3 -.15(ve a)-.15 H (ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) -108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +108 468 Q F0(Remo)144 468 Q .3 -.15(ve a t)-.15 H(railing suf).15 E (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 326.4 Q F0(Remo)144 326.4 Q .3 -.15 -(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 -338.4 Q F0(Print the ne)144 338.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E -(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 350.4 Q F0 -(Quote the substituted w)144 350.4 Q -(ords, escaping further substitutions.)-.1 E F1(x)108 362.4 Q F0 -(Quote the substituted w)144 362.4 Q(ords as with)-.1 E F1(q)2.5 E F0 -2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne) -2.5 E(wlines.)-.25 E F1(s/)108 374.4 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E -F1(/)A F0(Substitute)144 386.4 Q F2(ne)3.082 E(w)-.15 E F0 .221 -(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221(in the e) +(ving the basename.)-.2 E F1(e)108 480 Q F0(Remo)144 480 Q .3 -.15(ve a) +-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 492 Q +F0(Print the ne)144 492 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 +E -.15(xe)-.15 G(cute it.).15 E F1(q)108 504 Q F0 +(Quote the substituted w)144 504 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 516 Q F0 +(Quote the substituted w)144 516 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5 +(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5 +E(wlines.)-.25 E F1(s/)108 528 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A +F0(Substitute)144 540 Q F2(ne)3.081 E(w)-.15 E F0 .221 +(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e) 3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G -.221(elimiter can be used in place)-2.721 F .616(of /.)144 398.4 R .617 +.221(elimiter can be used in place)-2.721 F .617(of /.)144 552 R .617 (The \214nal delimiter is optional if it is the last character of the e) -5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 -F .666(be quoted in)144 410.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) -3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 +5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 +F .666(be quoted in)144 564 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526 +E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .274(single backslash will quote the &.)144 422.4 R -(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 -F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 -(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E -(ous history substitutions took place, the last)144 434.4 Q F2(string) -2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 -(&)108 446.4 Q F0(Repeat the pre)144 446.4 Q(vious substitution.)-.25 E -F1(g)108 458.4 Q F0 .398(Cause changes to be applied o)144 458.4 R -.15 -(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398 -(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A -F0 2.897('\()C(e.g.,)-2.897 E(`)144 470.4 Q F1(:gs/)A F2(old)A F1(/)A F2 -(ne)A(w)-.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 -(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 -(elimiter can be used in place of /, and the \214nal)-3.718 F .09 -(delimiter is optional if it is the last character of the e)144 482.4 R --.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 -(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 494.4 Q F0 -(.)A F1(G)108 506.4 Q F0(Apply the follo)144 506.4 Q(wing `)-.25 E F1(s) -A F0 2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15 -(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 523.2 Q -(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062 -(Unless otherwise noted, each b)108 535.2 R .062(uiltin command documen\ -ted in this section as accepting options preceded by)-.2 F F1108 -547.2 Q F0(accepts)2.534 E F12.534 E F0 .034 -(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E F0 -(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and) -.2 F 1.548(do not treat)108 559.2 R F14.048 E F0(specially)4.048 E -6.549(.T)-.65 G(he)-6.549 E F1(exit)4.049 E F0(,)A F1(logout)4.049 E F0 -(,)A F1 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F1(br)4.049 E(eak)-.18 -E F0(,)A F1(continue)4.049 E F0(,)A F1(let)4.049 E F0 4.049(,a)C(nd) --4.049 E F1(shift)4.049 E F0 -.2(bu)4.049 G 1.549(iltins accept and).2 F -.261(process ar)108 571.2 R .261(guments be)-.18 F .261(ginning with) --.15 F F12.761 E F0 .261(without requiring)2.761 F F12.761 E -F0 5.261(.O)C .261(ther b)-5.261 F .26(uiltins that accept ar)-.2 F .26 -(guments b)-.18 F .26(ut are not)-.2 F 1.154 -(speci\214ed as accepting options interpret ar)108 583.2 R 1.154 -(guments be)-.18 F 1.154(ginning with)-.15 F F13.654 E F0 1.154 -(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F1 -3.654 E F0(to)3.654 E(pre)108 595.2 Q -.15(ve)-.25 G -(nt this interpretation.).15 E F1(:)108 613.2 Q F0([)2.5 E F2(ar)A -(guments)-.37 E F0(])A .452(No ef)144 625.2 R .452 -(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding) --.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F -2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 637.2 R -(return status is zero.)2.5 E F1(.)110.5 654 Q F2(\214lename)6.666 E F0 -([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 666 Q(ce)-.18 E F2 -(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 -(Read and e)144 678 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 -(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 -(vironment and return the e)-.4 F(xit)-.15 E 1.458 -(status of the last command e)144 690 R -.15(xe)-.15 G 1.458(cuted from) -.15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2(\214lename) -5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F .608 -(names in)144 702 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 -.608(are used to \214nd the directory containing)2.858 F F2(\214lename) -3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 --.666(PA)3.108 G(TH)-.189 E F0 .833(need not be e)144 714 R -.15(xe)-.15 -G 3.333(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2 -.832(posix mode)3.332 F F0 3.332(,t)C .832 -(he current directory is searched if no)-3.332 F .981 -(\214le is found in)144 726 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 -/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 -E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .982(f, the)-.25 F(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(53)192.055 E 0 Cg EP -%%Page: 54 54 +F0 5.666(.A).77 G .275(single backslash will quote the &.)144 576 R(If) +5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2 +(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774(fn) +-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E +(ous history substitutions took place, the last)144 588 Q F2(string)2.84 +E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1(&) +108 600 Q F0(Repeat the pre)144 600 Q(vious substitution.)-.25 E F1(g) +108 612 Q F0 .397(Cause changes to be applied o)144 612 R -.15(ve)-.15 G +2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) +.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 +('\()C(e.g.,)-2.898 E(`)144 624 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) +-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 +(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 +(elimiter can be used in place of /, and the \214nal)-3.718 F .089 +(delimiter is optional if it is the last character of the e)144 636 R +-.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 +(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 648 Q F0(.)A +F1(G)108 660 Q F0(Apply the follo)144 660 Q(wing `)-.25 E F1(s)A F0 2.5 +('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G +(nt line.).15 E/F4 10.95/Times-Bold@0 SF(SHELL B)72 676.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 688.8 +R .062(uiltin command documented in this section as accepting options p\ +receded by)-.2 F F1108 700.8 Q F0(accepts)3.077 E F13.077 E F0 +.577(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E +F0(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .462(and do not treat)108 712.8 R F1 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit) +2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A +F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) +2.961 G .461(iltins accept and).2 F .26(process ar)108 724.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F F12.76 E F0 .261 +(without requiring)2.76 F F12.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 +(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(55)193.45 +E 0 Cg EP +%%Page: 56 56 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 -SF -.666(PA)144 84 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112 -(If an)5.112 F(y)-.15 E/F2 10/Times-Italic@0 SF(ar)2.612 E(guments)-.37 -E F0 .112(are supplied, the)2.612 F 2.612(yb)-.15 G .112 -(ecome the positional parameters when)-2.612 F F2(\214lename)144 96 Q F0 -1.697(is e)4.196 F -.15(xe)-.15 G 4.197(cuted. Otherwise).15 F 1.697 -(the positional parameters are unchanged.)4.197 F 1.697(If the)6.697 F -/F3 10/Times-Bold@0 SF4.197 E F0 1.697(option is)4.197 F(enabled,) -144 108 Q F3(sour)3.618 E(ce)-.18 E F0 1.118(inherits an)3.618 F 3.618 -(yt)-.15 G 1.118(rap on)-3.618 F F3(DEB)3.618 E(UG)-.1 E F0 3.618(;i)C -3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118(ot, an) --3.618 F(y)-.15 E F3(DEB)3.617 E(UG)-.1 E F0 1.117(trap string is sa) -3.617 F -.15(ve)-.2 G 3.617(da).15 G(nd)-3.617 E .36 -(restored around the call to)144 120 R F3(sour)2.86 E(ce)-.18 E F0 2.86 -(,a)C(nd)-2.86 E F3(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F F3 -(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 -(cutes. If).15 F F32.86 E F0(is)2.86 E 1.435 -(not set, and the sourced \214le changes the)144 132 R F3(DEB)3.935 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.154 +(speci\214ed as accepting options interpret ar)108 84 R 1.154 +(guments be)-.18 F 1.154(ginning with)-.15 F/F1 10/Times-Bold@0 SF +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F13.654 E F0(to)3.654 E(pre)108 96 +Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 114 Q F0([)2.5 E +/F2 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 126 R +.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F +(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an) +3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 +138 R(return status is zero.)2.5 E F1(.)110.5 154.8 Q F2(\214lename) +6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 166.8 Q(ce) +-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 +(Read and e)144 178.8 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 +(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 +(vironment and return the e)-.4 F(xit)-.15 E 1.458 +(status of the last command e)144 190.8 R -.15(xe)-.15 G 1.458 +(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2 +(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F +.608(names in)144 202.8 R/F3 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 +E F0 .608(are used to \214nd the directory containing)2.858 F F2 +(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) +-5.608 F F3 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 214.8 +R -.15(xe)-.15 G 3.332(cutable. When).15 F F1(bash)3.332 E F0 .832 +(is not in)3.332 F F2 .832(posix mode)3.332 F F0 3.332(,t)C .833 +(he current directory is searched if no)-3.332 F .982 +(\214le is found in)144 226.8 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 9 +/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 +E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 +(iltin command is turned of).2 F .981(f, the)-.25 F F3 -.666(PA)144 +238.8 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F +(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F +2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 +(\214lename)144 250.8 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197 +(cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.) +4.197 F 1.697(If the)6.697 F F14.197 E F0 1.696(option is)4.197 F +(enabled,)144 262.8 Q F1(sour)3.617 E(ce)-.18 E F0 1.117(inherits an) +3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F1(DEB)3.617 E(UG)-.1 E F0 +3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118 +(ot, an)-3.618 F(y)-.15 E F1(DEB)3.618 E(UG)-.1 E F0 1.118 +(trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36 +(restored around the call to)144 274.8 R F1(sour)2.86 E(ce)-.18 E F0 +2.86(,a)C(nd)-2.86 E F1(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F +F1(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 +(cutes. If).15 F F12.86 E F0(is)2.86 E 1.435 +(not set, and the sourced \214le changes the)144 286.8 R F1(DEB)3.935 E (UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 -(alue is retained when)-4.185 F F3(sour)3.935 E(ce)-.18 E F0 3.762 -(completes. The)144 144 R 1.262 -(return status is the status of the last command e)3.762 F 1.263 -(xited within the script \(0 if no)-.15 F(commands are e)144 156 Q -.15 -(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0 -(is not found or cannot be read.)2.68 E F3(alias)108 172.8 Q F0([)2.5 E -F3A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..]) --2.5 E F3(Alias)144 184.8 Q F0 2.725(with no ar)5.225 F 2.724 -(guments or with the)-.18 F F35.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F3(alias)5.224 E -F2(name)144 196.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.763 +(completes. The)144 298.8 R 1.262 +(return status is the status of the last command e)3.763 F 1.262 +(xited within the script \(0 if no)-.15 F(commands are e)144 310.8 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F1(alias)108 327.6 Q F0([)2.5 +E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(Alias)144 339.6 Q F0 2.724(with no ar)5.224 F 2.724 +(guments or with the)-.18 F F15.224 E F0 2.724 +(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E +F2(name)144 351.6 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 (guments are supplied, an alias is de\214ned for each)-.18 F F2(name) -3.08 E F0(whose)144 208.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15 +3.08 E F0(whose)144 363.6 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15 (ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) 2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 -(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579 -(tution when the alias is e)144 220.8 R 3.079(xpanded. F)-.15 F .579 +(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 375.6 R 3.079(xpanded. F)-.15 F .579 (or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 -(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079 -F 1.314(plied, the name and v)144 232.8 R 1.314 -(alue of the alias is printed.)-.25 F F3(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F --.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E -(which no alias has been de\214ned.)144 244.8 Q F3(bg)108 261.6 Q F0([) -2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -273.6 R F2(jobspec)3.244 E F0 .745 -(in the background, as if it had been started with)3.244 F F3(&)3.245 E -F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 285.6 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F3 -(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 -(when job control is disabled or)144 297.6 R 2.919(,w)-.4 G .419 -(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G -(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G -(ot)-2.919 E(found or w)144 309.6 Q(as started without job control.)-.1 -E F3(bind)108 326.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F3(\255lpsvPSVX)-2.5 E F0(])A F3(bind)108 338.4 Q F0([)2.5 E F3 -A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F3-2.5 E F2 -(function)2.5 E F0 2.5(][)C F3-2.5 E F2(function)2.5 E F0 2.5(][)C -F3-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F3(bind)108 350.4 Q F0 -([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F32.5 E F2 -(\214lename)2.5 E F3(bind)108 362.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 -G(ymap)-.2 E F0(])A F32.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(shell\255command)A F3(bind)108 374.4 Q F0([)2.5 E F3A F2 -.1(ke) +(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 387.6 R 1.314 +(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F +-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(which no alias has been de\214ned.)144 399.6 Q F1(bg)108 416.4 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 +428.4 R F2(jobspec)3.245 E F0 .745 +(in the background, as if it had been started with)3.245 F F1(&)3.244 E +F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 440.4 Q F0 .671 +(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) +-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 452.4 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G +(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G +(ot)-2.918 E(found or w)144 464.4 Q(as started without job control.)-.1 +E F1(bind)108 481.2 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 493.2 Q F0([)2.5 E F1 +A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 +(function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 505.2 Q F0 +([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 +(\214lename)2.5 E F1(bind)108 517.2 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(shell\255command)A F1(bind)108 529.2 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(function\255name)A F3(bind)108 386.4 Q F0([)2.5 E F3A F2 -.1(ke) +(function\255name)A F1(bind)108 541.2 Q F0([)2.5 E F1A F2 -.1(ke) 2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C -(adline\255command).37 E F0 .239(Display current)144 398.4 R F3 -.18(re) -2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 -(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 -(equence to a).15 F F3 -.18(re)2.738 G(adline).18 E F0 .238(function or) -2.738 F .475(macro, or set a)144 410.4 R F3 -.18(re)2.975 G(adline).18 E -F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F -.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 -(.inputr)144 422.4 Q(c)-.37 E F0 2.984(,b).31 G .484 -(ut each binding or command must be passed as a separate ar)-3.184 F -.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 434.4 R(if supplied, ha)2.5 -E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F3144 -446.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 458.4 Q F2 -.1(ke)5.158 G -(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E -F2 -.1(ke)180 470.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 -(emacs, emacs\255standar)5.693 F 3.192 +(adline\255command).37 E F0 .238(Display current)144 553.2 R F1 -.18(re) +2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 +(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 +(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or) +2.739 F .476(macro, or set a)144 565.2 R F1 -.18(re)2.976 G(adline).18 E +F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F +.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2 +(.inputr)144 577.2 Q(c)-.37 E F0 2.983(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.183 F +.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 589.2 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 +601.2 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 613.2 Q F2 -.1(ke)5.159 G +(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af) +.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E +F2 -.1(ke)180 625.2 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192 +(emacs, emacs\255standar)5.692 F 3.193 (d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 482.4 Q F0 4.113(,a)C(nd)-4.113 E F2(vi\255insert) -4.113 E F0(.).68 E F2(vi)6.613 E F0 1.613(is equi)4.113 F -.25(va)-.25 G +(vi\255command)180 637.2 Q F0 4.114(,a)C(nd)-4.114 E F2(vi\255insert) +4.114 E F0(.).68 E F2(vi)6.614 E F0 1.613(is equi)4.114 F -.25(va)-.25 G 1.613(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A -(ve)-.1 E F0 1.614(is also a syn-)4.114 F(on)180 494.4 Q(ym\);)-.15 E F2 +(ve)-.1 E F0 1.613(is also a syn-)4.113 F(on)180 649.2 Q(ym\);)-.15 E F2 (emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 -(emacs\255standar)2.5 E(d)-.37 E F0(.)A F3144 506.4 Q F0 -(List the names of all)180 506.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -(functions.)2.5 E F3144 518.4 Q F0(Display)180 518.4 Q F3 -.18(re) +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 661.2 Q F0 +(List the names of all)180 661.2 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 673.2 Q F0(Display)180 673.2 Q F1 -.18(re) 2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E -(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 530.4 -Q F0(List current)180 530.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F3144 542.4 Q F0(Display)180 -542.4 Q F3 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 685.2 +Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 697.2 Q F0(Display)180 +697.2 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) --.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 554.4 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 566.4 Q -F0(Display)180 566.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5 -(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo) --.15 G(utput.)-2.5 E F3144 578.4 Q F0(Display)180 578.4 Q F3 -.18 -(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F3144 590.4 Q F0(List current)180 590.4 Q -F3 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F3144 602.4 Q F2(\214lename)2.5 E F0(Read k)180 -614.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A -F3144 626.4 Q F2(function)2.5 E F0(Query about which k)180 638.4 Q --.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H -(he named).1 E F2(function)2.5 E F0(.)A F3144 650.4 Q F2(function) -2.5 E F0(Unbind all k)180 662.4 Q -.15(ey)-.1 G 2.5(sb).15 G -(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F3144 674.4 Q -F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 686.4 Q .3 -.15(ve a)-.15 H .3 --.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 -(.)A F3144 698.4 Q F2 -.1(ke)2.5 G(yseq)-.2 E F3(:)A F2 -(shell\255command)A F0(Cause)180 710.4 Q F2(shell\255command)4.325 E F0 -1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) --.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 722.4 Q F0 1.765(is e) -4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F F1 -(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 -(riable to the contents of the).25 F(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(54)192.055 E 0 Cg EP -%%Page: 55 55 +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 709.2 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash 5.0)72 768 +Q(2018 March 15)144.29 E(56)193.45 E 0 Cg EP +%%Page: 57 57 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.18(re)180 84 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353 -(fer and the)-.25 F/F2 9/Times-Bold@0 SF(READLINE_POINT)3.853 E F0 -.25 -(va)3.603 G 1.353(riable to the current location of the).25 F 2.012 -(insertion point.)180 96 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 -(cuted command changes the v).15 F 2.011(alue of)-.25 F F2 -(READLINE_LINE)4.511 E F0(or)4.261 E F2(READLINE_POINT)180 108 Q/F3 9 +SF144 84 Q F0(Display)180 84 Q F1 -.18(re)2.5 G(adline).18 E F0 +-.1(ke)2.5 G 2.5(ys)-.05 G(equences bound to macros and the strings the) +-2.5 E 2.5(yo)-.15 G(utput.)-2.5 E F1144 96 Q F0(Display)180 96 Q +F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G +(an be re-read.)-2.5 E F1144 108 Q F0(List current)180 108 Q F1 +-.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues.)-.25 E F1144 120 Q/F2 10/Times-Italic@0 SF(\214lename)2.5 +E F0(Read k)180 132 Q .3 -.15(ey b)-.1 H(indings from).15 E F2 +(\214lename)2.5 E F0(.)A F1144 144 Q F2(function)2.5 E F0 +(Query about which k)180 156 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o) +-2.5 H .2 -.1(ke t).4 H(he named).1 E F2(function)2.5 E F0(.)A F1 +144 168 Q F2(function)2.5 E F0(Unbind all k)180 180 Q -.15(ey)-.1 G 2.5 +(sb).15 G(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 +192 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 204 Q .3 -.15(ve a)-.15 H +.3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E +F0(.)A F1144 216 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 +(shell\255command)A F0(Cause)180 228 Q F2(shell\255command)4.325 E F0 +1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) +-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 240 Q F0 1.764(is e) +4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 +/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 +(riable to the contents of the).25 F F1 -.18(re)180 252 S(adline).18 E +F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3 +(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 +(riable to the current location of the).25 F 2.011(insertion point.)180 +264 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 +(cuted command changes the v).15 F 2.011(alue of)-.25 F F3 +(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 276 Q/F4 9 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G -(alues will be re\215ected in the editing state.)-2.75 E F1144 120 -Q F0 .829(List all k)180 120 R 1.129 -.15(ey s)-.1 H .829 +(alues will be re\215ected in the editing state.)-2.75 E F1144 288 +Q F0 .83(List all k)180 288 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 132 Q(The return v) -144 148.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 300 Q(The return v) +144 316.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 165.6 Q(eak)-.18 E F0([)2.5 E/F4 10/Times-Italic@0 SF(n)A F0 -(])A .055(Exit from within a)144 177.6 R F1 -.25(fo)2.555 G(r).25 E F0 -(,)A F1(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E -F1(select)2.555 E F0 2.555(loop. If)2.555 F F4(n)2.555 E F0 .055 -(is speci\214ed, break)2.555 F F4(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G -(ls.).15 E F4(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 -E F0(1.)2.554 E(If)144 189.6 Q F4(n)3.074 E F0 .215(is greater than the\ - number of enclosing loops, all enclosing loops are e)2.954 F 2.715 -(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 -201.6 Q F4(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 218.4 S(iltin).2 E F4(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F4(ar)A(guments)-.37 E F0(])A(Ex)144 230.4 Q .793 -(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F4 +E F1(br)108 333.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 345.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 +(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G +(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 +E F0(1.)2.555 E(If)144 357.6 Q F2(n)3.075 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.955 F 2.714 +(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144 +369.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 386.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(])A(Ex)144 398.4 Q .792 +(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 -F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 +F .793(xit status.)-.15 F .793(This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -242.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -254.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +410.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +422.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E -5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 266.4 Q(alse if)-.1 -E F4(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F1(caller)108 283.2 Q F0([)2.5 E F4 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 295.2 R .254(xt of an)-.15 F +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 434.4 Q(alse if)-.1 +E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E +(uiltin command.)-.2 E F1(caller)108 451.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 463.2 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 307.2 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F4 -.2 -(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324 +.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 475.2 Q +(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 +(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.253(subroutine call.)144 319.2 R .253(If a non-ne)5.253 F -.05(ga)-.15 -G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 -F F4 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 -(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +.254(subroutine call.)144 487.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 +F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253 +(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 331.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 343.2 Q(xtra information may be used, for e)-.15 E .001 -(xample, to print a stack trace.)-.15 F .001(The current frame is frame) -5.001 F 3.02(0. The)144 355.2 R .52(return v)3.02 F .52 -(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F F4 -.2(ex)3.019 G(pr).2 E F0 .519 -(does not corre-)3.019 F(spond to a v)144 367.2 Q -(alid position in the call stack.)-.25 E F1(cd)108 384 Q F0([)2.5 E F1 -A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F4 -(dir)A F0(])A .321(Change the current directory to)144 396 R F4(dir) -2.821 E F0 5.321(.i)C(f)-5.321 E F4(dir)2.821 E F0 .322 -(is not supplied, the v)2.821 F .322(alue of the)-.25 F F2(HOME)2.822 E -F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 408 R -3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035 -(guments follo)-.18 F(wing)-.25 E F4(dir)3.535 E F0 1.035(are ignored.) -3.535 F 1.035(The v)6.035 F(ariable)-.25 E F2(CDP)3.535 E -.855(AT)-.666 -G(H).855 E F0(de\214nes)3.285 E .849 -(the search path for the directory containing)144 420 R F4(dir)3.349 E -F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F2(CDP)3.35 E -.855 -(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F4(dir)144 432 Q F0 -5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 -(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 -(ull directory name)-3.165 F(in)144 444 Q F2(CDP)4.162 E -.855(AT)-.666 -G(H).855 E F0 1.662(is the same as the current directory)3.912 F 4.162 +ent e)144 499.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 511.2 R .001(xtra information may be used, for e)-.15 F .001 +(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E +3.019(0. The)144 523.2 R .519(return v)3.019 F .519 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 +(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 +(does not corre-)3.02 F(spond to a v)144 535.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 552 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 +(dir)A F0(])A .322(Change the current directory to)144 564 R F2(dir) +2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E +F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 576 R +3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 +(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.286 E .85 +(the search path for the directory containing)144 588 R F2(dir)3.35 E F0 +3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855 +(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 600 Q F0 +5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 +(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 +(ull directory name)-3.165 F(in)144 612 Q F3(CDP)4.163 E -.855(AT)-.666 +G(H).855 E F0 1.663(is the same as the current directory)3.913 F 4.162 (,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I) -.74 G(f)-6.662 E F4(dir)4.513 E F0(be)4.893 E 1.663 -(gins with a slash \(/\), then)-.15 F F2(CDP)144 456 Q -.855(AT)-.666 G -(H).855 E F0 .191(is not used.)2.441 F(The)5.191 E F12.691 E F0 -.191(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F -.19(ysical directory structure by resolving)-.05 F 1.12 -(symbolic links while tra)144 468 R -.15(ve)-.2 G(rsing).15 E F4(dir) -3.62 E F0 1.12(and before processing instances of)3.62 F F4(..)3.62 E F0 -(in)3.62 E F4(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 -.395(option to the)144 480 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 +.74 G(f)-6.662 E F2(dir)4.512 E F0(be)4.892 E 1.662 +(gins with a slash \(/\), then)-.15 F F3(CDP)144 624 Q -.855(AT)-.666 G +(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F12.691 E F0 .191 +(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F .191 +(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 636 R -.15(ve)-.2 G(rsing).15 E F2(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F2(..)3.62 E F0 +(in)3.62 E F2(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 +.395(option to the)144 648 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 (iltin command\); the).2 F F12.895 E F0 .395 (option forces symbolic links to be follo)2.895 F .395(wed by resolv-) --.25 F .443(ing the link after processing instances of)144 492 R F4(..) -2.943 E F0(in)2.943 E F4(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F4(..) -2.943 E F0 .443(appears in)2.943 F F4(dir)2.943 E F0 2.943(,i)C 2.943 -(ti)-2.943 G 2.944(sp)-2.943 G .444(rocessed by remo)-2.944 F(ving)-.15 -E .744(the immediately pre)144 504 R .744(vious pathname component from) --.25 F F4(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 -F .744(ginning of)-.15 F F4(dir)3.244 E F0(.)A 1.465(If the)144 516 R F1 -3.965 E F0 1.465(option is supplied with)3.965 F F13.965 E -F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.466 -(orking directory cannot be successfully)-.1 F .468 -(determined after a successful directory change,)144 528 R F1(cd)2.968 E -F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) -5.467 F .336(that support it, the)144 540 R F12.836 E F0 .336 -(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 +-.25 F .444(ing the link after processing instances of)144 660 R F2(..) +2.943 E F0(in)2.943 E F2(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F2(..) +2.943 E F0 .443(appears in)2.943 F F2(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15 +E .744(the immediately pre)144 672 R .744(vious pathname component from) +-.25 F F2(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 +F .744(ginning of)-.15 F F2(dir)3.244 E F0(.)A 1.466(If the)144 684 R F1 +3.966 E F0 1.466(option is supplied with)3.966 F F13.965 E +F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465 +(orking directory cannot be successfully)-.1 F .467 +(determined after a successful directory change,)144 696 R F1(cd)2.968 E +F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) +5.468 F .337(that support it, the)144 708 R F12.837 E F0 .336 +(option presents the e)2.836 F .336(xtended attrib)-.15 F .336 (utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) -144 552 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 -(ve)-.4 G .71(rted to).15 F F2($OLDPWD)3.21 E F0 .71 +144 720 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 +(ve)-.4 G .71(rted to).15 F F3($OLDPWD)3.21 E F0 .71 (before the directory change is attempted.)2.96 F .71(If a non-)5.71 F -.106(empty directory name from)144 564 R F2(CDP)2.606 E -.855(AT)-.666 G -(H).855 E F0 .107(is used, or if)2.356 F F12.607 E F0 .107 -(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F -.038(is successful, the absolute pathname of the ne)144 576 R 2.538(ww) --.25 G .038(orking directory is written to the standard output.)-2.638 F -(The return v)144 588 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 -604.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F4(command)2.5 E F0([)2.5 E F4 -(ar)A(g)-.37 E F0(...])2.5 E(Run)144 616.8 Q F4(command)2.764 E F0(with) -3.334 E F4(ar)2.894 E(gs)-.37 E F0 .065 -(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065 -F .065(uiltin commands or)-.2 F .502(commands found in the)144 628.8 R -F2 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G -3.002(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi) -3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F4(command)3.201 E -F0(is)3.771 E .399(performed using a def)144 640.8 R .399(ault v)-.1 F -.399(alue for)-.25 F F2 -.666(PA)2.899 G(TH)-.189 E F0 .4 -(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.4 E .175(either the)144 652.8 R F12.675 E F0(or)2.675 E F1 -2.675 E F0 .175(option is supplied, a description of)2.675 F F4(command) -2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E F0 .174 -(option causes)2.674 F 3.317(as)144 664.8 S .817(ingle w)-3.317 F .817 -(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G --.1(ke).2 G F4(command)3.618 E F0 .818(to be displayed; the)4.088 F F1 -144 676.8 Q F0 .25(option produces a more v)2.75 F .25 -(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) -2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 -(xit status)-.15 F 1.004(is 0 if)144 688.8 R F4(command)3.704 E F0 -.1 -(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 -(If neither option is supplied and an error occurred or)6.005 F F4 -(command)144.2 700.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 -(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 712.8 S -(iltin is the e).2 E(xit status of)-.15 E F4(command)2.5 E F0(.).77 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(55)192.055 E 0 Cg EP -%%Page: 56 56 +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(57)193.45 E 0 Cg EP +%%Page: 58 58 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compgen)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(option)A F0 2.5 -(][)C F2(wor)-2.5 E(d)-.37 E F0(])A .012 -(Generate possible completion matches for)144 96 R F2(wor)2.513 E(d)-.37 -E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013 -(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 108 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) -3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) --3.481 F .13(standard output.)144 120 R .13(When using the)5.13 F F1 -2.63 E F0(or)2.63 E F12.631 E F0 .131(options, the v)2.631 F -.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F -(mable completion f)144 132 Q(acilities, while a)-.1 E -.25(va)-.2 G +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .107 +(empty directory name from)144 84 R/F1 9/Times-Bold@0 SF(CDP)2.607 E +-.855(AT)-.666 G(H).855 E F0 .107(is used, or if)2.357 F/F2 10 +/Times-Bold@0 SF2.607 E F0 .106(is the \214rst ar)2.607 F .106 +(gument, and the directory change)-.18 F .038 +(is successful, the absolute pathname of the ne)144 96 R 2.538(ww)-.25 G +.038(orking directory is written to the standard output.)-2.638 F +(The return v)144 108 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 +124.8 Q F0([)2.5 E F2(\255pVv)A F0(])A/F3 10/Times-Italic@0 SF(command) +2.5 E F0([)2.5 E F3(ar)A(g)-.37 E F0(...])2.5 E(Run)144 136.8 Q F3 +(command)2.765 E F0(with)3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 +F .064(uiltin commands or)-.2 F .501(commands found in the)144 148.8 R +F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 160.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399 +(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) +5.399 E .174(either the)144 172.8 R F22.674 E F0(or)2.674 E F2 +2.674 E F0 .175(option is supplied, a description of)2.674 F F3 +(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E +F0 .175(option causes)2.675 F 3.318(as)144 184.8 S .818(ingle w)-3.318 F +.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) +-.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087 +F F2144 196.8 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) +2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 208.8 R F3(command)3.705 E F0 -.1 +(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +(If neither option is supplied and an error occurred or)6.005 F F3 +(command)144.2 220.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 +(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 232.8 S +(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2 +(compgen)108 249.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 261.6 R +F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513 +E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 +(accepted by the)144 273.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) +3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 285.6 R .131(When using the)5.131 F +F22.631 E F0(or)2.631 E F22.631 E F0 .131(options, the v) +2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 +F(mable completion f)144 297.6 Q(acilities, while a)-.1 E -.25(va)-.2 G (ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 -E .352(The matches will be generated in the same w)144 156 R .352 +E .352(The matches will be generated in the same w)144 321.6 R .352 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\ em directly from a completion speci\214cation with the same \215ags.)144 -168 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52 -F(those completions matching)144 180 Q F2(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 204 Q +333.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 345.6 Q F3(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 369.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G -(lid option is supplied, or no matches were generated.).25 E F1 -(complete)108 220.8 Q F0([)3.729 E F1(\255abcdefgjksuv)A F0 3.729(][)C -F1-3.729 E F2(comp-option)3.729 E F0 3.729(][)C F1(\255DE)-3.729 E -F0 3.728(][)C F1-3.728 E F2(action)3.728 E F0 3.728(][)C F1 --3.728 E F2(globpat)3.728 E F0 3.728(][)C F1-3.728 E F2(wor)3.728 -E(dlist)-.37 E F0 3.728(][)C F1-3.728 E F2(func-)3.728 E(tion)108 -232.8 Q F0 2.5(][)C F1-2.5 E F2(command)2.5 E F0(])A([)144 244.8 Q -F1A F2(\214lterpat)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F1-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(]) -A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1(complete \255pr)108 -256.8 Q F0([)2.5 E F1(\255DE)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.633(Specify ho)144 268.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F13.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 -280.8 R .139(xisting completion speci\214cations are printed in a w)-.15 -F .139(ay that allo)-.1 F .139(ws them to be)-.25 F .31 -(reused as input.)144 292.8 R(The)5.31 E F12.81 E F0 .31 -(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 -(ompletion speci\214cation for each)-2.81 F F2(name)2.81 E F0 2.81(,o)C -1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2(name)2.81 E F0(s)A 1.347 -(are supplied, all completion speci\214cations.)144 304.8 R(The)6.347 E -F13.847 E F0 1.346(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 316.8 R(`def)-.74 E +(lid option is supplied, or no matches were generated.).25 E F2 +(complete)108 386.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C +F2-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E +F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 +-3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 +E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 +398.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 410.4 Q +F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E +(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) +A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 +422.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E +.634(Specify ho)144 434.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 +(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134 +F .633(If the)5.634 F F23.133 E F0 .633 +(option is supplied, or if no)3.133 F .139(options are supplied, e)144 +446.4 R .139(xisting completion speci\214cations are printed in a w)-.15 +F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.) +144 458.4 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) +-.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 +(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E +F3(name)2.81 E F0(s)A 1.346 +(are supplied, all completion speci\214cations.)144 470.4 R(The)6.347 E +F23.847 E F0 1.347(option indicates that the remaining options) +3.847 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E (ault')-.1 E 3('c)-.74 G .5 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 -328.8 S .955(ommand for which no completion has pre)-3.455 F .955 -(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 -(option indicates that)3.455 F .064 -(the remaining options and actions should apply to `)144 340.8 R -(`empty')-.74 E 2.565('c)-.74 G .065 -(ommand completion; that is, comple-)-2.565 F -(tion attempted on a blank line.)144 352.8 Q 1.438 +494.4 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 +(option indicates that)3.455 F .065 +(the remaining options and actions should apply to `)144 506.4 R +(`empty')-.74 E 2.564('c)-.74 G .064 +(ommand completion; that is, comple-)-2.564 F +(tion attempted on a blank line.)144 518.4 Q 1.437 (The process of applying these completion speci\214cations when w)144 -376.8 R 1.437(ord completion is attempted is)-.1 F(described abo)144 -388.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E -(ogrammable Completion)-.18 E F0(.)A .555 -(Other options, if speci\214ed, ha)144 412.8 R .855 -.15(ve t)-.2 H .555 +542.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 +554.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .556 +(Other options, if speci\214ed, ha)144 578.4 R .856 -.15(ve t)-.2 H .555 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 3.056 -(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) -144 424.8 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E -F13.223 E F0 .722 -(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E -(sion before the)144 436.8 Q F1(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 448.8 Q -F2(comp-option)2.5 E F0(The)184 460.8 Q F2(comp-option)2.79 E F0 .291 +(guments to the)-.18 F F23.055 E F0(,)A F23.055 E F0 3.055 +(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) +144 590.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E +F23.222 E F0 .723 +(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E +(sion before the)144 602.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 614.4 Q +F3(comp-option)2.5 E F0(The)184 626.4 Q F3(comp-option)2.791 E F0 .291 (controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') .15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 472.8 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 484.8 Q F0 -.281(Perform the rest of the def)224 496.8 R(ault)-.1 E F1(bash)2.781 E +(yond the simple)-.15 F(generation of completions.)184 638.4 Q F3 +(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 650.4 Q F0 +.281(Perform the rest of the def)224 662.4 R(ault)-.1 E F2(bash)2.781 E F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -508.8 Q F1(default)184 520.8 Q F0 2.875(Use readline')224 520.8 R 5.375 -(sd)-.55 G(ef)-5.375 E 2.876 +674.4 Q F2(default)184 686.4 Q F0 2.876(Use readline')224 686.4 R 5.376 +(sd)-.55 G(ef)-5.376 E 2.875 (ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 532.8 Q F1(dir)184 544.8 Q(names)-.15 E F0(Perform directory name c\ -ompletion if the compspec generates no matches.)224 556.8 Q F1 -(\214lenames)184 568.8 Q F0 -.7(Te)224 580.8 S .137(ll readline that th\ -e compspec generates \214lenames, so it can perform an).7 F 2.636<798c> --.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 592.8 R -2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-) --2.634 F .45(cial characters, or suppressing trailing spaces\).)224 -604.8 R .45(Intended to be used with shell)5.45 F(functions.)224 616.8 Q -F1(noquote)184 628.8 Q F0 -.7(Te)224 628.8 S .814 -(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F -3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 640.8 Q(ault\).)-.1 E F1(nosort)184 652.8 Q -F0 -.7(Te)224 652.8 S(ll readline not to sort the list of possible comp\ -letions alphabetically).7 E(.)-.65 E F1(nospace)184 664.8 Q F0 -.7(Te) -224 664.8 S .22(ll readline not to append a space \(the def).7 F .22 -(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224 -676.8 Q F1(plusdirs)184 688.8 Q F0 1.985(After an)224 688.8 R 4.485(ym) --.15 G 1.985 -(atches de\214ned by the compspec are generated, directory name)-4.485 F -.584(completion is attempted and an)224 700.8 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 -712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(56)192.055 E 0 Cg -EP -%%Page: 57 57 +224 698.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(58)193.45 E 0 +Cg EP +%%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 96 Q F2 -(action)2.5 E F0(may be one of the follo)2.5 E +SF(dir)184 84 Q(names)-.15 E F0(Perform directory name completion if th\ +e compspec generates no matches.)224 96 Q F1(\214lenames)184 108 Q F0 +-.7(Te)224 120 S .137(ll readline that the compspec generates \214lenam\ +es, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E .134 +(name\255speci\214c processing \(lik)224 132 R 2.634(ea)-.1 G .134 +(dding a slash to directory names, quoting spe-)-2.634 F .45 +(cial characters, or suppressing trailing spaces\).)224 144 R .45 +(Intended to be used with shell)5.45 F(functions.)224 156 Q F1(noquote) +184 168 Q F0 -.7(Te)224 168 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 180 Q(ault\).)-.1 E F1(nosort)184 192 Q F0 +-.7(Te)224 192 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 204 Q F0 -.7(Te)224 204 S +.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 +F .22(ords completed at the end)-.1 F(of the line.)224 216 Q F1 +(plusdirs)184 228 Q F0 1.985(After an)224 228 R 4.485(ym)-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.583(completion is attempted and an)224 240 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 252 +Q F1144 264 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 276 +Q F2(action)2.5 E F0(may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -108 Q F0(Alias names.)224 108 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 120 Q(ar)-.1 E F0(Array v)224 132 Q -(ariable names.)-.25 E F1(binding)184 144 Q(Readline)224 144 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 156 S(iltin) -.2 E F0(Names of shell b)224 156 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 168 -Q F0(Command names.)224 180 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 192 Q(ectory)-.18 E F0(Directory names.)224 204 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 216 -Q F0(Names of disabled shell b)224 228 Q(uiltins.)-.2 E F1(enabled)184 -240 Q F0(Names of enabled shell b)224 240 Q(uiltins.)-.2 E F1(export)184 -252 Q F0(Names of e)224 252 Q(xported shell v)-.15 E 2.5(ariables. May) +288 Q F0(Alias names.)224 288 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 300 Q(ar)-.1 E F0(Array v)224 312 Q +(ariable names.)-.25 E F1(binding)184 324 Q(Readline)224 324 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 336 S(iltin) +.2 E F0(Names of shell b)224 336 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 348 +Q F0(Command names.)224 360 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 372 Q(ectory)-.18 E F0(Directory names.)224 384 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 396 +Q F0(Names of disabled shell b)224 408 Q(uiltins.)-.2 E F1(enabled)184 +420 Q F0(Names of enabled shell b)224 420 Q(uiltins.)-.2 E F1(export)184 +432 Q F0(Names of e)224 432 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -264 Q F0(File names.)224 264 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 276 Q F0(Names of shell functions.)224 288 -Q F1(gr)184 300 Q(oup)-.18 E F0(Group names.)224 300 Q +444 Q F0(File names.)224 444 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 456 Q F0(Names of shell functions.)224 468 +Q F1(gr)184 480 Q(oup)-.18 E F0(Group names.)224 480 Q (May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -312 Q F0(Help topics as accepted by the)224 324 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 336 Q F0(Hostnames, as tak)224 348 +492 Q F0(Help topics as accepted by the)224 504 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 516 Q F0(Hostnames, as tak)224 528 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 360 Q F0 -(Job names, if job control is acti)224 360 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 372 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 384 Q(ed w)-.15 E 2.5(ords. May) +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 540 Q F0 +(Job names, if job control is acti)224 540 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 552 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 564 Q(ed w)-.15 E 2.5(ords. May) -.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -396 Q F0(Names of running jobs, if job control is acti)224 396 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 408 Q(vice)-.1 E F0(Service names.)224 408 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 420 -Q F0 -1.11(Va)224 420 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +576 Q F0(Names of running jobs, if job control is acti)224 576 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 588 Q(vice)-.1 E F0(Service names.)224 588 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 600 +Q F0 -1.11(Va)224 600 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 432 Q F0(Shell option names as accepted by the)224 432 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 444 Q F0 -(Signal names.)224 444 Q F1(stopped)184 456 Q F0 -(Names of stopped jobs, if job control is acti)224 456 Q -.15(ve)-.25 G -(.).15 E F1(user)184 468 Q F0(User names.)224 468 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 480 S -(riable).1 E F0(Names of all shell v)224 480 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 492 Q F2 -(command)2.5 E(command)184 504 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G -1.055(cuted in a subshell en).15 F 1.056 +(shopt)184 612 Q F0(Shell option names as accepted by the)224 612 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 624 Q F0 +(Signal names.)224 624 Q F1(stopped)184 636 Q F0 +(Names of stopped jobs, if job control is acti)224 636 Q -.15(ve)-.25 G +(.).15 E F1(user)184 648 Q F0(User names.)224 648 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 660 S +(riable).1 E F0(Names of all shell v)224 660 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 672 Q F2 +(command)2.5 E(command)184 684 Q F0 1.056(is e)3.556 F -.15(xe)-.15 G +1.056(cuted in a subshell en).15 F 1.056 (vironment, and its output is used as the possible)-.4 F(completions.) -184 516 Q F1144 528 Q F2(function)2.5 E F0 .114 -(The shell function)184 540 R F2(function)2.614 E F0 .114(is e)2.614 F +184 696 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(59)193.45 E 0 Cg +EP +%%Page: 60 60 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(function)2.5 E F0 .113 +(The shell function)184 96 R F2(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 552 R --.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 108 R +-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 564 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 120 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .103(third ar)184 576 R .103 -(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) --2.603 F .104(ord preceding the w)-.1 F .104 -(ord being completed on the current com-)-.1 F .102(mand line.)184 588 R -.102(When it \214nishes, the possible completions are retrie)5.102 F --.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) --.25 F F3(COMPREPL)184 600 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E -F1144 612 Q F2(globpat)2.5 E F0 1.007(The pathname e)184 624 R -1.007(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F -1.008(xpanded to generate the possible comple-)-.15 F(tions.)184 636 Q -F1144 648 Q F2(pr)2.5 E(e\214x)-.37 E(pr)184 660 Q(e\214x)-.37 E -F0 .535(is added at the be)3.035 F .534 +(ord being completed, and the)-.1 F .104(third ar)184 132 R .104 +(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) +-2.604 F .104(ord preceding the w)-.1 F .103 +(ord being completed on the current com-)-.1 F .101(mand line.)184 144 R +.101(When it \214nishes, the possible completions are retrie)5.101 F +-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 156 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 168 Q F2(globpat)2.5 E F0 1.008 +(The pathname e)184 180 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 +E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) +-.15 F(tions.)184 192 Q F1144 204 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 216 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 (ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 672 Q F1144 684 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 684 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 228 Q F1144 240 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 240 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 696 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 708 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14 -(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F 2.008 -(each resultant w)184 720 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15 -F 2.007(possible completions are the members of the)4.508 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(57)192.055 E 0 Cg EP -%%Page: 58 58 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(resultant list which match the w)184 84 Q(ord being completed.)-.1 E/F1 -10/Times-Bold@0 SF144 96 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5 -E(\214lterpat)184 108 Q F0 .455(is a pattern as used for pathname e) -2.955 F 2.956(xpansion. It)-.15 F .456 -(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 120 R 1.596 -(guments, and each completion)-.18 F(matching)184 132 Q F2(\214lterpat) -3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 -(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 -(tes the pattern;).05 F(in this case, an)184 144 Q 2.5(yc)-.15 G +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 252 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 264 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 +(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98 +(each resultant w)184 276 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 +F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0 +3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 288 Q .766 +(vide a mechanism for the w)-.15 F .765 +(ords to contain shell metacharacters or characters in the)-.1 F -.25 +(va)184 300 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.464 F(match the w)184 312 Q(ord being completed.)-.1 E F1144 324 +Q F2(\214lterpat)2.5 E(\214lterpat)184 336 Q F0 .456 +(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F +.455(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 348 R 1.596 +(guments, and each completion)-.18 F(matching)184 360 Q F2(\214lterpat) +3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 +(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 +(tes the pattern;).05 F(in this case, an)184 372 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .467(The return v)144 160.8 R .467 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 388.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 172.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H -1.362(ompletion speci\214cation for a).15 F F2(name)144 184.8 Q F0 +(lid option is supplied, an option other than).25 F F12.967 E F0 +(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 +(plied without a)144 400.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H +1.361(ompletion speci\214cation for a).15 F F2(name)144 412.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 201.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(compopt)108 429.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 213.6 R +(name)-2.5 E F0(])A .447(Modify completion options for each)144 441.6 R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 -(completion if no)144 225.6 R F2(name)3.225 E F0 3.225(sa)C .725 -(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .726 -(n, display the completion options for).15 F(each)144 237.6 Q F2(name) -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 453.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .725 +(n, display the completion options for).15 F(each)144 465.6 Q F2(name) +3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 249.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 477.6 Q F0 -.2(bu) +2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F12.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 261.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +1.227(the `)144 489.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.728 F 2.177(completion has pre)144 273.6 R 2.177 -(viously been de\214ned.)-.25 F(The)7.177 E F14.677 E F0 2.178 -(option indicates that the remaining options)4.678 F(should apply to `) -144 285.6 Q(`empty')-.74 E 2.5('c)-.74 G +no)-3.727 F 2.178(completion has pre)144 501.6 R 2.178 +(viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 +(option indicates that the remaining options)4.677 F(should apply to `) +144 513.6 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.388(The return v)144 309.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 +E 1.387(The return v)144 537.6 R 1.387(alue is true unless an in)-.25 F +-.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 321.6 Q F2(name)2.5 E F0 +(options for a)144 549.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 338.4 Q F0([) -2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 350.4 R 1.753 +(xists, or an output error occurs.)-.15 E F1(continue)108 566.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 578.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 -(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754 -(is speci\214ed,)4.494 F 1.209(resume at the)144 362.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10 +(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 +(is speci\214ed,)4.493 F 1.208(resume at the)144 590.4 R F2(n)3.709 E F0 +1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 -(is greater than the number of enclosing)3.949 F .513 -(loops, the last enclosing loop \(the `)144 374.4 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514 -(The return v)5.514 F .514(alue is 0 unless)-.25 F F2(n)3.014 E F0(is) -3.014 E(not greater than or equal to 1.)144 386.4 Q F1(declar)108 403.2 +(is greater than the number of enclosing)3.949 F .514 +(loops, the last enclosing loop \(the `)144 602.4 R(`top-le)-.74 E -.15 +(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 +(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) +3.013 E(not greater than or equal to 1.)144 614.4 Q F1(declar)108 631.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 415.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 +(typeset)108 643.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 -2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.265(Declare v)144 427.2 R 1.265(ariables and/or gi)-.25 F -1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) +(..])-2.5 E 1.264(Declare v)144 655.2 R 1.264(ariables and/or gi)-.25 F +1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) 3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F --.25(va)144 439.2 S 3.482(riables. The).25 F F13.482 E F0 .982 -(option will display the attrib)3.482 F .982(utes and v)-.2 F .983 -(alues of each)-.25 F F2(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F1 -3.483 E F0 .983(is used)3.483 F(with)144 451.2 Q F2(name)2.775 E -F0(ar)2.775 E .275(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .274 -(re ignored.)-2.775 F(When)5.274 E F12.774 E F0 .274(is supplied) -2.774 F(without)144 463.2 Q F2(name)4.813 E F0(ar)4.813 E 2.313 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.314 -(alues of all v)-.25 F 2.314(ariables ha)-.25 F 2.314(ving the)-.2 F -(attrib)144 475.2 Q 1.182(utes speci\214ed by the additional options.) --.2 F 1.181(If no other options are supplied with)6.182 F F13.681 -E F0(,)A F1(declar)3.681 E(e)-.18 E F0 .62(will display the attrib)144 -487.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 +G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F +-.25(va)144 667.2 S 3.483(riables. The).25 F F13.483 E F0 .983 +(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 +3.482 E F0 .982(is used)3.482 F(with)144 679.2 Q F2(name)2.774 E +F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 +(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) +2.775 F(without)144 691.2 Q F2(name)4.814 E F0(ar)4.814 E 2.314 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 +(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F +(attrib)144 703.2 Q 1.181(utes speci\214ed by the additional options.) +-.2 F 1.182(If no other options are supplied with)6.181 F F13.682 +E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 +715.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 (ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F 1.291(to shell functions.)144 -499.2 R(The)6.291 E F13.791 E F0 1.291(option inhibits the displa\ -y of function de\214nitions; only the function)3.791 F .948 -(name and attrib)144 511.2 R .948(utes are printed.)-.2 F .948(If the) -5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 +(option will restrict the display)3.12 F 1.29(to shell functions.)144 +727.2 R(The)6.29 E F13.79 E F0 1.291(option inhibits the display \ +of function de\214nitions; only the function)3.791 F(GNU Bash 5.0)72 768 +Q(2018 March 15)144.29 E(60)193.45 E 0 Cg EP +%%Page: 61 61 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .948 +(name and attrib)144 84 R .948(utes are printed.)-.2 F .948(If the)5.948 +F/F1 10/Times-Bold@0 SF(extdeb)3.448 E(ug)-.2 E F0 .948 (shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C .948(he source)-3.448 F 1.69(\214le name and line number where each)144 -523.2 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 -F(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 535.2 Q F1 -3.891 E F0 6.391(.T)C(he)-6.391 E F13.891 E F0 1.391 -(option forces v)3.891 F 1.391 +96 R/F2 10/Times-Italic@0 SF(name)4.19 E F0 1.69 +(is de\214ned are displayed as well.)4.19 F(The)6.69 E F14.19 E F0 +(option)4.19 E(implies)144 108 Q F13.892 E F0 6.392(.T)C(he)-6.392 +E F13.892 E F0 1.391(option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 547.2 Q F1(declar)4.383 E(e)-.18 E F0 1.883 -(is e)4.383 F -.15(xe)-.15 G 1.883(cuted in a shell function.).15 F -1.882(It is ignored in all other cases.)6.883 F 1.882(The follo)6.882 F -(wing)-.25 E .793(options can be used to restrict output to v)144 559.2 -R .794(ariables with the speci\214ed attrib)-.25 F .794(ute or to gi)-.2 -F 1.094 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 571.2 Q(utes:)-.2 E -F1144 583.2 Q F0(Each)180 583.2 Q F2(name)2.5 E F0(is an inde)2.5 -E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1 -(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 595.2 Q -F0(Each)180 595.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a) --.25 H(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1144 607.2 Q F0(Use function names only) -180 607.2 Q(.)-.65 E F1144 619.2 Q F0 .558(The v)180 619.2 R .558 +(ve)-.25 G(n).15 E(when)144 120 Q F1(declar)4.382 E(e)-.18 E F0 1.882 +(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F +1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F +(wing)-.25 E .794(options can be used to restrict output to v)144 132 R +.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 144 Q(utes:)-.2 E F1 +144 156 Q F0(Each)180 156 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 +(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 168 Q F0(Each)180 +168 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +.15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G +(\).).15 E F1144 180 Q F0(Use function names only)180 180 Q(.)-.65 +E F1144 192 Q F0 .557(The v)180 192 R .558 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 -(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 631.2 Q F0(abo) -2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) --2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 643.2 Q -F0 .909(When the v)180 643.2 R .909(ariable is assigned a v)-.25 F .909 +(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 204 Q F0(abo)2.25 +E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E +(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 216 Q F0 .91 +(When the v)180 216 R .909(ariable is assigned a v)-.25 F .909 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 655.2 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 667.2 -Q F0(Gi)180 667.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0 -(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 228 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 240 Q +F0(Gi)180 240 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) +3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E -1.518(That other v)180 679.2 R 1.518(ariable is de\214ned by the v)-.25 -F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519 -(ll references, assignments, and)-6.519 F(attrib)180 691.2 Q .227 +1.519(That other v)180 252 R 1.519(ariable is de\214ned by the v)-.25 F +1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518 +(ll references, assignments, and)-6.518 F(attrib)180 264 Q .226 (ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226 (xcept those using or changing the)-2.876 F F12.726 E F0(attrib) -2.726 E .226(ute itself, are)-.2 F .808(performed on the v)180 703.2 R -.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D -3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2 -F(applied to array v)180 715.2 Q(ariables.)-.25 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(58)192.055 E 0 Cg EP -%%Page: 59 59 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Mak)180 84 Q(e)-.1 E/F2 10/Times-Italic@0 SF(name) -5.047 E F0 5.047(sr)C(eadonly)-5.047 E 7.547(.T)-.65 G 2.546 -(hese names cannot then be assigned v)-7.547 F 2.546 -(alues by subsequent)-.25 F(assignment statements or unset.)180 96 Q F1 -144 108 Q F0(Gi)180 108 Q .729 -.15(ve e)-.25 H(ach).15 E F2(name) -2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 -(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG) --.1 E F0(and)2.93 E F1(RETURN)2.93 E F0(traps from the calling shell.) -180 120 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E -(ariables.)-.25 E F1144 132 Q F0 .91(When the v)180 132 R .909 -(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F -(-)-.2 E 2.5(case. The)180 144 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 156 Q F0(Mark)180 156 Q F2(name)2.5 -E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E -(vironment.)-.4 E .12(Using `+' instead of `\255' turns of)144 172.8 R -2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F -.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F -.645(to destro)144 184.8 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v) --3.145 F .645(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) -3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144 -(ute. When)-.2 F .644(used in a func-)3.144 F(tion,)144 196.8 Q F1 +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 276 R +.809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 +F(applied to array v)180 288 Q(ariables.)-.25 E F1144 300 Q F0 +(Mak)180 300 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 312 +Q F1144 324 Q F0(Gi)180 324 Q .73 -.15(ve e)-.25 H(ach).15 E F2 +(name)2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E +2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 +E(UG)-.1 E F0(and)2.929 E F1(RETURN)2.929 E F0 +(traps from the calling shell.)180 336 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 348 +Q F0 .909(When the v)180 348 R .909(ariable is assigned a v)-.25 F .909 +(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 +(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 360 R(lo)2.5 +E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 372 Q +F0(Mark)180 372 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 +(Using `+' instead of `\255' turns of)144 388.8 R 2.621(ft)-.25 G .121 +(he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 +(xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F .644 +(to destro)144 400.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +-3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) +3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 412.8 Q F1 (declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 (local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.283 -(is supplied.)144 208.8 R 1.283(If a v)6.283 F 1.283 +(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 +(is supplied.)144 424.8 R 1.282(If a v)6.282 F 1.283 (ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 -(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282 -(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144 -220.8 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 -(and the compound assignment syntax to create array v)3.426 F .927 -(ariables, additional)-.25 F(attrib)144 232.8 Q .592(utes do not tak)-.2 +(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 +(ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 +436.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 +(and the compound assignment syntax to create array v)3.427 F .926 +(ariables, additional)-.25 F(attrib)144 448.8 Q .592(utes do not tak)-.2 F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 (ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 (option is encountered, an attempt is made to de\214ne a function using) -144 244.8 R/F3 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C -2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144 -256.8 R .063(alue to a readonly v)-.25 F .062 -(ariable, an attempt is made to assign a v)-.25 F .062 +144 460.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 +472.8 R .062(alue to a readonly v)-.25 F .063 +(ariable, an attempt is made to assign a v)-.25 F .063 (alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 268.8 R F1 +(able without using the compound assignment syntax \(see)144 484.8 R F1 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 280.8 S .172 +F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 496.8 S .171 (lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 -F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171 -(ariable, an)-.25 F .96(attempt is made to turn of)144 292.8 R 3.46(fa) +F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 +(ariable, an)-.25 F .96(attempt is made to turn of)144 508.8 R 3.46(fa) -.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 304.8 Q +(ariable, or an attempt is made to display a)-.25 F(non-e)144 520.8 Q (xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 321.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 333.6 S .329 +(dirs [\255clpv] [+)108 537.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 549.6 S .328 (thout options, displays the list of currently remembered directories.) -.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 345.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 357.6 Q -F0 2.003(command; the)4.504 F F1(popd)4.503 E F0 2.003(command remo) +.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 +(single line with directory names separated by spaces.)144 561.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 573.6 Q +F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo) 4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 369.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F1144 381.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 381.6 Q -F1144 393.6 Q F0 .881 -(Produces a listing using full pathnames; the def)180 393.6 R .882 +F 2.003(The current directory is)7.003 F(al)144 585.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F1144 597.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 597.6 Q +F1144 609.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 609.6 R .881 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -405.6 Q(.)-.65 E F1144 417.6 Q F0 -(Print the directory stack with one entry per line.)180 417.6 Q F1 -144 429.6 Q F0 .273(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 429.6 R 2.772(xi)-.15 G 2.772 -(nt)-2.772 G(he)-2.772 E(stack.)180 441.6 Q F1(+)144 453.6 Q F2(n)A F0 -1.564(Displays the)180 453.6 R F2(n)4.064 E F0 1.565 -(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 -(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 465.6 Q F1144 477.6 Q F2 -(n)A F0 1.194(Displays the)180 477.6 R F2(n)3.694 E F0 1.194 +621.6 Q(.)-.65 E F1144 633.6 Q F0 +(Print the directory stack with one entry per line.)180 633.6 Q F1 +144 645.6 Q F0 .272(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 645.6 R 2.773(xi)-.15 G 2.773 +(nt)-2.773 G(he)-2.773 E(stack.)180 657.6 Q F1(+)144 669.6 Q F2(n)A F0 +1.565(Displays the)180 669.6 R F2(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 +(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 681.6 Q F1144 693.6 Q F2 +(n)A F0 1.194(Displays the)180 693.6 R F2(n)3.694 E F0 1.194 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 489.6 Q .257(The return v)144 -506.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 -(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) --.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 518.4 Q F1(diso)108 535.2 Q(wn)-.1 E F0([)2.5 E F1 -(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 547.2 S .122 -(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) -4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H -2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932 -F .096(neither the)144 559.2 R F12.596 E F0 .096(nor the)2.596 F -F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E -.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 -2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) -.15 F F2(jobspec)145.74 571.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 -G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F -.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 -(is not sent to the job if the)2.835 F .962(shell recei)144 583.2 R -.15 -(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962 -(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 -3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 595.2 R F1 -3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0 -(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F -1.358(The return)6.358 F -.25(va)144 607.2 S(lue is 0 unless a).25 E F2 -(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 624 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .424(Output the)144 636 R F2(ar)2.924 E(g)-.37 E F0 -.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 -(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 -(error occurs.)144 648 R(If)5.308 E F12.808 E F0 .308 -(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 -F .307(If the)5.308 F F12.807 E F0 .307(option is gi)2.807 F -.15 -(ve)-.25 G .307(n, inter).15 F(-)-.2 E 1.348(pretation of the follo)144 -660 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) -6.348 E F13.849 E F0 1.349(option disables the)3.849 F 1.055 -(interpretation of these escape characters, e)144 672 R -.15(ve)-.25 G -3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.554 -(ya)-.15 G 1.054(re interpreted by def)-3.554 F(ault.)-.1 E(The)144 684 -Q F1(xpg_echo)3.458 E F0 .959 -(shell option may be used to dynamically determine whether or not)3.458 -F F1(echo)3.459 E F0 -.15(ex)3.459 G(pands).15 E .716 -(these escape characters by def)144 696 R(ault.)-.1 E F1(echo)5.716 E F0 -.716(does not interpret)3.216 F F13.216 E F0 .715 -(to mean the end of options.)3.216 F F1(echo)5.715 E F0 -(interprets the follo)144 708 Q(wing escape sequences:)-.25 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(59)192.055 E 0 Cg EP -%%Page: 60 60 +(without options, starting with zero.)180 705.6 Q 1.707(The return v)144 +722.4 R 1.707(alue is 0 unless an in)-.25 F -.25(va)-.4 G 1.707 +(lid option is supplied or).25 F F2(n)4.207 E F0(inde)4.206 E -.15(xe) +-.15 G 4.206(sb).15 G -.15(ey)-4.206 G 1.706(ond the end of the).15 F +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(61)193.45 E 0 Cg EP +%%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(\\a)144 84 Q F0(alert \(bell\))180 84 Q F1(\\b)144 96 Q F0(backspace) -180 96 Q F1(\\c)144 108 Q F0(suppress further output)180 108 Q F1(\\e) -144 120 Q(\\E)144 132 Q F0(an escape character)180 132 Q F1(\\f)144 144 -Q F0(form feed)180 144 Q F1(\\n)144 156 Q F0(ne)180 156 Q 2.5(wl)-.25 G -(ine)-2.5 E F1(\\r)144 168 Q F0(carriage return)180 168 Q F1(\\t)144 180 -Q F0(horizontal tab)180 180 Q F1(\\v)144 192 Q F0 -.15(ve)180 192 S -(rtical tab).15 E F1(\\\\)144 204 Q F0(backslash)180 204 Q F1(\\0)144 -216 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v) -180 216 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 -(\(zero to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0 -(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0 -1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507 -(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 276 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) --2.5 E F1(enable)108 316.8 Q F0([)2.5 E F1A F0 2.5(][)C F1 -(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 328.8 R +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(directory stack.) +144 84 Q/F1 10/Times-Bold@0 SF(diso)108 100.8 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF +(jobspec)-2.5 E F0(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 +112.8 S .121(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2 +(jobspec)4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j) +-.25 H 2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122 +(is not present, and)2.932 F .096(neither the)144 124.8 R F12.596 +E F0 .096(nor the)2.596 F F12.596 E F0 .096 +(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 +.096(is used.)2.596 F .096(If the)5.096 F F12.596 E F0 .096 +(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F F2(jobspec) +145.74 136.8 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G +.585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 +F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 148.8 R -.15 +(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 160.8 R F1 +3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 +(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F +1.359(The return)6.359 F -.25(va)144 172.8 S(lue is 0 unless a).25 E F2 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F1(echo)108 189.6 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 201.6 R F2(ar)2.925 E(g)-.37 E +F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 +(error occurs.)144 213.6 R(If)5.307 E F12.807 E F0 .307 +(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 +F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 +(ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 +225.6 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 +(interpretation of these escape characters, e)144 237.6 R -.15(ve)-.25 G +3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 +(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 +249.6 Q F1(xpg_echo)3.459 E F0 .959 +(shell option may be used to dynamically determine whether or not)3.459 +F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 +(these escape characters by def)144 261.6 R(ault.)-.1 E F1(echo)5.715 E +F0 .716(does not interpret)3.215 F F13.216 E F0 .716 +(to mean the end of options.)3.216 F F1(echo)5.716 E F0 +(interprets the follo)144 273.6 Q(wing escape sequences:)-.25 E F1(\\a) +144 285.6 Q F0(alert \(bell\))180 285.6 Q F1(\\b)144 297.6 Q F0 +(backspace)180 297.6 Q F1(\\c)144 309.6 Q F0(suppress further output)180 +309.6 Q F1(\\e)144 321.6 Q(\\E)144 333.6 Q F0(an escape character)180 +333.6 Q F1(\\f)144 345.6 Q F0(form feed)180 345.6 Q F1(\\n)144 357.6 Q +F0(ne)180 357.6 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 369.6 Q F0 +(carriage return)180 369.6 Q F1(\\t)144 381.6 Q F0(horizontal tab)180 +381.6 Q F1(\\v)144 393.6 Q F0 -.15(ve)180 393.6 S(rtical tab).15 E F1 +(\\\\)144 405.6 Q F0(backslash)180 405.6 Q F1(\\0)144 417.6 Q F2(nnn)A +F0(the eight-bit character whose v)180 417.6 Q(alue is the octal v)-.25 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 429.6 Q F2(HH)A F0(the eight-bit character whose v)180 429.6 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 441.6 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 453.6 R 1.506 +(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.006 E F0(\(one to four he)180 465.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 477.6 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 489.6 R .547 +(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.048 E(HHH)180 501.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 518.4 Q F0([)2.5 E F1A F0 2.5(][)C +F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 530.4 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 -(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 -(the same name as a shell b)144 340.8 R .834(uiltin to be e)-.2 F -.15 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 +(the same name as a shell b)144 542.4 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 -(the shell normally searches for b)144 352.8 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 -(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582 -(abled; otherwise,)144 364.8 R F2(names)4.082 E F0 1.582(are enabled.) +(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 +(the shell normally searches for b)144 554.4 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 +(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 +(abled; otherwise,)144 566.4 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0 -SF -.666(PA)4.081 G(TH)-.189 E F0 .08(instead of the shell b)144 376.8 R -.08(uiltin v)-.2 F .08(ersion, run)-.15 F/F4 10/Courier@0 SF .081 -(enable -n test)2.58 F F0 5.081(.T)C(he)-5.081 E F12.581 E F0 .081 -(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 388.8 S 1.525 -(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F +F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 +G(TH)-.189 E F0 .081(instead of the shell b)144 578.4 R .081(uiltin v) +-.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) +2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 590.4 S 1.524 +(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 400.8 Q F1 -2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F -.366(viously loaded with)-.25 F F12.867 E F0 5.367(.I)C 2.867(fn) --5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) --.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 412.8 R F1 -2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399 +(ystems that support dynamic loading.)-4.024 F(The)144 602.4 Q F1 +2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F +.367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) +-5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 614.4 R F1 +2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 -F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 -424.8 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 -(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F -(If)5.099 E F12.599 E F0 1.917 -(is supplied, the list printed includes all b)144 436.8 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.878 -(enabled. If)144 448.8 R F12.878 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.878 F F2(special) -2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F -(alue)-.25 E .995(is 0 unless a)144 460.8 R F2(name)3.855 E F0 .994 -(is not a shell b)3.675 F .994(uiltin or there is an error loading a ne) --.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144 -472.8 Q F1 -2.3 -.15(ev a)108 489.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 501.6 Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671 -(re read and concatenated together into a single command.)-3.17 F .671 -(This command is then read)5.671 F .495(and e)144 513.6 R -.15(xe)-.15 G -.495(cuted by the shell, and its e).15 F .495 +F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 +626.4 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F +(If)5.098 E F12.598 E F0 1.916 +(is supplied, the list printed includes all b)144 638.4 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.879 +(enabled. If)144 650.4 R F12.879 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.879 F F2(special) +2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F +(alue)-.25 E .994(is 0 unless a)144 662.4 R F2(name)3.854 E F0 .994 +(is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) +-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 +674.4 Q F1 -2.3 -.15(ev a)108 691.2 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(The)144 703.2 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C +.671(re read and concatenated together into a single command.)-3.171 F +.67(This command is then read)5.67 F .495(and e)144 715.2 R -.15(xe)-.15 +G .495(cuted by the shell, and its e).15 F .495 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 525.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 542.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 554.4 Q F2(command)3.005 E F0 .305 -(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 -(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E -(guments)-.37 E F0(become)3.076 E .177(the ar)144 566.4 R .177 -(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G -(he)-2.676 E F12.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .176 -(ginning of)-.15 F .499(the zeroth ar)144 578.4 R .499(gument passed to) --.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2 -(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F13 E F0 -.5(option causes)3 F F2(com-)3.2 E(mand)144 590.4 Q F0 .639(to be e) -3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 -(vironment. If)-.4 F F13.138 E F0 .638 -(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the) -3.318 F 1.077(zeroth ar)144 602.4 R 1.077(gument to the e)-.18 F -.15 -(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 -1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 614.4 Q .877 -.15(ve s)-.25 H .577(hell e).15 F -.577(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577 -(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 626.4 R(interacti)2.505 E .305 -.15(ve s) --.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) --.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 638.4 Q 3.037(yr)-.15 G .537 -(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 650.4 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 667.2 Q F0([)2.5 E F2(n)A F0 -(])A .095(Cause the shell to e)144 667.2 R .095(xit with a status of) --.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 -(is omitted, the e)2.835 F .096(xit status is that of the last command) --.15 F -.15(exe)144 679.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 -E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E -F1(export)108 696 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 -E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(60)192.055 E 0 Cg EP -%%Page: 61 61 +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 727.2 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(62)193.45 E 0 Cg EP +%%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(export \255p)108 84 Q F0 .257(The supplied)144 96 R/F2 10 -/Times-Italic@0 SF(names)3.117 E F0 .257(are mark)3.027 F .257 -(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 -(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.626 -(commands. If)144 108 R(the)2.626 E F12.626 E F0 .127 -(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E -F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E -F0 .127(are gi)2.897 F -.15(ve)-.25 G .127(n, or if the).15 F F1 -144 120 Q F0 .048(option is supplied, a list of names of all e)2.548 F -.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 -2.547 E F0 .047(option causes the)2.547 F -.15(ex)144 132 S 1.446 +SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10 +/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command)3.006 E F0 .306 +(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E +(guments)-.37 E F0(become)3.075 E .176(the ar)144 108 R .176(guments to) +-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G(he)-2.676 E F1 +2.676 E F0 .176 +(option is supplied, the shell places a dash at the be)2.676 F .177 +(ginning of)-.15 F .5(the zeroth ar)144 120 R .5(gument passed to)-.18 F +F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E +(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 .499 +(option causes)2.999 F F2(com-)3.199 E(mand)144 132 Q F0 .638(to be e) +3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(vironment. If)-.4 F F13.138 E F0 .638 +(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) +3.319 F 1.078(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe) +-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077 +(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F +(non-interacti)144 156 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576 +(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 +F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25 +H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F +-.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 180 R F1(exec)2.787 E F0 -.1 +(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 192 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 208.8 R .096(xit with a status of) +-.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 +(is omitted, the e)2.835 F .095(xit status is that of the last command) +-.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +/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 .256(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.627(commands. If)144 273.6 R(the)2.627 E F1 +2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) +.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) +5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 +(n, or if the).15 F F1144 285.6 Q F0 .048 +(option is supplied, a list of names of all e)2.547 F .048(xported v) +-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 +.048(option causes the)2.548 F -.15(ex)144 297.6 S 1.447 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 144 S .742(lue of the v).25 -F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1 -(export)5.742 E F0 .742(returns an e)3.242 F .741 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is) -.25 F .031(encountered, one of the)144 156 R F2(names)2.531 E F0 .031 -(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 -F F12.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0 -(that)2.712 E(is not a function.)144 168 Q F1(fc)108 184.8 Q F0([)2.5 E -F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 309.6 S .741(lue of the v) +.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 +(export)5.741 E F0 .742(returns an e)3.242 F .742 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) +.25 F .032(encountered, one of the)144 321.6 R F2(names)2.532 E F0 .032 +(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 +(that)2.711 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 +E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -196.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 -(cmd)-2.5 E F0(])A .432 -(The \214rst form selects a range of commands from)144 208.8 R F2<8c72> -4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431 -(from the history list and displays or)3.612 F .141(edits and re-e)144 -220.8 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +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 .431 +(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 .432 +(from the history list and displays or)3.612 F .142(edits and re-e)144 +386.4 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 232.8 Q .311(ginning with that string\) or as a number \(an inde) --.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F --.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .314 -(is used as an of)144 244.8 R .314 -(fset from the current command number\).)-.25 F(If)5.314 E F2(last)2.905 -E F0 .315(is not speci\214ed it is set to the cur)3.495 F(-)-.2 E .949 -(rent command for listing \(so that)144 256.8 R/F3 10/Courier@0 SF .948 +144 398.4 Q .31(ginning with that string\) or as a number \(an inde)-.15 +F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05 +(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19 +(is used as an of)144 410.4 R .19 +(fset from the current command number\).)-.25 F(If)5.19 E F2(last)2.779 +E F0 .189(is not speci\214ed, it is set to the cur)3.369 F(-)-.2 E .948 +(rent command for listing \(so that)144 422.4 R/F4 10/Courier@0 SF .948 (fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.358 E(st)-.1 E F0(other)4.128 E(-)-.2 E 2.5(wise. If) -144 268.8 R F2<8c72>4.41 E(st)-.1 E F0 -(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 292.8 +3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) +144 434.4 R F2<8c72>4.41 E(st)-.1 E F0 +(is not speci\214ed, it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 458.4 Q F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 304.8 R .438(If the) +(rses the order of).15 F .438(the commands.)144 470.4 R .438(If the) 5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.334(the editor gi)144 316.8 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E -F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835 +.335(the editor gi)144 482.4 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E +F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 (do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G -(n,).15 E .631(the v)144 328.8 R .631(alue of the)-.25 F/F4 9 -/Times-Bold@0 SF(FCEDIT)3.131 E F0 -.25(va)2.881 G .631 -(riable is used, and the v).25 F .631(alue of)-.25 F F4(EDIT)3.131 E(OR) --.162 E F0(if)2.881 E F4(FCEDIT)3.13 E F0 .63(is not set.)2.88 F .63 -(If nei-)5.63 F .95(ther v)144 340.8 R .95(ariable is set,)-.25 F F2(vi) -5.116 E F0 .95(is used.)5.116 F .951 -(When editing is complete, the edited commands are echoed and)5.95 F --.15(exe)144 352.8 S(cuted.).15 E .789(In the second form,)144 376.8 R +F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 494.4 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E +F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 +F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 506.4 R .951 +(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 +(When editing is complete, the edited commands are echoed and)5.951 F +-.15(exe)144 518.4 S(cuted.).15 E .788(In the second form,)144 542.4 R F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 -(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788 -E(mand)144 388.8 Q F0 .346(is intepreted the same as)2.846 F F2<8c72> -2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 -(useful alias to use with this is)-2.5 F F3 .347(r='fc \255s')2.847 F F0 -2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 400.8 Q F3 7.166 -(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 -(ginning with)-.15 F F3(cc)3.666 E F0 1.165(and typing)3.666 F F3(r) -3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F -(mand.)144 412.8 Q .142(If the \214rst form is used, the return v)144 -436.8 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 +E(mand)144 554.4 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 566.4 Q F4 7.165 +(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) +3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F +(mand.)144 578.4 Q .142(If the \214rst form is used, the return v)144 +602.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .455(specify history lines out of range.)144 448.8 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 614.4 R .454(If the)5.454 F F12.954 E F0 .454 -(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 -(alue of the)-.25 F .787(last command e)144 460.8 R -.15(xe)-.15 G .787 -(cuted or f).15 F .788 +(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 +(alue of the)-.25 F .788(last command e)144 626.4 R -.15(xe)-.15 G .788 +(cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 +.787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -472.8 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 484.8 Q +638.4 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 650.4 Q (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 501.6 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 513.6 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 +(ailure.)-.1 E F1(fg)108 667.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 679.2 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 (ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 (he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 525.6 Q 3.117(sn)-.55 G -.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 537.6 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 549.6 Q +1.413(is not present, the)4.223 F(shell')144 691.2 Q 3.116(sn)-.55 G +.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 703.2 Q +.363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 715.2 Q F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -F1(getopts)108 566.4 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) --.37 E F0(])A F1(getopts)144 578.4 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.294 F F2 -(optstring)6.023 E F0 .793(contains the option)3.513 F .149 -(characters to be recognized; if a character is follo)144 590.4 R .15 -(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 --.15(ve a)-.2 H(n).15 E(ar)144 602.4 Q .579 -(gument, which should be separated from it by white space.)-.18 F .578 +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(63)193.45 E 0 Cg EP +%%Page: 64 64 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(getopts)108 84 Q/F2 10/Times-Italic@0 SF(optstring name)2.5 E F0([) +2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 96 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F2 +(optstring)6.023 E F0 .793(contains the option)3.513 F .15 +(characters to be recognized; if a character is follo)144 108 R .149 +(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 +-.15(ve a)-.2 H(n).15 E(ar)144 120 Q .578 +(gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 614.4 R 1.665 +(acters may not be used as option characters.)144 132 R 1.665 (Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) -4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 -(option in the shell v)144 626.4 R(ariable)-.25 E F2(name)3.297 E F0 -3.297(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797 -(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G -3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 638.4 Q .085 -(gument to be processed into the v)-.18 F(ariable)-.25 E F4(OPTIND)2.585 -E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.585 E F0 .085 -(is initialized to 1 each time the shell)2.335 F .846 -(or a shell script is in)144 650.4 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 +(option in the shell v)144 144 R(ariable)-.25 E F2(name)3.296 E F0 3.296 +(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797(if it does not e) +3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G 3.297(ft)-3.297 G +.797(he ne)-3.297 F(xt)-.15 E(ar)144 156 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) +4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 +(or a shell script is in)144 168 R -.2(vo)-.4 G -.1(ke).2 G 3.345 (d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 -(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 -(into the v)144 662.4 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A -F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804 -(automatically; it must be manually)3.054 F .294 -(reset between multiple calls to)144 674.4 R F1(getopts)2.793 E F0 .293 +(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 +(into the v)144 180 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A F0 +.803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 +(automatically; it must be manually)3.053 F .293 +(reset between multiple calls to)144 192 R F1(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 686.4 -Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts) -4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 -(alue greater than zero.)-.25 F F4(OPTIND)144 722.4 Q F0 +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 204 Q +2.044(When the end of options is encountered,)144 228 R F1(getopts)4.543 +E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 +(alue greater than zero.)-.25 F F3(OPTIND)144 240 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G (he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(61) -192.055 E 0 Cg EP -%%Page: 62 62 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(getopts)144 84 Q F0 2.393 -(normally parses the positional parameters, b)4.893 F 2.392 -(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 -(ni).15 G(n)-4.892 E/F2 10/Times-Italic@0 SF(ar)4.892 E(gs)-.37 E F0(,) -.27 E F1(getopts)144 96 Q F0(parses those instead.)2.5 E F1(getopts)144 -120 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665 -(ays. If)-3.765 F 1.165(the \214rst character of)3.665 F F2(optstring) -3.895 E F0 1.166(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E -1.071(reporting is used.)144 132 R 1.071 -(In normal operation, diagnostic messages are printed when in)6.071 F --.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 144 R -.393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)-.25 -E/F3 9/Times-Bold@0 SF(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 156 Q --.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 180 R --.25(va)-.4 G .667(lid option is seen,).25 F F1(getopts)3.167 E F0 .667 -(places ? into)3.167 F F2(name)3.527 E F0 .666 -(and, if not silent, prints an error message)3.347 F .399(and unsets)144 -192 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E -F1(getopts)2.899 E F0 .399 +(is set to ?.)2.5 E F1(getopts)144 264 Q F0 2.392 +(normally parses the positional parameters, b)4.892 F 2.392 +(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 +(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 +276 Q F0(parses those instead.)2.5 E F1(getopts)144 300 Q F0 1.166 +(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F +1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 312 R 1.071 +(In normal operation, diagnostic messages are printed when in)6.07 F +-.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 324 +R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) +-.25 E F3(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F +(will be displayed, e)144 336 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 +G(he \214rst character of)-2.5 E F2(optstring)2.73 E F0(is not a colon.) +2.72 E .666(If an in)144 360 R -.25(va)-.4 G .666(lid option is seen,) +.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F2(name)3.527 E +F0 .667(and, if not silent, prints an error message)3.347 F .4 +(and unsets)144 372 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 +(getopts)2.899 E F0 .399 (is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 204 -Q 1.242(If a required ar)144 228 R 1.242(gument is not found, and)-.18 F -F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1 -(?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F -F2(name)144 240 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1 -(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E -F0(\)).833 E(is placed in)144 252 Q F2(name)2.86 E F0(and)2.68 E F3(OPT) -2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 -(getopts)144 276 Q F0 .902 +E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 +384 Q 1.241(If a required ar)144 408 R 1.241(gument is not found, and) +-.18 F F1(getopts)3.741 E F0 1.241(is not silent, a question mark \() +3.741 F F1(?).833 E F0 3.742(\)i).833 G 3.742(sp)-3.742 G 1.242 +(laced in)-3.742 F F2(name)144 420 Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 +E F0 .234(is unset, and a diagnostic message is printed.)2.485 F(If) +5.234 E F1(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1 +(:).833 E F0(\)).833 E(is placed in)144 432 Q F2(name)2.86 E F0(and)2.68 +E F3(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 +E F1(getopts)144 456 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 288 Q F1(hash)108 304.8 +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 468 Q F1(hash)108 484.8 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 316.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 +(Each time)144 496.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 328.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 508.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 340.8 -R F12.742 E F0 .243 -(option is supplied, no path search is performed, and)2.742 F F2 -(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 -(of the command.)144 352.8 R(The)6.712 E F14.212 E F0 1.711 -(option causes the shell to for)4.212 F 1.711 -(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 -.833(option causes the shell to for)144 364.8 R .833 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 520.8 +R F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F2 +(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 +(of the command.)144 532.8 R(The)6.711 E F14.211 E F0 1.711 +(option causes the shell to for)4.211 F 1.712 +(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 +.833(option causes the shell to for)144 544.8 R .833 (get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .704(plied, the full pathname to which each)144 376.8 R F2(name) -3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F -F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 -388.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 +3.333 F .703(plied, the full pathname to which each)144 556.8 R F2(name) +3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F +F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +568.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 .795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -400.8 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G -.934(n, or if).15 F(only)144 412.8 Q F12.821 E F0 .321 -(is supplied, information about remembered commands is printed.)2.821 F -.322(The return status is true)5.322 F(unless a)144 424.8 Q F2(name)2.86 +580.8 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 592.8 Q F12.822 E F0 .322 +(is supplied, information about remembered commands is printed.)2.822 F +.321(The return status is true)5.321 F(unless a)144 604.8 Q F2(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 441.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 -453.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 -G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 -465.6 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .307 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 477.6 Q F1 -144 489.6 Q F0(Display a short description of each)180 489.6 Q F2 -(pattern)2.5 E F1144 501.6 Q F0(Display the description of each) -180 501.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F1144 513.6 Q F0 -(Display only a short usage synopsis for each)180 513.6 Q F2(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 530.4 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 547.2 Q F2(n)A F1(])A -(history \255c)108 559.2 Q(history \255d)108 571.2 Q F2(of)2.5 E(fset) --.18 E F1(history \255anrw)108 583.2 Q F0([)2.5 E F2(\214lename)A F0(])A -F1(history \255p)108 595.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 607.2 Q F2(ar)2.5 E(g) --.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 -619.2 S .752 +.25 E F1(help)108 621.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 +633.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 +G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 +645.6 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 +(therwise help for all the b)-2.807 F .306 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 657.6 Q F1 +144 669.6 Q F0(Display a short description of each)180 669.6 Q F2 +(pattern)2.5 E F1144 681.6 Q F0(Display the description of each) +180 681.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F1144 693.6 Q F0 +(Display only a short usage synopsis for each)180 693.6 Q F2(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 710.4 Q F2 +(pattern)2.5 E F0(.).24 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E +(64)193.45 E 0 Cg EP +%%Page: 65 65 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) +108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 +(history \255d)108 120 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) +-.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 Q F2(ar)2.5 E(g)-.37 E +F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 168 S .752 (th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 -G .38(been modi\214ed.)144 631.2 R .38(An ar)5.38 F .38(gument of)-.18 F +.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G .381(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 -(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-) -2.881 E(MA)144 643.2 Q(T)-.855 E F0 .265 -(is set and not null, it is used as a format string for)2.515 F F2 -(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 -(ciated with each displayed history entry)144 655.2 R 6.019(.N)-.65 G +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 192 Q(T)-.855 E F0 .264 +(is set and not null, it is used as a format string for)2.514 F F2 +(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 +(ciated with each displayed history entry)144 204 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 667.2 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 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 679.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 691.2 Q F0 -(Clear the history list by deleting all the entries.)180 691.2 Q F1 -144 703.2 Q F2(of)2.5 E(fset)-.18 E F0 -(Delete the history entry at position)180 715.2 Q F2(of)2.5 E(fset)-.18 -E F0(.)A(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(62)192.055 E 0 -Cg EP -%%Page: 63 63 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0 .564(Append the `)180 84 R(`ne)-.74 E(w')-.25 E -3.064('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 -(These are history lines entered since)5.564 F(the be)180 96 Q +(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 +E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 240 Q F0 +(Clear the history list by deleting all the entries.)180 240 Q F1 +144 252 Q F2(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 264 R F2(of)2.889 E(fset)-.18 +E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889 +F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)-2.889 +G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)-.25 G +.598(to one greater than the last history position, so ne)180 276 R -.05 +(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 288 Q 2.5(,a) +-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 +144 300 Q F2(start)2.5 E F0A F2(end)A F0 .758 +(Delete the history entries between positions)180 312 R F2(start)3.258 E +F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)-.25 +G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne).15 F +-.05(ga)-.15 G(-).05 E(ti)180 324 Q .3 -.15(ve v)-.25 H(alues for)-.1 E +F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 +144 336 Q F0 .564(Append the `)180 336 R(`ne)-.74 E(w')-.25 E 3.064('h) +-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 348 Q (ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 108 Q +(ut not already appended to the history \214le.)-.2 E F1144 360 Q F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 108 R .772 -(These are lines appended to the history \214le since the be)180 120 R + into the current history list.)180 360 R .772 +(These are lines appended to the history \214le since the be)180 372 R .773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E -(sion.)180 132 Q F1144 144 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 144 Q F1 -144 156 Q F0(Write the current history list to the history \214le, o)180 -156 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 168 Q F0 .626 -(Perform history substitution on the follo)180 168 R(wing)-.25 E/F2 10 -/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625 -(and display the result on the standard)3.125 F 2.975(output. Does)180 -180 R .475(not store the results in the history list.)2.975 F(Each)5.475 -E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 192 Q(xpansion.)-.15 E F1144 204 Q F0 .363 -(Store the)180 204 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(sion.)180 384 Q F1144 396 Q F0(Read the contents of the history \ +\214le and append them to the current history list.)180 396 Q F1 +144 408 Q F0(Write the current history list to the history \214le, o)180 +408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 420 Q F0 .626 +(Perform history substitution on the follo)180 420 R(wing)-.25 E F2(ar) +3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F +2.975(output. Does)180 432 R .475 +(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) +2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F +(normal history e)180 444 Q(xpansion.)-.15 E F1144 456 Q F0 .363 +(Store the)180 456 R F2(ar)3.193 E(gs)-.37 E F0 .363 (in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 -(he last command in the history list is)-5.363 F(remo)180 216 Q -.15(ve) +(he last command in the history list is)-5.363 F(remo)180 468 Q -.15(ve) -.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 232.8 R/F3 9/Times-Bold@0 SF -(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145 +(are added.)2.77 E .145(If the)144 484.8 R F3(HISTTIMEFORMA)2.645 E(T) +-.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .669(entry is written to the history \214le, mark)144 244.8 R .669 +.25 F .669(entry is written to the history \214le, mark)144 496.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 256.8 R .956 +(hen the history)-5.668 F .955(\214le is read, lines be)144 508.8 R .956 (ginning with the history comment character follo)-.15 F .956 (wed immediately by a digit)-.25 F 1.796 -(are interpreted as timestamps for the follo)144 268.8 R 1.795 +(are interpreted as timestamps for the follo)144 520.8 R 1.795 (wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F -1.795(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .768(lid \ +1.795(alue is 0 unless an)-.25 F(in)144 532.8 Q -.25(va)-.4 G .768(lid \ option is encountered, an error occurs while reading or writing the his\ -tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 292.8 Q(fset) +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 544.8 Q(fset) -.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 F 1.031(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F1 -3.531 E F0 -.1(fa)144 304.8 S(ils.).1 E F1(jobs)108 321.6 Q F0([) +3.531 E F0 -.1(fa)144 556.8 S(ils.).1 E F1(jobs)108 573.6 Q F0([) 2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 -(jobs \255x)108 333.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 -E F0(... ])2.5 E(The \214rst form lists the acti)144 345.6 Q .3 -.15 +(jobs \255x)108 585.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 597.6 Q .3 -.15 (ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 357.6 Q F0 -(List process IDs in addition to the normal information.)180 357.6 Q F1 -144 369.6 Q F0 .193(Display information only about jobs that ha) -180 369.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 -F .194(as last noti-)-.1 F(\214ed of their status.)180 381.6 Q F1 -144 393.6 Q F0(List only the process ID of the job')180 393.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 405.6 Q F0 -(Display only running jobs.)180 405.6 Q F1144 417.6 Q F0 -(Display only stopped jobs.)180 417.6 Q(If)144 434.4 Q F2(jobspec)4.554 +(he follo).15 E(wing meanings:)-.25 E F1144 609.6 Q F0 +(List process IDs in addition to the normal information.)180 609.6 Q F1 +144 621.6 Q F0 .193(Display information only about jobs that ha) +180 621.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 +F .194(as last noti-)-.1 F(\214ed of their status.)180 633.6 Q F1 +144 645.6 Q F0(List only the process ID of the job')180 645.6 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 657.6 Q F0 +(Display only running jobs.)180 657.6 Q F1144 669.6 Q F0 +(Display only stopped jobs.)180 669.6 Q(If)144 686.4 Q F2(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 (n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 446.4 Q -.25 +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 698.4 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 463.2 R F1 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 715.2 R F1 2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) 3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 475.2 Q +(with the corre-)3.164 F(sponding process group ID, and e)144 727.2 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) 2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 492 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 -2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 -(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 504 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 -E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12(Send the signal named by)144 -516 R F2(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2 -(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 528 R .618 -.15(ve s)-.25 H .318 -(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 -(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 540 Q F2(signum)4.189 E F0 +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(65)193.45 E 0 Cg EP +%%Page: 66 66 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) +2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 +(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 +(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 +(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 +(Send the signal named by)144 108 R F2(sigspec)2.96 E F0(or)2.93 E F2 +(signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E +F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is) +2.929 E .318(either a case-insensiti)144 120 R .618 -.15(ve s)-.25 H +.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 +.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 132 Q F2(signum)4.189 E F0 1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 552 Q .522(gument of)-.18 F +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 144 Q .522(gument of)-.18 F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F .28(of the signals corresponding to the ar)144 564 R .28 +.15 F .28(of the signals corresponding to the ar)144 156 R .28 (guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 --.2(ex)2.78 G(it_status).2 E F0(ar)144 576 Q .377(gument to)-.18 F F1 +-.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .377(gument to)-.18 F F1 2.877 E F0 .378 (is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .963(nated by a signal.)144 588 R +(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 600 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 616.8 Q F2 +(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 -628.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +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 640.8 Q F2(ar) +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 657.6 Q F0([)2.5 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 669.6 S 2.56(re).15 G .06(ach ar)-2.56 F +(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 .06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 681.6 Q 3.152(yo) +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.152(yo) -.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) 3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -693.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H +285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422(isible scope restricted to that function and its children.).15 F (If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 -(of shell options is made local to the function in which)144 705.6 R F1 +(of shell options is made local to the function in which)144 297.6 R F1 (local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 -(d: shell options changed).1 F 1.563(using the)144 717.6 R F1(set)4.063 +(d: shell options changed).1 F 1.563(using the)144 309.6 R F1(set)4.063 E F0 -.2(bu)4.063 G 1.563 (iltin inside the function are restored to their original v).2 F 1.562 -(alues when the function)-.25 F 3.743(returns. W)144 729.6 R 1.243 +(alues when the function)-.25 F 3.743(returns. W)144 321.6 R 1.243 (ith no operands,)-.4 F F1(local)3.743 E F0 1.243 (writes a list of local v)3.743 F 1.244 -(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(63)192.055 E 0 Cg EP -%%Page: 64 64 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .42(error to use) -144 84 R/F1 10/Times-Bold@0 SF(local)2.92 E F0 .42 +(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 +(error to use)144 333.6 R F1(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) 5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 96 Q -.25(va)-.4 G(lid).25 E/F2 10/Times-Italic@0 SF(name)2.86 E F0 -(is supplied, or)2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.) --.25 E F1(logout)108 112.8 Q F0(Exit a login shell.)144 112.8 Q F1 -(map\214le)108 129.6 Q F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C -F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E -F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 -2.5(][)C F1-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2 -(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 -2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A F1 -.18(re)108 141.6 S(adarray) -.18 E F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2 -(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 --2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 --2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k) --.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr) --2.5 E(ay)-.15 E F0(])A .35 -(Read lines from the standard input into the inde)144 153.6 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.851 E -(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351 -(rom \214le descriptor)-2.851 F F2(fd)2.851 E F0 1.249(if the)144 165.6 -R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 -F(ariable)-.25 E/F3 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249 -(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C -1.248(ptions, if supplied,)-6.248 F(ha)144 177.6 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 189.6 Q F0 -(The \214rst character of)180 189.6 Q F2(delim)2.5 E F0 -(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 -E F1144 201.6 Q F0(Cop)180 201.6 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) --2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 -(is 0, all lines are copied.)2.5 E F1144 213.6 Q F0(Be)180 213.6 Q -(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) --.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) --.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 225.6 Q F0 -(Discard the \214rst)180 225.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 237.6 Q F0(Remo)180 237.6 Q .3 -.15(ve a t)-.15 H(railing).15 +144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) +2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) +108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q +F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E +(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 +(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 +(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 +(])A .179(Read lines from the standard input into the inde)144 403.2 R +-.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F2 +(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18 +(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 415.2 R +F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F +(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 +E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) +-6.248 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 439.2 Q F0 .91 +(The \214rst character of)180 439.2 R F2(delim)3.41 E F0 .911 +(is used to terminate each input line, rather than ne)3.41 F 3.411 +(wline. If)-.25 F F2(delim)180 451.2 Q F0(is the empty string,)2.5 E F1 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E F1144 463.2 Q F0(Cop)180 463.2 Q 2.5(ya)-.1 G 2.5 +(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 475.2 Q F0(Be)180 +475.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5 +(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 487.2 Q F0 +(Discard the \214rst)180 487.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 499.2 Q F0(Remo)180 499.2 Q .3 -.15(ve a t)-.15 H(railing).15 E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F1144 249.6 Q F0 -(Read lines from \214le descriptor)180 249.6 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 261.6 Q F0(Ev)180 -261.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(wline\) from each line read.)-.25 E F1144 511.2 Q F0 +(Read lines from \214le descriptor)180 511.2 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 523.2 Q F0(Ev)180 +523.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 (quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 273.6 -Q F0(Specify the number of lines read between each call to)180 273.6 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 290.4 Q F12.967 E F0 -.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 535.2 +Q F0(Specify the number of lines read between each call to)180 535.2 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 552 Q F12.968 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 302.4 R 2.762(xo)-.15 -G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 314.4 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E -F0 .274(is e)2.774 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .275 -(ut before the array element is)-.2 F(assigned.)144 326.4 Q -(If not supplied with an e)144 343.2 Q(xplicit origin,)-.15 E F1 +(luated, it is sup-).25 F .261(plied the inde)144 564 R 2.761(xo)-.15 G +2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\ +ned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 576 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +F0 .275(is e)2.775 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .274 +(ut before the array element is)-.2 F(assigned.)144 588 Q +(If not supplied with an e)144 604.8 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 360 Q F0 1.906 -(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 372 Q -.25(va)-.4 G +(before assigning to it.)2.5 E F1(map\214le)144 621.6 Q F0 1.905 +(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 +(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) +4.406 E(ay)-.15 E F0(is)4.406 E(in)144 633.6 Q -.25(va)-.4 G (lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 388.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 400.8 Q -.15(ve)-.15 G 2.799 -(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G -.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 -G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -412.8 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 424.8 Q F1144 436.8 Q F0 .551 -(Suppresses the normal change of directory when remo)180 436.8 R .551 +F1(popd)108 650.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 662.4 Q -.15(ve)-.15 G 2.8(se) +.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 +(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G +.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 +674.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 +(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 +F(wing)-.25 E(meanings:)144 686.4 Q F1144 698.4 Q F0 .551 +(Suppresses the normal change of directory when remo)180 698.4 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 448.8 Q F1(+)144 460.8 Q F2(n)A -F0(Remo)180 460.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E -F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 -F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -472.8 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F1144 484.8 Q F2(n)A F0 -(Remo)180 484.8 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E -F0 1.259(th entry counting from the right of the list sho)B 1.26(wn by) --.25 F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5 -(zero. F)180 496.8 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 -E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 -513.6 R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1 -(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.643 E F0 .415(returns f)144 525.6 R .415 -(alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 537.6 Q -(ails.)-.1 E F1(printf)108 554.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 566.4 R F2(ar)3.937 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.937 F F2(format)3.936 -E F0 6.436(.T)C(he)-6.436 E F13.936 E F0 .126 -(option causes the output to be assigned to the v)144 578.4 R(ariable) +(that only the stack is manipulated.)180 710.4 Q(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(66)193.45 E 0 Cg EP +%%Page: 67 67 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 +G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14 +(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1 +(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96 +S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo) +2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E +F3(popd +1)2.5 E F0(the second.)2.5 E F1144 108 Q F2(n)A F0(Remo)180 +108 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 1.259 +(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F +F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F) +180 120 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15 +(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 +E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 136.8 R F1(popd) +3.143 E F0 .643(command is successful, a)3.143 F F1(dirs)3.143 E F0 .644 +(is performed as well, and the return status is 0.)3.143 F F1(popd)5.644 +E F0 .416(returns f)144 148.8 R .416(alse if an in)-.1 F -.25(va)-.4 G +.415(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q +(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 +(Write the formatted)144 189.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(to the standard output under the control of the)3.936 F F2(format)3.937 +E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 +(option causes the output to be assigned to the v)144 201.6 R(ariable) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 590.4 Q(The)144 614.4 Q F2(format)3.018 E F0 .517(i\ +2.626 F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ -cters, which are)3.018 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 626.4 R -.15(ve)-.4 G .704 +cters, which are)3.017 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 249.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 638.4 R .036 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 650.4 Q(gument)-.37 E F0 -5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 -E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 662.4 Q -(xtensions:)-.15 E F1(%b)144 674.4 Q F0(causes)180 674.4 Q F1(printf) -2.596 E F0 .096(to e)2.596 F .096 +\214cations, each of which causes printing of the ne)144 261.6 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.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 285.6 Q +(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.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 686.4 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 698.4 Q F0(causes)180 698.4 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 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 F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 710.4 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(64) -192.055 E 0 Cg EP -%%Page: 65 65 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(%\()144 84 Q/F2 10/Times-Italic@0 SF(datefmt)A F1(\)T)A F0(causes)180 -96 Q F1(printf)4.404 E F0 1.904 -(to output the date-time string resulting from using)4.404 F F2(datefmt) -4.404 E F0 1.903(as a format)4.404 F .38(string for)180 108 R F2 +(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes) +180 357.6 Q F1(printf)4.403 E F0 1.904 +(to output the date-time string resulting from using)4.403 F F2(datefmt) +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 369.6 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .458(of seconds since the epoch.)180 -120 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .847 -(current time, and -2 represents the time the shell w)180 132 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 -F .848(gument is speci-)-.18 F .355(\214ed, con)180 144 R -.15(ve)-.4 G -.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G -2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) --.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 -(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 156 Q(vior) --.2 E(.)-.55 E(Ar)144 172.8 Q .463(guments to non-string format speci\ -\214ers are treated as C constants, e)-.18 F .464 -(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 184.8 -R 1.259 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +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 .694 +(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.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E(Ar)144 434.4 Q +.464(guments to non-string format speci\214ers are treated as C constan\ +ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258 +(minus sign is allo)144 446.4 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 196.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 213.6 Q F2(format)3.423 E -F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 458.4 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 475.2 Q F2(format)3.424 E +F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .924(requires more)3.424 F F2(ar)144 225.6 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.534 F .033 +3.423 E F0 .923(requires more)3.423 F F2(ar)144 487.2 Q(guments)-.37 E +F0 .033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) -.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 237.6 Q(The return v)5 E +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 499.2 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 254.4 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 266.4 Q F0([)2.5 E F1A F0 -2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 278.4 R 3.14(wt) --.25 G .64(op of the)-3.14 F .417(stack the current w)144 290.4 R .416 +108 516 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 528 Q F0([)2.5 E F1A F0 2.5 +(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ +tory stack, or rotates the stack, making the ne)144 540 R 3.139(wt)-.25 +G .639(op of the)-3.139 F .416(stack the current w)144 552 R .416 (orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F (guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 -(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625 -(and returns 0, unless the directory stack is empty)144 302.4 R 6.625 -(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 --.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 314.4 Q -F1144 326.4 Q F0 1.811(Suppresses the normal change of directory \ -when rotating or adding directories to the)180 326.4 R -(stack, so that only the stack is manipulated.)180 338.4 Q F1(+)144 -350.4 Q F2(n)A F0 1.267(Rotates the stack so that the)180 350.4 R F2(n) -3.767 E F0 1.268(th directory \(counting from the left of the list sho)B -1.268(wn by)-.25 F F1(dirs)180 362.4 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 374.4 Q F2(n)A F0 -.92(Rotates the stack so that the)180 374.4 R F2(n)3.42 E F0 .92 +(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 +(and returns 0, unless the directory stack is empty)144 564 R 6.625(.A) +-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 +(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 576 Q F1 +144 588 Q F0 1.811(Suppresses the normal change of directory when\ + rotating or adding directories to the)180 588 R +(stack, so that only the stack is manipulated.)180 600 Q F1(+)144 612 Q +F2(n)A F0 1.268(Rotates the stack so that the)180 612 R F2(n)3.768 E F0 +1.267(th directory \(counting from the left of the list sho)B 1.267 +(wn by)-.25 F F1(dirs)180 624 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 636 Q F2(n)A F0 .92 +(Rotates the stack so that the)180 636 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F1(dirs)180 386.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F2(dir)144.35 398.4 Q F0(Adds)180 398.4 Q F2(dir)3.137 E F0 .287 -(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) --.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 410.4 Q(gument to the)-.18 E F1 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 427.2 R F1(pushd) -2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F -F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 439.2 R F2(dir) -3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) --.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 -(stack is empty)144 451.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ +F F1(dirs)180 648 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 +E F2(dir)144.35 660 Q F0(Adds)180 660 Q F2(dir)3.138 E F0 .288 +(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) +-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F +(if it had been supplied as the ar)180 672 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 688.8 R F1(pushd)2.988 +E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F +F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 700.8 R F2(dir) +3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 +F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 +(stack is empty)144 712.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 463.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F1(pwd)108 480 Q F0([)2.5 E F1(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 492 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -504 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 +-.15 F(speci\214ed ne)144 724.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(67)193.45 E 0 +Cg EP +%%Page: 68 68 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(pwd)108 84 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 96 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 +108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 (\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) -144 516 R(the)3.263 E F13.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 528 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 540 Q F1 -.18(re)108 556.8 S(ad) -.18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E F2(aname) -3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 3.816(][)C F1 --3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1-3.816 E F2 -(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(nc) -3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(pr)3.817 E -(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout)3.817 E F0 3.817 -(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 568.8 Q F2(name)A F0 -(...])2.5 E .516(One line is read from the standard input, or from the \ -\214le descriptor)144 580.8 R F2(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .516(gument to)-.18 F(the)144 592.8 Q F13.847 E F0 1.347 -(option, split into w)3.847 F 1.347(ords as described abo)-.1 F 1.648 --.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.848 G 1.348(rd Splitting).75 F -F0 3.848(,a)C 1.348(nd the \214rst w)-3.848 F 1.348(ord is)-.1 F 1.465 -(assigned to the \214rst)144 604.8 R F2(name)3.965 E F0 3.965(,t).18 G +2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) +144 120 R(the)3.264 E F13.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 132 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) +.18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E/F2 10 +/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1-3.817 E F2 +(delim)3.817 E F0 3.817(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 +3.817(][)C F1-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 +(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 +-3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E +F2(timeout)3.816 E F0 3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A +([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ +tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E +F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 196.8 Q +F13.848 E F0 1.348(option, split into w)3.848 F 1.348 +(ords as described abo)-.1 F 1.647 -.15(ve u)-.15 H(nder).15 E F1 -.75 +(Wo)3.847 G 1.347(rd Splitting).75 F F0 3.847(,a)C 1.347 +(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 +(assigned to the \214rst)144 208.8 R F2(name)3.965 E F0 3.965(,t).18 G 1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 -F -.1(wo)144 616.8 S 1.112(rds than names, the remaining w).1 F 1.112 +F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112 (ords and their interv)-.1 F 1.112 -(ening delimiters are assigned to the last)-.15 F F2(name)144 628.8 Q F0 -5.723(.I).18 G 3.223(ft)-5.723 G .723(here are fe)-3.223 F .723(wer w) --.25 F .722 +(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0 +5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) +-.25 F .723 (ords read from the input stream than names, the remaining names are)-.1 -F .531(assigned empty v)144 640.8 R 3.031(alues. The)-.25 F .531 -(characters in)3.031 F/F3 9/Times-Bold@0 SF(IFS)3.031 E F0 .532 -(are used to split the line into w)2.781 F .532(ords using the same)-.1 -F .197(rules the shell uses for e)144 652.8 R .197 +F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +(characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 +(are used to split the line into w)2.782 F .531(ords using the same)-.1 +F .197(rules the shell uses for e)144 256.8 R .197 (xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 --.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .196 -(backslash charac-)2.697 F .156(ter \()144 664.8 R F1(\\)A F0 2.656(\)m) -C .156(ay be used to remo)-2.656 F .457 -.15(ve a)-.15 H .457 -.15(ny s) -.15 H .157(pecial meaning for the ne).15 F .157 +-.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 +(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m) +C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) +.15 H .157(pecial meaning for the ne).15 F .156 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 -676.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 688.8 Q F2(aname)2.5 E F0 1.05(The w) -180 700.8 R 1.049 +280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 +(The w)180 304.8 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) --.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F -F2(aname)180.33 712.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 --.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 -(ar)2.5 E(guments are ignored.)-.18 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(65)192.055 E 0 Cg EP -%%Page: 66 66 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q/F2 10/Times-Italic@0 SF(delim)2.5 E F0 -(The \214rst character of)180 96 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 108 Q F0 .372 -(If the standard input is coming from a terminal,)180 108 R F1 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(READLINE) -2.873 E F0(abo)2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G -(sed)-2.873 E .218(to obtain the line.)180 120 R .218 +-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 +(aname)180.33 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 +E(guments are ignored.)-.18 E F1144 328.8 Q F2(delim)2.5 E F0 +1.318(The \214rst character of)180 340.8 R F2(delim)3.818 E F0 1.317 +(is used to terminate the input line, rather than ne)3.818 F 3.817 +(wline. If)-.25 F F2(delim)180 352.8 Q F0(is the empty string,)2.5 E F1 +-.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1 +144 364.8 Q F0 .372 +(If the standard input is coming from a terminal,)180 364.8 R F1 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo) +2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E +.218(to obtain the line.)180 376.8 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 132 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E F1 -144 144 Q F2(te)2.5 E(xt)-.2 E F0(If)180 144 Q F1 -.18(re)2.715 G -(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te) -2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E -.216(fer before edit-)-.25 F(ing be)180 156 Q(gins.)-.15 E F1144 -168 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 180 S(ad).18 E F0 -1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 -1.395(characters rather than w)3.895 F 1.394 -(aiting for a complete line of)-.1 F(input, b)180 192 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 204 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 216 S(ad) -.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 -E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(acti)180 388.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E F1144 400.8 Q F2(te)2.5 E(xt) +-.2 E F0(If)180 400.8 Q F1 -.18(re)2.715 G(adline).18 E F0 .216 +(is being used to read the line,)2.715 F F2(te)2.716 E(xt)-.2 E F0 .216 +(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-) +-.25 F(ing be)180 412.8 Q(gins.)-.15 E F1144 424.8 Q F2(nc)2.5 E +(har)-.15 E(s)-.1 E F1 -.18(re)180 436.8 S(ad).18 E F0 1.395 +(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395 +(characters rather than w)3.895 F 1.394(aiting for a complete line of) +-.1 F(input, b)180 448.8 Q(ut honors a delimiter if fe)-.2 E(wer than) +-.25 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 +(characters are read before the delimiter)2.5 E(.)-.55 E F1144 +460.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 472.8 S(ad).18 E +F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 E +(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 (aiting for a complete)-.1 F .275 -(line of input, unless EOF is encountered or)180 228 R F1 -.18(re)2.775 -G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) -5.274 F 1.002 -(tered in the input are not treated specially and do not cause)180 240 R -F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 -E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 252 R .608 +(line of input, unless EOF is encountered or)180 484.8 R F1 -.18(re) +2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 +(Delimiter characters encoun-)5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 496.8 +R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) +3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 508.8 R .608 (The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 -3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 264 S .669 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 520.8 S .669 (riable is assigned e).25 F .669 (xactly the characters read \(with the e)-.15 F .67 -(xception of backslash; see the)-.15 F F1180 276 Q F0(option belo) -2.5 E(w\).)-.25 E F1144 288 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) -180 300 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F -3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 -(wline, before attempting to read)-.25 F(an)180 312 Q 2.5(yi)-.15 G 2.5 -(nput. The)-2.5 F +(xception of backslash; see the)-.15 F F1180 532.8 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 544.8 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 556.8 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161 +(on standard error)3.661 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 568.8 Q +2.5(yi)-.15 G 2.5(nput. The)-2.5 F (prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 324 Q F0 .543(Backslash does not act as an escape character) -180 324 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) --5.543 F(the line.)180 336 Q(In particular)5 E 2.5(,ab)-.4 G -(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) --.25 E F1144 348 Q F0(Silent mode.)180 348 Q +144 580.8 Q F0 .543(Backslash does not act as an escape character) +180 580.8 R 5.543(.T)-.55 G .544 +(he backslash is considered to be part of)-5.543 F(the line.)180 592.8 Q +(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E +(wline pair may not be used as a line continuation.)-.25 E F1144 +604.8 Q F0(Silent mode.)180 604.8 Q (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 360 Q F2(timeout)2.5 E F0(Cause)180 372 Q F1 -.18(re)2.929 G -(ad).18 E F0 .428(to time out and return f)2.929 F .428 +144 616.8 Q F2(timeout)2.5 E F0(Cause)180 628.8 Q F1 -.18(re)2.929 +G(ad).18 E F0 .428(to time out and return f)2.929 F .428 (ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 -(ber of characters\) is not read within)180 384 R F2(timeout)3.061 E F0 -(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(with a fractional portion follo)180 396 Q +(ber of characters\) is not read within)180 640.8 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 652.8 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -408 R .506(fect when reading)-.25 F .59(from re)180 420 R .59 +664.8 R .506(fect when reading)-.25 F .59(from re)180 676.8 R .59 (gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589 (times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 -(artial input read into the speci\214ed).15 F -.25(va)180 432 S(riable) -.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 -(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 -F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G -(ata.)-2.77 E 1.12(The e)180 444 R 1.12(xit status is 0 if input is a) --.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) -.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 -456 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 468 Q F2(fd)2.5 E F0 -(Read input from \214le descriptor)180 468 Q F2(fd)2.5 E F0(.)A .476 -(If no)144 484.8 R F2(names)3.336 E F0 .476 +(artial input read into the speci\214ed).15 F -.25(va)180 688.8 S +(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 +.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) +2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 +G(ata.)-2.77 E 1.12(The e)180 700.8 R 1.12 +(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 +(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 +(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 712.8 R -.15(ex)2.5 G +(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(68)193.45 E 0 Cg EP +%%Page: 69 69 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(fd)2.5 E F0 +(Read input from \214le descriptor)180 84 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 100.8 R F2(names)3.336 E F0 .476 (are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E -F3(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .477(The e)4.977 -F .477(xit status is zero,)-.15 F .773 -(unless end-of-\214le is encountered,)144 496.8 R F1 -.18(re)3.273 G(ad) +/F3 9/Times-Bold@0 SF(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A +F0 .477(The e)4.977 F .477(xit status is zero,)-.15 F .773 +(unless end-of-\214le is encountered,)144 112.8 R F1 -.18(re)3.273 G(ad) .18 E F0 .772 (times out \(in which case the status is greater than 128\), a)3.273 F --.25(va)144 508.8 S 2.004 +-.25(va)144 124.8 S 2.004 (riable assignment error \(such as assigning to a readonly v).25 F 2.005 (ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F -(descriptor is supplied as the ar)144 520.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 537.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +(descriptor is supplied as the ar)144 136.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 153.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 549.6 R -.15(ve)-.25 G +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 165.6 R -.15(ve)-.25 G (n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) -.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 -(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 561.6 R +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 177.6 R 1.096(If the)6.096 F F13.596 E F0 1.097 (option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 573.6 Q 3.334(ed. The) +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 189.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 585.6 R 1.076 -.15(ve a)-.25 H 3.276 +-.25 E .776(ables to associati)144 201.6 R 1.076 -.15(ve a)-.25 H 3.276 (rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 597.6 R -.15(ve) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 213.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 609.6 R(The)5.296 E F1 +to a subset of the set of readonly names.)144 225.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 621.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -633.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 237.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +249.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 645.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 261.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) -.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 657.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 674.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 686.4 R +(is supplied with a)2.76 F F2(name)144.36 273.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 290.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 302.4 R -.15(xe)-.15 G .02(cuting and return the v).15 F .021 (alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F 5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 -(the return status is that of the last command e)144 698.4 R -.15(xe) +(the return status is that of the last command e)144 314.4 R -.15(xe) -.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 -G(cuted).15 E 1.238(by a trap handler)144 710.4 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.238(by a trap handler)144 326.4 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) --3.738 F -.15(xe)-.15 G(cuted).15 E 1.067(before the trap handler)144 -722.4 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E -F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) -3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(66)192.055 E 0 Cg EP -%%Page: 67 67 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389 -(determine the status is the last command e)144 84 R -.15(xe)-.15 G .389 -(cuted by the trap handler before).15 F/F1 10/Times-Bold@0 SF -.18(re) -2.89 G(tur).18 E(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o) --2.89 H -.1(ke).4 G(d.).1 E(If)144 96 Q F1 -.18(re)2.584 G(tur).18 E(n) --.15 E F0 .084(is used outside a function, b)2.584 F .084(ut during e) --.2 F -.15(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E -F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 -F .588(causes the shell to stop e)144 108 R -.15(xe)-.15 G .588 -(cuting that script and return either).15 F/F2 10/Times-Italic@0 SF(n) -3.448 E F0 .589(or the e)3.329 F .589(xit status of the last com-)-.15 F -.326(mand e)144 120 R -.15(xe)-.15 G .326 -(cuted within the script as the e).15 F .326(xit status of the script.) --.15 F(If)5.326 E F2(n)2.826 E F0 .325(is supplied, the return v)2.826 F -.325(alue is)-.25 F .444(its least signi\214cant 8 bits.)144 132 R .444 +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.033(before the trap handler)144 +338.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E +F0 1.033(is e)3.533 F -.15(xe)-.15 G 1.033(cuted during a).15 F F1(DEB) +3.532 E(UG)-.1 E F0 1.032(trap, the last command used to)3.532 F .389 +(determine the status is the last command e)144 350.4 R -.15(xe)-.15 G +.389(cuted by the trap handler before).15 F F1 -.18(re)2.89 G(tur).18 E +(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o)-2.89 H -.1(ke).4 +G(d.).1 E(If)144 362.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 +(is used outside a function, b)2.584 F .084(ut during e)-.2 F -.15(xe) +-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 E +F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 F .588 +(causes the shell to stop e)144 374.4 R -.15(xe)-.15 G .588 +(cuting that script and return either).15 F F2(n)3.448 E F0 .589 +(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) +144 386.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 +(is supplied, the return v)2.826 F .325(alue is)-.25 F .444 +(its least signi\214cant 8 bits.)144 398.4 R .444 (The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E (n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 144 R -.15(xe) --.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1 -(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E -.749(mand associated with the)144 156 R F1(RETURN)3.249 E F0 .749 +(ment, or is used outside a function and not during e)144 410.4 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E +F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E +.749(mand associated with the)144 422.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .75(cution resumes after the function).15 F(or script.)144 168 Q F1 -(set)108 184.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .75(cution resumes after the function).15 F(or script.)144 434.4 Q F1 +(set)108 451.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 196.8 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 463.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 208.8 S .836 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 475.2 S .836 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F .835(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 220.8 +(reused as input for setting or resetting the currently-set v)144 487.2 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 232.8 R F2(posix)2.912 E F0 +(riables cannot be).25 F 2.912(reset. In)144 499.2 R F2(posix)2.912 E F0 .412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 (The output is sorted according to the current)5.412 F 3.53 -(locale. When)144 244.8 R 1.031(options are speci\214ed, the)3.53 F +(locale. When)144 511.2 R 1.031(options are speci\214ed, the)3.53 F 3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) -.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 256.8 R 1.623 +1.624(after option processing are treated as v)144 523.2 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 268.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 535.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 280.8 Q -F0 1.377(Each v)184 280.8 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 547.2 Q +F0 1.377(Each v)184 547.2 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F -1.378(ute and)-.2 F(mark)184 292.8 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 304.8 Q F0 .132 -(Report the status of terminated background jobs immediately)184 304.8 R +1.378(ute and)-.2 F(mark)184 559.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 571.2 Q F0 .132 +(Report the status of terminated background jobs immediately)184 571.2 R 2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 316.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 328.8 Q F0 -.087(Exit immediately if a)184 328.8 R F2(pipeline)2.587 E F0 .087 +(primary prompt.)184 583.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 595.2 Q F0 +.087(Exit immediately if a)184 595.2 R F2(pipeline)2.587 E F0 .087 (\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F -F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 340.8 Q -F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF -1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) -.15 F 1.521(xits with a non-zero status.)-.15 F .079 -(The shell does not e)184 352.8 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 364.8 Q +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 607.2 Q +F2 1.521(compound command)4.021 F F0(\(see)4.021 E F3 1.521 +(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F +1.521(xits with a non-zero status.)-.15 F .079(The shell does not e)184 +619.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(follo)184 631.2 Q 1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 -.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 (wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 376.8 S .581(rds, part of an).1 F 3.081(yc) +4.154 E(ed)-.15 E -.1(wo)184 643.2 S .581(rds, part of an).1 F 3.081(yc) -.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 (&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 388.8 R +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 655.2 R F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) -3.418 H .918(ommand in a pipeline b).15 F .917 (ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 400.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +-.25(va)184 667.2 S .66(lue is being in).25 F -.15(ve)-.4 G .66 (rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 (ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 412.8 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 679.2 R 1.112(ailed while)-.1 F F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -(eing ignored, the shell does)-3.612 F .177(not e)184 424.8 R 2.677 +(eing ignored, the shell does)-3.612 F .177(not e)184 691.2 R 2.677 (xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 (fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 (cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F .618(the shell en)184 436.8 R .617 +(option applies to)2.678 F .618(the shell en)184 703.2 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 448.8 R(ONMENT) +-.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 715.2 R(ONMENT) -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 460.8 -Q 2.042(If a compound command or shell function e)184 478.8 R -.15(xe) --.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 -E F0 2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 -490.8 R -.15(xe)-.15 G 1.436 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 727.2 +Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(69)193.45 E 0 Cg EP +%%Page: 70 70 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.042 +(If a compound command or shell function e)184 84 R -.15(xe)-.15 G 2.042 +(cutes in a conte).15 F 2.042(xt where)-.15 F/F1 10/Times-Bold@0 SF +4.542 E F0 2.042(is being)4.542 F 1.435 +(ignored, none of the commands e)184 96 R -.15(xe)-.15 G 1.436 (cuted within the compound command or function).15 F .194 -(body will be af)184 502.8 R .194(fected by the)-.25 F F12.694 E -F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +(body will be af)184 108 R .194(fected by the)-.25 F F12.694 E F0 +.193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 514.8 R 3.39(ac)3.39 G .89 +-.1 E 3.39(status. If)184 120 R 3.39(ac)3.39 G .89 (ompound command or shell function sets)-3.39 F F13.39 E F0 .89 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 526.8 Q F13.154 E F0 .654 +(where)184 132 Q F13.154 E F0 .654 (is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 -.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F -(or the command containing the function call completes.)184 538.8 Q F1 -144 550.8 Q F0(Disable pathname e)184 550.8 Q(xpansion.)-.15 E F1 -144 562.8 Q F0 2.238(Remember the location of commands as the)184 -562.8 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +(or the command containing the function call completes.)184 144 Q F1 +144 156 Q F0(Disable pathname e)184 156 Q(xpansion.)-.15 E F1 +144 168 Q F0 2.238(Remember the location of commands as the)184 +168 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F -.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 -574.8 Q(ault.)-.1 E F1144 586.8 Q F0 .514(All ar)184 586.8 R .514 +180 Q(ault.)-.1 E F1144 192 Q F0 .514(All ar)184 192 R .514 (guments in the form of assignment statements are placed in the en)-.18 F .513(vironment for a)-.4 F -(command, not just those that precede the command name.)184 598.8 Q F1 -144 610.8 Q F0 .148(Monitor mode.)184 610.8 R .148 +(command, not just those that precede the command name.)184 204 Q F1 +144 216 Q F0 .148(Monitor mode.)184 216 R .148 (Job control is enabled.)5.148 F .149(This option is on by def)5.148 F .149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 622.8 R F3 .651(JOB CONTR)3.151 F -(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 -(processes run in a separate)3.151 F .678(process group.)184 634.8 R -.679(When a background job completes, the shell prints a line containin\ -g its)5.678 F -.15(ex)184 646.8 S(it status.).15 E F1144 658.8 Q -F0 .653(Read commands b)184 658.8 R .653(ut do not e)-.2 F -.15(xe)-.15 -G .653(cute them.).15 F .652 +(on systems that support it \(see)184 228 R/F2 9/Times-Bold@0 SF .651 +(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 +(\). All).15 F .65(processes run in a separate)3.151 F .678 +(process group.)184 240 R .679(When a background job completes, the she\ +ll prints a line containing its)5.678 F -.15(ex)184 252 S(it status.).15 +E F1144 264 Q F0 .653(Read commands b)184 264 R .653(ut do not e) +-.2 F -.15(xe)-.15 G .653(cute them.).15 F .652 (This may be used to check a shell script for)5.653 F(syntax errors.)184 -670.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 -E F1144 682.8 Q F2(option\255name)2.5 E F0(The)184 694.8 Q F2 -(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 -(allexport)184 706.8 Q F0(Same as)224 718.8 Q F12.5 E F0(.)A -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(67)192.055 E 0 Cg EP -%%Page: 68 68 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(braceexpand)184 84 Q F0(Same as)224 96 Q F12.5 E F0(.)A F1 -(emacs)184 108 Q F0 .089(Use an emacs-style command line editing interf) -224 108 R 2.589(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 -E .95(when the shell is interacti)224 120 R -.15(ve)-.25 G 3.45(,u).15 G -.95(nless the shell is started with the)-3.45 F F1(\255\255noediting) -3.45 E F0 2.5(option. This)224 132 R(also af)2.5 E -(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G -(ad \255e).18 E F0(.)A F1(err)184 144 Q(exit)-.18 E F0(Same as)224 144 Q -F12.5 E F0(.)A F1(errtrace)184 156 Q F0(Same as)224 156 Q F1 -2.5 E F0(.)A F1(functrace)184 168 Q F0(Same as)224 180 Q F12.5 E -F0(.)A F1(hashall)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A F1 -(histexpand)184 204 Q F0(Same as)224 216 Q F12.5 E F0(.)A F1 -(history)184 228 Q F0 .586(Enable command history)224 228 R 3.087(,a) +276 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 288 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) +184 300 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E +(wing:)-.25 E F1(allexport)184 312 Q F0(Same as)224 324 Q F12.5 E +F0(.)A F1(braceexpand)184 336 Q F0(Same as)224 348 Q F12.5 E F0(.) +A F1(emacs)184 360 Q F0 .089 +(Use an emacs-style command line editing interf)224 360 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 372 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E +F0 2.5(option. This)224 384 R(also af)2.5 E(fects the editing interf) +-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) +184 396 Q(exit)-.18 E F0(Same as)224 396 Q F12.5 E F0(.)A F1 +(errtrace)184 408 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 +(functrace)184 420 Q F0(Same as)224 432 Q F12.5 E F0(.)A F1 +(hashall)184 444 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 +(histexpand)184 456 Q F0(Same as)224 468 Q F12.5 E F0(.)A F1 +(history)184 480 Q F0 .586(Enable command history)224 480 R 3.087(,a) -.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 -H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9 -/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 240 Q +H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF +(.)A F0 .587(This option is)5.087 F(on by def)224 492 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -252 Q(eeof)-.18 E F0 1.657(The ef)224 264 R 1.657 -(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) +504 Q(eeof)-.18 E F0 1.657(The ef)224 516 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 -276 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 288 S(yw).1 E(ord)-.1 E F0(Same as)224 300 Q F1 -2.5 E F0(.)A F1(monitor)184 312 Q F0(Same as)224 312 Q F12.5 -E F0(.)A F1(noclob)184 324 Q(ber)-.1 E F0(Same as)224 336 Q F12.5 -E F0(.)A F1(noexec)184 348 Q F0(Same as)224 348 Q F12.5 E F0(.)A -F1(noglob)184 360 Q F0(Same as)224 360 Q F12.5 E F0(.)A F1(nolog) -184 372 Q F0(Currently ignored.)224 372 Q F1(notify)184 384 Q F0 -(Same as)224 384 Q F12.5 E F0(.)A F1(nounset)184 396 Q F0(Same as) -224 396 Q F12.5 E F0(.)A F1(onecmd)184 408 Q F0(Same as)224 408 Q -F12.5 E F0(.)A F1(ph)184 420 Q(ysical)-.15 E F0(Same as)224 420 Q -F12.5 E F0(.)A F1(pipefail)184 432 Q F0 1.029 -(If set, the return v)224 432 R 1.029(alue of a pipeline is the v)-.25 F -1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 444 +528 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 540 S(yw).1 E(ord)-.1 E F0(Same as)224 552 Q F1 +2.5 E F0(.)A F1(monitor)184 564 Q F0(Same as)224 564 Q F12.5 +E F0(.)A F1(noclob)184 576 Q(ber)-.1 E F0(Same as)224 588 Q F12.5 +E F0(.)A F1(noexec)184 600 Q F0(Same as)224 600 Q F12.5 E F0(.)A +F1(noglob)184 612 Q F0(Same as)224 612 Q F12.5 E F0(.)A F1(nolog) +184 624 Q F0(Currently ignored.)224 624 Q F1(notify)184 636 Q F0 +(Same as)224 636 Q F12.5 E F0(.)A F1(nounset)184 648 Q F0(Same as) +224 648 Q F12.5 E F0(.)A F1(onecmd)184 660 Q F0(Same as)224 660 Q +F12.5 E F0(.)A F1(ph)184 672 Q(ysical)-.15 E F0(Same as)224 672 Q +F12.5 E F0(.)A F1(pipefail)184 684 Q F0 1.029 +(If set, the return v)224 684 R 1.029(alue of a pipeline is the v)-.25 F +1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 696 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 456 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 468 Q F0 -2.09(Change the beha)224 468 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -480 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 -1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 492 R 4.807(wp)-.25 G +-.15 F -.15(ex)224 708 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(70)193.45 E 0 Cg EP +%%Page: 71 71 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(posix)184 84 Q F0 2.09(Change the beha)224 84 R 2.091(vior of)-.2 F +F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif) +-.1 F 2.091(fers from the)-.25 F 1.212 +(POSIX standard to match the standard \()224 96 R/F2 10/Times-Italic@0 +SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9/Times-Bold@0 SF 1.212 +(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 108 R 4.807(wp)-.25 G 2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 -504 Q(vior)-.2 E(.)-.55 E F1(pri)184 516 Q(vileged)-.1 E F0(Same as)224 -528 Q F12.5 E F0(.)A F1 -.1(ve)184 540 S(rbose).1 E F0(Same as)224 -540 Q F12.5 E F0(.)A F1(vi)184 552 Q F0 1.466 -(Use a vi-style command line editing interf)224 552 R 3.965(ace. This) +120 Q(vior)-.2 E(.)-.55 E F1(pri)184 132 Q(vileged)-.1 E F0(Same as)224 +144 Q F12.5 E F0(.)A F1 -.1(ve)184 156 S(rbose).1 E F0(Same as)224 +156 Q F12.5 E F0(.)A F1(vi)184 168 Q F0 1.466 +(Use a vi-style command line editing interf)224 168 R 3.965(ace. This) -.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 -564 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A(If)184 594 Q -F13.052 E F0 .552(is supplied with no)3.052 F F5(option\255name) +180 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A(If)184 210 Q +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 -606 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 +222 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 618 Q F1 -144 630 Q F0 -.45(Tu)184 630 S 1.071(rn on).45 F F5(privile)4.821 E -.1 +(option settings is displayed on the standard output.)184 234 Q F1 +144 246 Q F0 -.45(Tu)184 246 S 1.071(rn on).45 F F2(privile)4.821 E -.1 (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 +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 642 R 1.5 -(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 654 S -(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0 -(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524 -(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F -(vironment,)-.4 E .38(are ignored.)184 666 R .38 +(cessed, shell functions are not inherited from the en)184 258 R 1.5 +(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 +-.27(BA)184 270 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G +.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 282 R .38 (If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) -.25 H .379(ser \(group\) id not equal to the real).15 F .461 -(user \(group\) id, and the)184 678 R F12.961 E F0 .461 +(user \(group\) id, and the)184 294 R F12.961 E F0 .461 (option is not supplied, these actions are tak)2.961 F .462 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 690 Q .695 -.15(ve u)-.25 H .395 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 306 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 702 R -.45(Tu)5.386 G +E -.15(ve)-.25 G .386(user id is not reset.)184 318 R -.45(Tu)5.386 G .386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F -(set to the real user and group ids.)184 714 Q(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(68)192.055 E 0 Cg EP -%%Page: 69 69 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Exit after reading and e)184 84 Q -.15(xe)-.15 G -(cuting one command.).15 E F1144 96 Q F0 -.35(Tr)184 96 S .044 -(eat unset v).35 F .044(ariables and parameters other than the special \ -parameters "@" and "*" as an)-.25 F .182 -(error when performing parameter e)184 108 R 2.682(xpansion. If)-.15 F --.15(ex)2.682 G .183(pansion is attempted on an unset v).15 F(ari-)-.25 -E .746(able or parameter)184 120 R 3.246(,t)-.4 G .746 +(set to the real user and group ids.)184 330 Q F1144 342 Q F0 +(Exit after reading and e)184 342 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 354 Q F0 -.35(Tr)184 354 S .044(eat unset v).35 F .044 +(ariables and parameters other than the special parameters "@" and "*" \ +as an)-.25 F .182(error when performing parameter e)184 366 R 2.682 +(xpansion. If)-.15 F -.15(ex)2.682 G .183 +(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 +(able or parameter)184 378 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -132 Q F1144 144 Q F0(Print shell input lines as the)184 144 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 156 Q F0 .315(After e)184 156 R -.315(xpanding each)-.15 F/F2 10/Times-Italic@0 SF .315(simple command) -2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case) -2.815 E F0(command,)2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236 -(or arithmetic)184 168 R F1 -.25(fo)3.736 G(r).25 E F0 1.236 -(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of) --.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E/F4 9/Times-Roman@0 SF(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 180 Q +390 Q F1144 402 Q F0(Print shell input lines as the)184 402 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 414 Q F0 .315(After e)184 414 R +.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 +(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) +2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 +426 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 438 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 192 Q F0 2.578(The shell performs brace e)184 192 R 2.578 +144 450 Q F0 2.578(The shell performs brace e)184 450 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 204 Q -(ault.)-.1 E F1144 216 Q F0 .214(If set,)184 216 R F1(bash)2.714 E +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 462 Q +(ault.)-.1 E F1144 474 Q F0 .214(If set,)184 474 R F1(bash)2.714 E 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 228 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.053(tors. This)184 486 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 240 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 252 Q F0 .104(If set, an)184 252 R 2.604(yt)-.15 G .104 +.15 F(tor)184 498 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 510 Q F0 .104(If set, an)184 510 R 2.604(yt)-.15 G .104 (rap on)-2.604 F F1(ERR)2.604 E F0 .103 (is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 264 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F .838(mands e)184 522 R -.15(xe)-.15 G .838(cuted in a subshell en).15 F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 -(trap is normally not inherited in)3.339 F(such cases.)184 276 Q F1 -144 288 Q F0(Enable)184 288 Q F1(!)3.032 E F0 .532 +(trap is normally not inherited in)3.339 F(such cases.)184 534 Q F1 +144 546 Q F0(Enable)184 546 Q F1(!)3.032 E F0 .532 (style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 300 Q -.15 -(ve)-.25 G(.).15 E F1144 312 Q F0 .959 -(If set, the shell does not resolv)184 312 R 3.459(es)-.15 G .959 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 558 Q -.15 +(ve)-.25 G(.).15 E F1144 570 Q F0 .959 +(If set, the shell does not resolv)184 570 R 3.459(es)-.15 G .959 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 (cuting commands such as).15 F F1(cd)3.46 E F0 2.822 -(that change the current w)184 324 R 2.822(orking directory)-.1 F 7.822 +(that change the current w)184 582 R 2.822(orking directory)-.1 F 7.822 (.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 336 R(def)2.685 +(ysical directory structure)-.05 F 2.685(instead. By)184 594 R(def)2.685 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 348 Q(.)-.65 E F1144 -360 Q F0 .89(If set, an)184 360 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 606 Q(.)-.65 E F1144 +618 Q F0 .89(If set, an)184 618 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 372 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 630 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 384 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 396 Q -F0 .401(If no ar)184 396 R .401(guments follo)-.18 F 2.901(wt)-.25 G +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 642 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 654 Q +F0 .401(If no ar)184 654 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 408 Q F2 +(Otherwise,)5.4 E(the positional parameters are set to the)184 666 Q F2 (ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G (ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -420 Q F0 1.944(Signal the end of options, cause all remaining)184 420 R +678 Q F0 1.944(Signal the end of options, cause all remaining)184 678 R F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G -1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 432 R +1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 690 R F13.446 E F0(and)3.446 E F13.446 E F0 .945 (options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) 3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B -(parameters remain unchanged.)184 444 Q .425(The options are of)144 -460.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(parameters remain unchanged.)184 702 Q .425(The options are of)144 +718.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 (Using + rather than \255 causes these options)5.425 F .178 -(to be turned of)144 472.8 R 2.678(f. The)-.25 F .178 +(to be turned of)144 730.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 484.8 R F1<24ad>2.566 E F0 -5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 496.8 Q F1(shift)108 513.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 525.6 R F2(n)2.929 E F0 -.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G -.428(rameters represented by the num-).15 F(bers)144 537.6 Q F1($#)2.582 -E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 -(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) --.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) -.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 -(is 0, no parameters are changed.)144 549.6 R(If)5.06 E F2(n)2.92 E F0 -.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F -(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 561.6 R -.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 -.144(is greater than)2.884 F F1($#)2.644 E F0 -(or less than zero; otherwise 0.)144 573.6 Q F1(shopt)108 590.4 Q F0([) +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(71)193.45 E 0 Cg EP +%%Page: 72 72 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .066 +(current set of options may be found in)144 84 R/F1 10/Times-Bold@0 SF +<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa) +-.1 G .066(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 96 Q F1(shift)108 112.8 Q F0([)2.5 E/F2 10 +/Times-Italic@0 SF(n)A F0(])A .429(The positional parameters from)144 +124.8 R F2(n)2.929 E F0 .429(+1 ... are renamed to)B F1 .429($1 ....) +2.929 F F0 -.15(Pa)5.428 G .428(rameters represented by the num-).15 F +(bers)144 136.8 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#) +2.582 E F0A F2(n)A F0 .082(+1 are unset.)B F2(n)5.442 E F0 .082 +(must be a non-ne)2.822 F -.05(ga)-.15 G(ti).05 E .383 -.15(ve n)-.25 H +.083(umber less than or equal to).15 F F1($#)2.583 E F0 5.083(.I)C(f) +-5.083 E F2(n)2.943 E F0 .06(is 0, no parameters are changed.)144 148.8 +R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06 +(n, it is assumed to be 1.).15 F(If)5.06 E F2(n)2.92 E F0 .06 +(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t)C(he)-2.56 E .143 +(positional parameters are not changed.)144 160.8 R .144 +(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 .144 +(is greater than)2.884 F F1($#)2.644 E F0 +(or less than zero; otherwise 0.)144 172.8 Q F1(shopt)108 189.6 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 602.4 S .64(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 201.6 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 614.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +(listed belo)144 213.6 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H 2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 626.4 R .826 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 225.6 R .826 (ith no options, or with the)-.4 F F13.326 E F0 .825 (option, a list of all settable options is displayed, with an)3.326 F -.945(indication of whether or not each is set.)144 638.4 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 650.4 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 662.4 Q -F0(Enable \(set\) each)180 662.4 Q F2(optname)2.5 E F0(.)A F1144 -674.4 Q F0(Disable \(unset\) each)180 674.4 Q F2(optname)2.5 E F0(.)A F1 -144 686.4 Q F0 .003(Suppresses normal output \(quiet mode\); the \ -return status indicates whether the)180 686.4 R F2(optname)2.503 E F0 -(is)2.503 E .255(set or unset.)180 698.4 R .255(If multiple)5.255 F F2 -(optname)2.755 E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G -2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 -(he return status is zero if)-2.756 F(all)180 710.4 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(69)192.055 E 0 Cg EP -%%Page: 70 70 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(Restricts the v)180 84 Q(alues of)-.25 E/F2 10 -/Times-Italic@0 SF(optname)2.5 E F0(to be those de\214ned for the)2.5 E -F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G -(iltin.).2 E .625(If either)144 100.8 R F13.125 E F0(or)3.124 E F1 -3.124 E F0 .624(is used with no)3.124 F F2(optname)3.124 E F0(ar) -3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624 -(ws only those options which are)-.25 F 2.233(set or unset, respecti)144 -112.8 R -.15(ve)-.25 G(ly).15 E 7.234(.U)-.65 G 2.234 -(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 2.234 -(options are disabled \(unset\) by)4.734 F(def)144 124.8 Q(ault.)-.1 E -1.544(The return status when listing options is zero if all)144 141.6 R -F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F -.696 +.551(indication of whether or not each is set; if)144 237.6 R F2 +(optnames)3.052 E F0 .552 +(are supplied, the output is restricted to those)3.052 F 2.55 +(options. The)144 249.6 R F12.55 E F0 .049(option causes output t\ +o be displayed in a form that may be reused as input.)2.55 F(Other)5.049 +E(options ha)144 261.6 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 273.6 Q F0(Enable \(set\) each)180 +273.6 Q F2(optname)2.5 E F0(.)A F1144 285.6 Q F0 +(Disable \(unset\) each)180 285.6 Q F2(optname)2.5 E F0(.)A F1144 +297.6 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 297.6 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 309.6 R .256(If multiple)5.256 F F2(optname)2.756 +E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 321.6 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 333.6 Q F0 +(Restricts the v)180 333.6 Q(alues of)-.25 E F2(optname)2.5 E F0 +(to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 350.4 R F1 +3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 +E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 +(set or unset, respecti)144 362.4 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +-.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 +2.234(options are disabled \(unset\) by)4.734 F(def)144 374.4 Q(ault.) +-.1 E 1.544(The return status when listing options is zero if all)144 +391.2 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 153.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 -(alid shell)-.25 F(option.)144 165.6 Q(The list of)144 182.4 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 200.4 Q F0 .2 -(If set, a command name that is the name of a directory is e)184 200.4 R --.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 212.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +144 403.2 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 +(alid shell)-.25 F(option.)144 415.2 Q(The list of)144 432 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 450 Q F0 1.944 +(If set, the shell suppresses multiple e)184 462 R -.25(va)-.25 G 1.945 +(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .857(arithmetic e)184 474 R .857 +(xpression e)-.15 F -.25(va)-.25 G .857(luation and while e).25 F -.15 +(xe)-.15 G .857(cuting b).15 F .857(uiltins that can perform v)-.2 F +(ariable)-.25 E(assignments.)184 486 Q F1(autocd)144 498 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 498 R +-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 510 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 224.4 Q(ars)-.1 E F0 .155(If set, an ar)184 236.4 R .155 -(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +F1(cdable_v)144 522 Q(ars)-.1 E F0 .156(If set, an ar)184 534 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 248.4 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 260.4 Q F0 +(name of a v)184 546 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 558 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -260.4 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 272.4 R 1.487(errors check)3.987 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .77(one character too man)184 284.4 R 4.57 -.65(y. I) +558 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 570 R 1.488(errors check)3.988 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.987(,a) +-.4 G(nd)-3.987 E .77(one character too man)184 582 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 296.4 Q -(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 308.4 Q F0 .736(If set,)184 320.4 R F1(bash)3.236 -E F0 .736(checks that a command found in the hash table e)3.236 F .737 -(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -332.4 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 344.4 -Q F0 .449(If set,)184 356.4 R F1(bash)2.949 E F0 .449 -(lists the status of an)2.949 F 2.949(ys)-.15 G .448 -(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 368.4 R(an)3.438 E 3.438(yj)-.15 G -.938(obs are running, this causes the e)-3.438 F .938 -(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 -(attempted without an interv)184 380.4 R 2.203(ening command \(see)-.15 -F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 392.4 Q -.1(wa) --.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 404.4 Q F0 .796(If set,)184 -416.4 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G -.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 428.4 S(lues of).25 E F3(LINES)2.5 -E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 440.4 Q F0 1.202(If set,)184 440.4 R F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 -(ll lines of a multiple-line command in the same history).15 F(entry)184 -452.4 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 464.4 -Q F0 .419(If set,)184 476.4 R F1(bash)2.919 E F0 .419(changes its beha) -2.919 F .419(vior to that of v)-.2 F .42 -(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .462(to the) -184 488.4 R F1([[)2.962 E F0 .462(conditional command')2.962 F(s)-.55 E -F1(=~)2.962 E F0 .462 -(operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 500.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F -(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) -3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 -(use ASCII collation and)184 512.4 R F2(str)3.321 E(cmp)-.37 E F0 .821 -(\(3\); bash-4.1 and later use the current locale').19 F 3.32(sc)-.55 G -(ollation)-3.32 E(sequence and)184 524.4 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 536.4 Q F0 1.409(If set,)184 548.4 R F1 -(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v) --.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 -(string comparison when using the)184 560.4 R F1([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.922 E F0 .422(operators \(see pre-)2.922 F .48 -(vious item\) and the ef)184 572.4 R .481 -(fect of interrupting a command list.)-.25 F .481(Bash v)5.481 F .481 -(ersions 3.2 and earlier)-.15 F(continue with the ne)184 584.4 Q -(xt command in the list after one terminates due to an interrupt.)-.15 E -F1(compat40)144 596.4 Q F0 1.41(If set,)184 608.4 R F1(bash)3.91 E F0 -1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007 -(string comparison when using the)184 620.4 R F1([[)4.507 E F0 2.008 -(conditional command')4.507 F(s)-.55 E F1(<)4.508 E F0(and)4.508 E F1(>) -4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 632.4 R -F1(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F -(ersions)-.15 E .086 -(4.0 and later interrupt the list as if the shell recei)184 644.4 R -.15 -(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v) --.25 F .087(ersions con-)-.15 F(tinue with the ne)184 656.4 Q -(xt command in the list.)-.15 E F1(compat41)144 668.4 Q F0 1.484 -(If set,)184 680.4 R F1(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F -F2(posix)3.984 E F0 1.483 -(mode, treats a single quote in a double-quoted parameter)3.984 F -.15 -(ex)184 692.4 S .958(pansion as a special character).15 F 5.958(.T)-.55 -G .959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459 -(nn).15 G .959(umber\) and)-3.459 F .59 -(the characters between the single quotes are considered quoted.)184 -704.4 R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 716.4 R .589(ersion 4.1.)-.15 F .589(The def) -5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 728.4 Q(GNU Bash 4.4)72 768 -Q(2016 August 26)142.895 E(70)192.055 E 0 Cg EP -%%Page: 71 71 +(the command proceeds.)184 594 Q(This option is only used by interacti)5 +E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 606 Q F0 .737 +(If set,)184 618 R F1(bash)3.237 E F0 .736 +(checks that a command found in the hash table e)3.237 F .736 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 630 +Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 642 Q +F0 .448(If set,)184 654 R F1(bash)2.948 E F0 .448 +(lists the status of an)2.948 F 2.949(ys)-.15 G .449 +(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 +F -.15(ve)-.25 G 3.439(shell. If)184 666 R(an)3.439 E 3.439(yj)-.15 G +.938(obs are running, this causes the e)-3.439 F .938 +(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 +(attempted without an interv)184 678 R 2.203(ening command \(see)-.15 F +/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 690 Q -.1(wa)-.1 +G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 702 Q F0 1.09(If set,)184 +714 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 726 Q 2.5(,u)-.65 G +(pdates the v)-2.5 E(alues of)-.25 E F3(LINES)2.5 E F0(and)2.25 E F3 +(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F0(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(72)193.45 E 0 Cg EP +%%Page: 73 73 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compat42)144 84 Q F0 1.797(If set,)184 96 R F1(bash)4.297 E F0 1.796 +SF(cmdhist)144 84 Q F0 1.202(If set,)184 84 R F1(bash)3.702 E F0 1.202 +(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 +(ll lines of a multiple-line command in the same history).15 F(entry)184 +96 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +(ws easy re-editing of multi-line commands.)-.25 F 1.132 +(This option is enabled by)6.132 F(def)184 108 Q .613(ault, b)-.1 F .613 +(ut only has an ef)-.2 F .614 +(fect if command history is enabled, as described abo)-.25 F .914 -.15 +(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)184 120 Q(OR)-.162 E +(Y)-.315 E/F3 9/Times-Roman@0 SF(.)A F1(compat31)144 132 Q F0 .42 +(If set,)184 144 R F1(bash)2.92 E F0 .42(changes its beha)2.92 F .419 +(vior to that of v)-.2 F .419(ersion 3.1 with respect to quoted ar)-.15 +F(guments)-.18 E .461(to the)184 156 R F1([[)2.961 E F0 .462 +(conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 +(operator and locale-speci\214c string comparison when)2.962 F .71 +(using the)184 168 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 +(use ASCII collation and)184 180 R/F4 10/Times-Italic@0 SF(str)3.321 E +(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 192 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 204 Q F0 1.41(If set,) +184 216 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +(vior to that of v)-.2 F 1.409 +(ersion 3.2 with respect to locale-speci\214c)-.15 F .422 +(string comparison when using the)184 228 R F1([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) +2.923 E F0 .423(operators \(see pre-)2.923 F .481 +(vious item\) and the ef)184 240 R .481 +(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 252 Q +(xt command in the list after one terminates due to an interrupt.)-.15 E +F1(compat40)144 264 Q F0 1.409(If set,)184 276 R F1(bash)3.909 E F0 +1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 288 R F1([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 300 R +F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +312 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 324 Q +(xt command in the list.)-.15 E F1(compat41)144 336 Q F0 1.483(If set,) +184 348 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F4(posix) +3.983 E F0 1.484 +(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 +(ex)184 360 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 +(nn).15 G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 372 +R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 +(posix mode through v)184 384 R .589(ersion 4.1.)-.15 F .589(The def) +5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 396 Q F1(compat42)144 408 Q +F0 1.796(If set,)184 420 R F1(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .14(If set,)184 132 R F1 -(bash)2.64 E F0 .14(does not print a w)2.64 F .141 -(arning message if an attempt is made to use a quoted com-)-.1 F .913 -(pound array assignment as an ar)184 144 R .913(gument to)-.18 F F1 -(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912 -(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 156 S .352 +4.296 F(ord)-.1 E -.15(ex)184 432 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 444 Q F0 .141(If set,)184 456 R F1 +(bash)2.641 E F0 .141(does not print a w)2.641 F .14 +(arning message if an attempt is made to use a quoted com-)-.1 F .912 +(pound array assignment as an ar)184 468 R .912(gument to)-.18 F F1 +(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 480 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) --.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem) --2.853 E -.1(fa)184 168 S 1.058(tal errors that cause the shell to e).1 -F 1.057(xit\), and does not reset the loop state when a shell)-.15 F -.374(function is e)184 180 R -.15(xe)-.15 G .374(cuted \(this allo).15 F -(ws)-.25 E F1(br)2.874 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 -.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F -(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(complete_fullquote)144 204 Q F0 .654(If set,)184 216 R F1(bash)3.153 E -F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 228 R 1.524 -(If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G -4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F -2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 240 R .028(metacharacters appear in shell v)184 -252 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 -F .029(This means)5.029 F 1.073(that dollar signs in v)184 264 R 1.073 +-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) +-2.852 E -.1(fa)184 492 S 1.057(tal errors that cause the shell to e).1 +F 1.058(xit\), and does not reset the loop state when a shell)-.15 F +.375(function is e)184 504 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 +.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F +(the caller')184 516 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 528 Q F0 .441(If set,)184 540 R F1(bash)2.941 E F0(sa) +2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B) +-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184 +552 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +(rdless of whether or not e).05 E(xtended deb)-.15 E +(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 564 Q F0 .654 +(If set,)184 576 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 588 R 1.524(If not set,)6.524 F F1(bash)4.024 E +F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ +haracters that will be quoted in completed \214lenames when these)184 +600 R .028(metacharacters appear in shell v)184 612 R .028 +(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 +(This means)5.029 F 1.073(that dollar signs in v)184 624 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 276 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 636 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F 6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -288 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 300 Q +648 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 660 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F1(dir)144 312 Q(expand)-.18 E F0 .486 -(If set,)184 324 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F1(dir)144 672 Q(expand)-.18 E F0 .486 +(If set,)184 684 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -336 R .179(This changes the contents of the readline editing b)5.18 F +696 R .179(This changes the contents of the readline editing b)5.18 F (uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 348 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F1(dirspell)144 360 Q F0 .858(If set,)184 -360 R F1(bash)3.358 E F0 .858 +184 708 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E +(73)193.45 E 0 Cg EP +%%Page: 74 74 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(dirspell)144 84 Q F0 .858(If set,)184 84 R F1(bash)3.358 E F0 .858 (attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 372 Q(xist.)-.15 E -F1(dotglob)144 384 Q F0(If set,)184 384 Q F1(bash)2.5 E F0 -(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 -(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F1(execfail) -144 396 Q F0 1.387(If set, a non-interacti)184 396 R 1.687 -.15(ve s) --.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 408 Q -(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E -(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 420 Q F0 -.716(If set, aliases are e)184 432 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E -/F3 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F -(by def)184 444 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 456 Q(ug)-.2 E F0 .672(If set at shell in)184 468 R --.2(vo)-.4 G .672(cation, arrange to e).2 F -.15(xe)-.15 G .671 -(cute the deb).15 F .671(ugger pro\214le before the shell starts,)-.2 F -.22(identical to the)184 480 R F12.72 E(ugger)-.2 E F0 2.721 -(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 -(cation, beha).2 F .221(vior intended for use by)-.2 F(deb)184 492 Q -(uggers is enabled:)-.2 E F1(1.)184 504 Q F0(The)220 504 Q F14.251 -E F0 1.751(option to the)4.251 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) +(the directory name initially supplied does not e)184 96 Q(xist.)-.15 E +F1(dotglob)144 108 Q F0 .165(If set,)184 108 R F1(bash)2.665 E F0 .165 +(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) +-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F +(xpansion.)-.15 E(The \214lenames)184 120 Q F1 -.63(``)2.5 G -.55(.').63 +G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 132 Q F0 1.386(If set, a non-interacti) +184 132 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387 +(cute the \214le speci\214ed as an).15 F(ar)184 144 Q(gument to the)-.18 +E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3 +-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0 +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 156 Q F0 .717 +(If set, aliases are e)184 168 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 180 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 192 Q(ug)-.2 E F0 .671(If set at shell in)184 204 R +-.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 +(cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F +.221(identical to the)184 216 R F12.721 E(ugger)-.2 E F0 +2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 228 Q +(uggers is enabled:)-.2 E F1(1.)184 240 Q F0(The)220 240 Q F14.25 +E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) 4.251 G 1.751(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 516 Q -(gument.)-.18 E F1(2.)184 528 Q F0 1.667(If the command run by the)220 -528 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 540 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 552 Q F0 .841 -(If the command run by the)220 552 R F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 564 S .488 +(number corresponding to each function name supplied as an ar)220 252 Q +(gument.)-.18 E F1(2.)184 264 Q F0 1.667(If the command run by the)220 +264 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 276 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 288 Q F0 .84 +(If the command run by the)220 288 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 +(exe)220 300 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 576 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 312 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 588 Q F2 -.27(BA)220 588 S(SH_ARGC).27 E F0 -(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 600 Q --.15(ve)-.15 G(.).15 E F1(5.)184 612 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 612 R -(shells in)220 624 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(n)-.15 E F0(.)A F1(4.)184 324 Q F2 -.27(BA)220 324 S(SH_ARGC).27 E F0 +(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 336 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 348 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 348 R +(shells in)220 360 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 (\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 636 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 636 R(in)220 648 Q +(traps.)2.5 E F1(6.)184 372 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 372 R(in)220 384 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 660 Q F0 .4(If set, the e)184 660 R .4 +(extglob)144 396 Q F0 .4(If set, the e)184 396 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 672 Q -F0(are enabled.)2.5 E F1(extquote)144 684 Q F0 2.473(If set,)184 696 R +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 408 Q +F0(are enabled.)2.5 E F1(extquote)144 420 Q F0 2.473(If set,)184 432 R F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) -4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 708 Q -(This option is enabled by def)5 E(ault.)-.1 E(GNU Bash 4.4)72 768 Q -(2016 August 26)142.895 E(71)192.055 E 0 Cg EP -%%Page: 72 72 +(pansions).15 E(enclosed in double quotes.)184 444 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 456 Q F0 +1.425(If set, patterns which f)184 456 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 468 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 480 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 492 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 504 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 516 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) +184 528 Q(ault.)-.1 E F1(globasciiranges)144 540 Q F0 2.519 +(If set, range e)184 552 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 564 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 576 R 3.52(sc)-.55 G 1.02 +(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 588 R F1(A) +3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F +.957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 600 Q(.)-.55 E +F1(globstar)144 612 Q F0 .519(If set, the pattern)184 612 R F1(**)3.019 +E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 624 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +636 Q F1(gnu_errfmt)144 648 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 660 Q F1(histappend)144 +672 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +684 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 696 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E(GNU Bash 5.0)72 768 Q +(2018 March 15)144.29 E(74)193.45 E 0 Cg EP +%%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(failglob)144 84 Q F0 1.424(If set, patterns which f)184 84 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 96 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 108 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.937(If set, the suf)184 120 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F/F2 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 -(ariable cause w)-.25 F .936(ords to be ignored)-.1 F .32 -(when performing w)184 132 R .32(ord completion e)-.1 F -.15(ve)-.25 G -2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 -(ords are the only possible com-)-.1 F 2.948(pletions. See)184 144 R F2 -.448(SHELL V)2.948 F(ARIABLES)-1.215 E F0(abo)2.698 E .748 -.15(ve f) --.15 H .448(or a description of).15 F F2(FIGNORE)2.947 E/F3 9 -/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 F(enabled by def)184 -156 Q(ault.)-.1 E F1(globasciiranges)144 168 Q F0 2.518(If set, range e) -184 180 R 2.519(xpressions used in pattern matching brack)-.15 F 2.519 -(et e)-.1 F 2.519(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E -(n)-.135 E(Matching)184 192 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b) -.15 G(eha)-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 -G 3.214(nt)-3.214 G .714 -(he traditional C locale when performing comparisons.)-3.214 F 1.02 -(That is, the current locale')184 204 R 3.52(sc)-.55 G 1.02 -(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 216 R F1(A) -3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F -.957(-case and lo)-.2 F(wer)-.25 E .956 -(-case ASCII characters will collate)-.2 F(together)184 228 Q(.)-.55 E -F1(globstar)144 240 Q F0 .518(If set, the pattern)184 240 R F1(**)3.018 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519 -(xt will match all \214les and zero)-.15 F .432 -(or more directories and subdirectories.)184 252 R .431 -(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 -2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 -264 Q F1(gnu_errfmt)144 276 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 288 Q F1(histappend)144 -300 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -312 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G -(ri-).25 E(able when the shell e)184 324 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 336 Q(eedit)-.18 -E F0 .576(If set, and)184 348 R F1 -.18(re)3.076 G(adline).18 E F0 .575 -(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 -(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F -(tory substitution.)184 360 Q F1(histv)144 372 Q(erify)-.1 E F0 .402 -(If set, and)184 384 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +SF(histr)144 84 Q(eedit)-.18 E F0 .575(If set, and)184 96 R F1 -.18(re) +3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15 +(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F +.576(ailed his-)-.1 F(tory substitution.)184 108 Q F1(histv)144 120 Q +(erify)-.1 E F0 .403(If set, and)184 132 R F1 -.18(re)2.903 G(adline).18 +E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .662(passed to the shell parser)184 396 R 5.662(.I)-.55 G .661 -(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 -G(adline).18 E F0(editing)3.161 E -.2(bu)184 408 S -.25(ff).2 G(er).25 E +2.903 F .661(passed to the shell parser)184 144 R 5.661(.I)-.55 G .662 +(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 +G(adline).18 E F0(editing)3.162 E -.2(bu)184 156 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 420 Q F0 1.181(If set, and)184 432 R F1 -.18(re)3.681 -G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 -(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 -444 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 -(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E -F2(READLINE)3.88 E F0(abo)184 456 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 468 Q F0(If set,) -184 480 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 -(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(inherit_err)144 492 Q(exit)-.18 E F0 .219 -(If set, command substitution inherits the v)184 504 R .219(alue of the) --.25 F F1(err)2.719 E(exit)-.18 E F0 .22(option, instead of unsetting) -2.719 F(it in the subshell en)184 516 Q 2.5(vironment. This)-.4 F -(option is enabled when)2.5 E/F4 10/Times-Italic@0 SF(posix mode)2.5 E -F0(is enabled.)2.5 E F1(interacti)144 528 Q -.1(ve)-.1 G(_comments).1 E -F0 .33(If set, allo)184 540 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 -(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 -(ord and all remaining characters on)-.1 F .967 -(that line to be ignored in an interacti)184 552 R 1.267 -.15(ve s)-.25 -H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 564 Q -(ault.)-.1 E F1(lastpipe)144 576 Q F0 .066 -(If set, and job control is not acti)184 576 R -.15(ve)-.25 G 2.566(,t) +(hostcomplete)144 168 Q F0 1.182(If set, and)184 180 R F1 -.18(re)3.682 +G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 +(will attempt to perform hostname completion)3.681 F 1.38(when a w)184 +192 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E +/F2 9/Times-Bold@0 SF(READLINE)3.881 E F0(abo)184 204 Q -.15(ve)-.15 G +2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 +216 Q F0(If set,)184 228 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP) +2.5 E F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H +(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 240 Q(exit)-.18 E F0 +.22(If set, command substitution inherits the v)184 252 R .219 +(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 +(option, instead of unsetting)2.719 F(it in the subshell en)184 264 Q +2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10 +/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) +144 276 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 288 R 2.83 +(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 +.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F +.967(that line to be ignored in an interacti)184 300 R 1.267 -.15(ve s) +-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve) +-.15 G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 +312 Q(ault.)-.1 E F1(lastpipe)144 324 Q F0 .066 +(If set, and job control is not acti)184 324 R -.15(ve)-.25 G 2.566(,t) .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 588 Q(vironment.)-.4 E F1(lithist)144 600 Q F0 .654(If set, and the) -184 600 R F1(cmdhist)3.154 E F0 .654 +184 336 Q(vironment.)-.4 E F1(lithist)144 348 Q F0 .655(If set, and the) +184 348 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F -(with embedded ne)184 612 Q +3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F +(with embedded ne)184 360 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 624 Q F0 .486 +(localv)144 372 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 384 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +396 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 408 Q +F1(login_shell)144 420 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -636 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) --.15 G 2.986(\). The).15 F -.25(va)184 648 S(lue may not be changed.).25 -E F1(mailwar)144 660 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -672 R F1(bash)3.314 E F0 .815 -(is checking for mail has been accessed since the last time it)3.314 F --.1(wa)184 684 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E F4(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 696 -Q F0 .325(If set, and)184 708 R F1 -.18(re)2.825 G(adline).18 E F0 .325 -(is being used,)2.825 F F1(bash)2.824 E F0 .324 -(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E -F0 .324(for possible)2.574 F -(completions when completion is attempted on an empty line.)184 720 Q -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(72)192.055 E 0 Cg EP -%%Page: 73 73 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(nocaseglob)144 84 Q F0 .436(If set,)184 96 R F1(bash)2.936 E F0 .436 -(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25 -H .437(ashion when performing pathname).05 F -.15(ex)184 108 S +432 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 444 S(lue may not be changed.).25 +E F1(mailwar)144 456 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +468 R F1(bash)3.315 E F0 .814 +(is checking for mail has been accessed since the last time it)3.315 F +-.1(wa)184 480 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 492 +Q F0 .324(If set, and)184 504 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +(is being used,)2.824 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E +F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 516 Q F1 +(nocaseglob)144 528 Q F0 .437(If set,)184 540 R F1(bash)2.937 E F0 .436 +(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 +H .436(ashion when performing pathname).05 F -.15(ex)184 552 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.194(If set,)184 -132 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti) -3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05 -F .551(while e)184 144 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 564 Q F0 1.193(If set,)184 +576 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 +F .551(while e)184 588 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 156 S .623(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 168 Q F1 -(nullglob)144 180 Q F0 .854(If set,)184 192 R F1(bash)3.354 E F0(allo) -3.354 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) -3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355 -(\)t).15 G(o)-3.355 E -.15(ex)184 204 S +(wo)184 600 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 612 Q F1 +(nullglob)144 624 Q F0 .855(If set,)184 636 R F1(bash)3.355 E F0(allo) +3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 +(\)t).15 G(o)-3.354 E -.15(ex)184 648 S (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -216 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184 -228 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676 -(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 240 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 252 Q(omptv)-.18 E(ars)-.1 E F0 1.447 -(If set, prompt strings under)184 264 R 1.448(go parameter e)-.18 F -1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 276 -S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 -/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G -(.).15 E(This option is enabled by def)184 288 Q(ault.)-.1 E F1 -.18(re) -144 300 S(stricted_shell).18 E F0 1.069 +660 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +672 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 684 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 696 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 708 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 720 +S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E +(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E(GNU Bash 5.0)72 +768 Q(2018 March 15)144.29 E(75)193.45 E 0 Cg EP +%%Page: 76 76 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(This option is enabled by def)184 84 Q(ault.)-.1 E/F1 10/Times-Bold@0 +SF -.18(re)144 96 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 312 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 324 Q 2.86 -(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 +184 108 R/F2 9/Times-Bold@0 SF 1.069(RESTRICTED SHELL)3.569 F F0(belo) +184 120 Q 2.86(w\). The)-.25 F -.25(va)2.86 G .36 +(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 336 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 132 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1 -(shift)3.001 E F0 -.2(bu)3.001 G .501 -(iltin prints an error message when the shift count e).2 F .502 -(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour) -144 384 Q(cepath)-.18 E F0 .771(If set, the)184 396 R F1(sour)3.271 E -(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) --3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 -(to \214nd the directory containing the)3.02 F(\214le supplied as an ar) -184 408 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 420 Q F0(If set, the)184 432 Q F1(echo)2.5 E F0 --.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 -E(ault.)-.1 E F1(suspend)108 448.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 460.8 R -.15(xe)-.15 G 1.001 -(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G -F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) -3.502 F .023(suspended; the)144 472.8 R F12.523 E F0 .023 -(option can be used to o)2.523 F -.15(ve)-.15 G .022 -(rride this and force the suspension.).15 F .022(The return status is) -5.022 F 2.5(0u)144 484.8 S(nless the shell is a login shell and)-2.5 E +F1(shift_v)144 144 Q(erbose)-.1 E F0 .502(If set, the)184 156 R F1 +(shift)3.002 E F0 -.2(bu)3.002 G .501 +(iltin prints an error message when the shift count e).2 F .501 +(xceeds the number)-.15 F(of positional parameters.)184 168 Q F1(sour) +144 180 Q(cepath)-.18 E F0 .77(If set, the)184 192 R F1(sour)3.27 E(ce) +-.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F +.771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 +(to \214nd the directory containing the)3.021 F +(\214le supplied as an ar)184 204 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 216 Q F0 +(If set, the)184 228 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) +108 244.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 256.8 R +-.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) +-.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 +(login shell cannot be)3.501 F .022(suspended; the)144 268.8 R F1 +2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .023(The return status is) +5.023 F 2.5(0u)144 280.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 501.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 513.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 -(Return a status of 0 \(true\) or 1 \(f)144 513.6 R .878 -(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 525.6 +E F1(test)108 297.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 309.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 309.6 R .877 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 321.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 -(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079 -(primaries described abo)144 537.6 R 3.379 -.15(ve u)-.15 H(nder).15 E -F2(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF -(.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 549.6 Q(gument of)-.18 -E F12.5 E F0(as signifying the end of options.)2.5 E .786 -(Expressions may be combined using the follo)144 567.6 R .785 -(wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 579.6 R -.25(eva)3.411 G .911 -(luation depends on the number of ar).25 F .912(guments; see belo)-.18 F -4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F -(used when there are \214v)144 591.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 603.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 603.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 -E(alse.)-.1 E F1(\()144 615.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 615.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 +(primaries described abo)144 333.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 +(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A +F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 345.6 Q(gument of)-.18 +E F12.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 363.6 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 375.6 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 387.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 399.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 399.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 411.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 411.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 627.6 Q F3 -.2 -(ex)144 639.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 651.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 -E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 663.6 S +(rride the normal precedence of opera-).15 F(tors.)180 423.6 Q F3 -.2 +(ex)144 435.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 447.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 459.6 S (pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -675.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 -(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 692.4 Q F0(and)2.5 E +471.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 +(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 488.4 Q F0(and)2.5 E F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(73) -192.055 E 0 Cg EP -%%Page: 74 74 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(0a)144 84 S --.18(rg)-2.5 G(uments).18 E(The e)180 96 Q(xpression is f)-.15 E(alse.) --.1 E 2.5(1a)144 108 S -.18(rg)-2.5 G(ument).18 E(The e)180 120 Q +(guments.)-.18 E 2.5(0a)144 506.4 S -.18(rg)-2.5 G(uments).18 E(The e) +180 518.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 530.4 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 542.4 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 132 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 -144 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C -.37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 -F .37(gument is null.)-.18 F .38(If the \214rst ar)180 156 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 -168 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 -(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 180 Q +E 2.5(2a)144 554.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 566.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +F .37(xpression is true if and only if the second ar)-.15 F .37 +(gument is null.)-.18 F .379(If the \214rst ar)180 578.4 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 590.4 Q .553 +(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 +(xpression is true if the unary test is true.)-.15 F .552 +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 602.4 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 192 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 204 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 614.4 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 626.4 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 216 R 1.155 -.15(ve u) --.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F3(,)A -F0(the)3.105 E .579(result of the e)180 228 R .578(xpression is the res\ -ult of the binary test using the \214rst and third ar)-.15 F(guments) --.18 E 1.332(as operands.)180 240 R(The)6.332 E F13.832 E F0(and) -3.832 E F13.832 E F0 1.333 +(the binary conditional operators listed abo)180 638.4 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.104 E .578(result of the e)180 650.4 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.333(as operands.)180 662.4 R(The)6.333 E F13.833 +E F0(and)3.833 E F13.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 252 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F -.558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 -(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 -E(gument)-.18 E .52(test using the second and third ar)180 264 R 3.021 -(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F -(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)3.021 F(ar)180 276 Q -.485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 -(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 -F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 288 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 300 S -.18(rg)-2.5 G -(uments).18 E .384(If the \214rst ar)180 312 R .384(gument is)-.18 F F1 -(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 -G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385 -(xpression com-)-.15 F 1.648(posed of the remaining ar)180 324 R 4.147 -(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647 -(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E -(according to precedence using the rules listed abo)180 336 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 348 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 360 R 1.635(xpression is parsed and e)-.15 F -.25(va) --.25 G 1.635(luated according to precedence using the rules listed).25 F -(abo)180 372 Q -.15(ve)-.15 G(.).15 E(When used with)144 390 Q F1(test) -2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 -E F1(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 406.8 Q F0 -1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 406.8 R(The return status is 0.)144 -418.8 Q F1(trap)108 435.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...]) -2.5 E .702(The command)144 447.6 R F4(ar)3.532 E(g)-.37 E F0 .702 -(is to be read and e)3.422 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G -(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4 -(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) -144 459.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +(three ar)180 674.4 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 +686.4 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 698.4 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 +2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 710.4 Q(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0) +72 768 Q(2018 March 15)144.29 E(76)193.45 E 0 Cg EP +%%Page: 77 77 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(4a)144 84 S +-.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 96 R .385 +(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.885 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) +.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 +(posed of the remaining ar)180 108 R 4.147(guments. Otherwise,)-.18 F +1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 +G(luated).25 E(according to precedence using the rules listed abo)180 +120 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 132 S 2.5(rm)-2.5 G(ore ar)-2.5 +E(guments)-.18 E 1.635(The e)180 144 R 1.635(xpression is parsed and e) +-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 156 +Q -.15(ve)-.15 G(.).15 E(When used with)144 174 Q F1(test)2.5 E F0(or) +2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1(>)2.5 +E F0(operators sort le)2.5 E(xicographically using ASCII ordering.)-.15 +E F1(times)108 190.8 Q F0 1.229(Print the accumulated user and system t\ +imes for the shell and for processes run from the shell.)144 190.8 R +(The return status is 0.)144 202.8 Q F1(trap)108 219.6 Q F0([)2.5 E F1 +(\255lp)A F0 2.5(][)C([)-2.5 E/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0 +(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command)144 231.6 R F2(ar) +3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G +(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F2 +(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) +144 243.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 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 471.6 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659 -(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) -144.34 483.6 Q F0 .581 -(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G --.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 495.6 R -F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 -F(gu-)-.18 E .86(ments are supplied or if only)144 507.6 R F13.36 +.659(\(the v)144 255.6 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) +144.34 267.6 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 279.6 R +F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 291.6 R F13.36 E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 519.6 R F12.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F -4.311(bers. Each)144 531.6 R F4(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81 -(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E -(names are case insensiti)144 543.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 561.6 R F4 -(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 -(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F --.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F -1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 573.6 Q -(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0 -1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0 -(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 585.6 Q F4 -(select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 -(ry arithmetic).15 F F4(for)2.646 E F0 .147 -(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 -(cutes in a).15 F .146(shell function \(see)144 597.6 R F2 .146 -(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 609.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7 -(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG) --.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2 -(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 621.6 Q F4(ar) -3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 +(signal. The)144 303.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 315.6 R F2(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E +(names are case insensiti)144 327.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649 +(If a)144 345.6 R F2(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 +1.649(\(0\) the command)3.899 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e) +4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.) +-.15 F 1.648(If a)6.648 F F2(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 +357.6 Q(UG)-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F +F2(ar)3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 +(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 1.168(simple command) +3.667 F F0(,)A F2(for)3.668 E F0(command,)3.668 E F2(case)3.668 E F0 +(com-)3.668 E(mand,)144 369.6 Q F2(select)2.647 E F0 .147(command, e) +2.647 F -.15(ve)-.25 G .147(ry arithmetic).15 F F2(for)2.647 E F0 .146 +(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 +(cutes in a).15 F .145(shell function \(see)144 381.6 R F3 .145 +(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 +F .146(to the description of the)2.646 F F1(extdeb)2.646 E(ug)-.2 E F0 +.146(option to)2.646 F(the)144 393.6 Q F1(shopt)3.201 E F0 -.2(bu)3.201 +G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E +(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E +F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 405.6 Q F2(ar) +3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 633.6 Q -.15(xe) --.15 G(cuting.).15 E .96(If a)144 651.6 R F4(sigspec)3.8 E F0(is)3.77 E -F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F4(ar)3.791 E(g)-.37 E F0 -.961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G -3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\ -gle simple command\), a list, or a compound command returns a non\255ze\ -ro e)144 663.6 R .184(xit status, subject to)-.15 F .451(the follo)144 -675.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 -(ailed command is part of the com-)-.1 F .388 -(mand list immediately follo)144 687.6 R .388(wing a)-.25 F F1(while) -2.888 E F0(or)2.888 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F4(if)2.897 E F0 .387 -(statement, part)4.847 F .777(of a command e)144 699.6 R -.15(xe)-.15 G +.644(cuted with the).15 F F1(.)3.144 E F0(or)3.144 E F1(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 417.6 Q -.15(xe) +-.15 G(cuting.).15 E .961(If a)144 435.6 R F2(sigspec)3.801 E F0(is) +3.771 E F3(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E +(g)-.37 E F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F +-.15(ve)-.25 G 3.461(ra).15 G .96(pipeline \(which may consist of a) +-.001 F .185(single simple command\), a list, or a compound command ret\ +urns a non\255zero e)144 447.6 R .185(xit status, subject to)-.15 F .452 +(the follo)144 459.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR) +2.952 E F0 .451(trap is not e)2.701 F -.15(xe)-.15 G .451 +(cuted if the f).15 F .451(ailed command is part of the com-)-.1 F .387 +(mand list immediately follo)144 471.6 R .387(wing a)-.25 F F1(while) +2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 483.6 R -.15(xe)-.15 G .778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 (list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 -3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 711.6 R +(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 495.6 R 1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) -3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F -F1(!)3.78 E F0(.)A(These are the same conditions obe)144 723.6 Q +F1(!)3.78 E F0(.)A(These are the same conditions obe)144 507.6 Q (yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 -(\)o)C(ption.)-2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(74) -192.055 E 0 Cg EP -%%Page: 75 75 +(\)o)C(ption.)-2.5 E 1.095 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +525.6 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 537.6 R .662 +(alues in a subshell or subshell en)-.25 F .662(vironment when one is) +-.4 F 2.5(created. The)144 549.6 R(return status is f)2.5 E(alse if an) +-.1 E(y)-.15 E F2(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108 +566.4 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2 +(name)A F0(...])2.5 E -.4(Wi)144 578.4 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2(name) +3.034 E F0 -.1(wo)2.854 G .173 +(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F +F1144 590.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E +F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0 +(,).24 E F2 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F2 +(\214le)5.253 E F0(if)3.523 E F2(name)144.36 602.4 Q F0 .087 +(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 614.4 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F +F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 +(either returns the name of the disk \214le that w)144 626.4 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0 +.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 +638.4 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +(uld not return).1 F F2(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F1 +3.141 E F0 .641(option forces a)3.141 F F3 -.666(PA)3.141 G(TH) +-.189 E F0 .113(search for each)144 650.4 R F2(name)2.613 E F0 2.613(,e) +C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 +F F0 -.1(wo)2.613 G .113(uld not return).1 F F2(\214le)2.613 E F0 5.113 +(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F1 +2.612 E F0(and)144 662.4 Q F13.23 E F0 .73(print the hashed v)3.23 +F .731 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 +144 674.4 Q F0 1.749(option is used,)4.249 F F1(type)4.248 E F0 1.748 +(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 +(cutable named).15 F F2(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 +(includes aliases and functions, if and only if the)144 686.4 R F1 +3.244 E F0 .744(option is not also used.)3.244 F .744 +(The table of hashed)5.744 F 1.223(commands is not consulted when using) +144 698.4 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .325(with the) +144 710.4 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type) +5.325 E F0 .325(returns true if all of the ar)2.825 F .326 +(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 +(re not)-2.826 F(found.)144 722.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15) +144.29 E(77)193.45 E 0 Cg EP +%%Page: 78 78 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095 -(Signals ignored upon entry to the shell cannot be trapped or reset.)144 -84 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 96 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 108 R(return status is f)2.5 E(alse if an)-.1 -E(y)-.15 E/F1 10/Times-Italic@0 SF(sigspec)2.84 E F0(is in)2.81 E -.25 -(va)-.4 G(lid; otherwise).25 E/F2 10/Times-Bold@0 SF(trap)2.5 E F0 -(returns true.)2.5 E F2(type)108 124.8 Q F0([)2.5 E F2(\255aftpP)A F0(]) -A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 136.8 S -.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1 -(name)3.033 E F0 -.1(wo)2.853 G .174 -(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F2144 148.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E -F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 -(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1 -(\214le)5.252 E F0(if)3.522 E F1(name)144.36 160.8 Q F0 .086 -(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 172.8 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F -F22.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855 -(either returns the name of the disk \214le that w)144 184.8 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) -144 196.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 -G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E -F23.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666 -(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 208.8 R F1(name)2.612 -E F0 2.612(,e)C -.15(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113 -(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F1 -(\214le)2.613 E F0 5.113(.I).18 G 2.613(fac)-5.113 G .113 -(ommand is hashed,)-2.613 F F22.613 E F0(and)144 220.8 Q F2 -3.231 E F0 .731(print the hashed v)3.231 F .73 -(alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the) -5.23 F F2144 232.8 Q F0 1.748(option is used,)4.248 F F2(type) -4.248 E F0 1.748(prints all of the places that contain an e)4.248 F -.15 -(xe)-.15 G 1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G -(his)-6.749 E .744(includes aliases and functions, if and only if the) -144 244.8 R F23.244 E F0 .744(option is not also used.)3.244 F -.743(The table of hashed)5.744 F 1.223 -(commands is not consulted when using)144 256.8 R F23.723 E F0 -6.223(.T)C(he)-6.223 E F23.723 E F0 1.223 -(option suppresses shell function lookup, as)3.723 F .326(with the)144 -268.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type)5.326 E -F0 .326(returns true if all of the ar)2.826 F .325(guments are found, f) --.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325(re not)-2.825 F -(found.)144 280.8 Q F2(ulimit)108 297.6 Q F0([)2.5 E F2 -(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -309.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243 -(he resources a)-2.743 F -.25(va)-.2 G .244 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(ulimit)108 84 Q F0([)2.5 E F1(\255HSabcde\214klmnpqrstuvxPT)A F0([) +2.5 E/F2 10/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 96 Q .244 +(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +(he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 321.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F -(The)5.944 E F23.444 E F0(and)3.444 E F23.444 E F0 .943 +.943(that allo)144 108 R 3.443(ws)-.25 G .943(uch control.)-3.443 F(The) +5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 333.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 -(hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.708 F .426(be increased up to the v)144 345.6 R .426 -(alue of the hard limit.)-.25 F .425(If neither)5.426 F F22.925 E -F0(nor)2.925 E F22.925 E F0 .425 -(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 -357.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +144 120 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208(\ +hard limit cannot be increased by a non-root user once it is set; a sof\ +t limit may)2.709 F .425(be increased up to the v)144 132 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E +F0(nor)2.926 E F12.926 E F0 .426 +(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 +144 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.742(of the special v)144 369.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 156 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 381.6 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 168 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .499(resource is printed, unless the)144 393.6 R F22.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 +F .498(resource is printed, unless the)144 180 R F12.999 E F0 .499 +(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 405.6 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 -144 417.6 Q F0(All current limits are reported)180 417.6 Q F2 -144 429.6 Q F0(The maximum sock)180 429.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F2144 441.6 Q F0 -(The maximum size of core \214les created)180 441.6 Q F2144 453.6 -Q F0(The maximum size of a process')180 453.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F2144 465.6 Q F0 -(The maximum scheduling priority \("nice"\))180 465.6 Q F2144 -477.6 Q F0 -(The maximum size of \214les written by the shell and its children)180 -477.6 Q F2144 489.6 Q F0(The maximum number of pending signals)180 -489.6 Q F2144 501.6 Q F0 -(The maximum number of kqueues that may be allocated)180 501.6 Q F2 -144 513.6 Q F0(The maximum size that may be lock)180 513.6 Q -(ed into memory)-.1 E F2144 525.6 Q F0 -(The maximum resident set size \(man)180 525.6 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F2144 537.6 Q F0 .791(Th\ -e maximum number of open \214le descriptors \(most systems do not allo) -180 537.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 549.6 Q F2144 561.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 561.6 Q F2 -144 573.6 Q F0 -(The maximum number of bytes in POSIX message queues)180 573.6 Q F2 -144 585.6 Q F0(The maximum real-time scheduling priority)180 585.6 -Q F2144 597.6 Q F0(The maximum stack size)180 597.6 Q F2144 -609.6 Q F0(The maximum amount of cpu time in seconds)180 609.6 Q F2 -144 621.6 Q F0(The maximum number of processes a)180 621.6 Q -.25 -(va)-.2 G(ilable to a single user).25 E F2144 633.6 Q F0 .47 -(The maximum amount of virtual memory a)180 633.6 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 -645.6 Q F2144 657.6 Q F0(The maximum number of \214le locks)180 -657.6 Q F2144 669.6 Q F0(The maximum number of pseudoterminals)180 -669.6 Q F2144 681.6 Q F0(The maximum number of threads)180 681.6 Q -(If)144 698.4 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F22.968 E F0 .468(option is not used,)2.968 -F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 -(no option is gi)144 710.4 R -.15(ve)-.25 G .045(n, then).15 F F2 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F2 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144 -722.4 R F24.088 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F24.089 E F0(,)A F2 -4.089 E F0(,)A F24.089 E F0(,)A F24.089 E F0(,)A F2 -4.089 E F0 4.089(,a)C(nd)-4.089 E F24.089 E F0 4.089(,w)C -1.589(hich are)-4.089 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E -(75)192.055 E 0 Cg EP -%%Page: 76 76 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.439(unscaled v) -144 84 R 1.439(alues; and, when in Posix mode,)-.25 F/F1 10/Times-Bold@0 -SF3.939 E F0(and)3.939 E F13.939 E F0 3.939(,w)C 1.438 -(hich are in 512-byte increments.)-3.939 F(The)6.438 E .404 -(return status is 0 unless an in)144 96 R -.25(va)-.4 G .404 -(lid option or ar).25 F .404 +(limit name and unit are printed before the v)144 192 Q 2.5(alue. Other) +-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 204 +Q F0(All current limits are reported)180 204 Q F1144 216 Q F0 +(The maximum sock)180 216 Q(et b)-.1 E(uf)-.2 E(fer size)-.25 E F1 +144 228 Q F0(The maximum size of core \214les created)180 228 Q F1 +144 240 Q F0(The maximum size of a process')180 240 Q 2.5(sd)-.55 G +(ata se)-2.5 E(gment)-.15 E F1144 252 Q F0 +(The maximum scheduling priority \("nice"\))180 252 Q F1144 264 Q +F0(The maximum size of \214les written by the shell and its children)180 +264 Q F1144 276 Q F0(The maximum number of pending signals)180 276 +Q F1144 288 Q F0 +(The maximum number of kqueues that may be allocated)180 288 Q F1 +144 300 Q F0(The maximum size that may be lock)180 300 Q(ed into memory) +-.1 E F1144 312 Q F0(The maximum resident set size \(man)180 312 Q +2.5(ys)-.15 G(ystems do not honor this limit\))-2.5 E F1144 324 Q +F0 .791(The maximum number of open \214le descriptors \(most systems do\ + not allo)180 324 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 336 Q F1144 348 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 348 Q F1 +144 360 Q F0(The maximum number of bytes in POSIX message queues) +180 360 Q F1144 372 Q F0 +(The maximum real-time scheduling priority)180 372 Q F1144 384 Q +F0(The maximum stack size)180 384 Q F1144 396 Q F0 +(The maximum amount of cpu time in seconds)180 396 Q F1144 408 Q +F0(The maximum number of processes a)180 408 Q -.25(va)-.2 G +(ilable to a single user).25 E F1144 420 Q F0 .47 +(The maximum amount of virtual memory a)180 420 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 432 +Q F1144 444 Q F0(The maximum number of \214le locks)180 444 Q F1 +144 456 Q F0(The maximum number of pseudoterminals)180 456 Q F1 +144 468 Q F0(The maximum number of threads)180 468 Q(If)144 484.8 +Q F2(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the) +.15 F F12.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 +E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 +(no option is gi)144 496.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 +508.8 R F14.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 +4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 +4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.438(unscaled v)144 520.8 R 1.438 +(alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E +F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) +-3.939 F(The)6.439 E .404(return status is 0 unless an in)144 532.8 R +-.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -108 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 124.8 Q F0([)2.5 E F1 -A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF -(mode)-2.5 E F0(])A .2(The user \214le-creation mask is set to)144 136.8 -R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +544.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 561.6 Q F0([)2.5 E +F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 573.6 R F2(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 148.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -160.8 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +pted by)144 585.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +597.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 172.8 R .547 +(printed in symbolic form; the def)144 609.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 184.8 Q F0 .552 -(is omitted, the output is in a form that may be reused as input.)3.232 -F .551(The return status is 0 if the)5.551 F(mode w)144 196.8 Q +(mode)144.38 621.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 633.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 213.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 225.6 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 650.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 662.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 237.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 674.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 254.4 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 691.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 266.4 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0 -3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328 +2.5 E -.15(Fo)144 703.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F F13.827 E F0 1.327(option is gi)3.827 F -.15(ve) --.25 G 1.327(n, each).15 F F2(name)144.36 278.4 Q F0 1.55 -(refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551 -(ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va) -4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 290.4 R F1 -4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0 +(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F2(name)144.36 715.2 Q F0 1.551 +(refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 +(ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 727.2 R F1 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 302.4 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1 -2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 -(is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E -F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.538 E .492 -(be unset rather than the v)144 314.4 R .492(ariable it references.)-.25 -F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 -2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22 -(options are supplied, each)144 326.4 R F2(name)2.72 E F0 .22 -(refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221 -(ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189 -(tion with that name is unset.)144 338.4 R 1.189(Each unset v)6.189 F -1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G -1.188(rom the en)-3.688 F(vironment)-.4 E 3.205 -(passed to subsequent commands.)144 350.4 R 3.206(If an)8.206 F 5.706 +F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(78)193.45 E 0 Cg EP +%%Page: 79 79 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(remo)144 84 Q -.15 +(ve)-.15 G 2.538(d. If).15 F(the)2.537 E/F1 10/Times-Bold@0 SF +2.537 E F0 .037(option is supplied, and)2.537 F/F2 10/Times-Italic@0 SF +(name)2.537 E F0 .037(is a v)2.537 F .037(ariable with the)-.25 F F2 +(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0 +(will)2.537 E .492(be unset rather than the v)144 96 R .492 +(ariable it references.)-.25 F F15.492 E F0 .492(has no ef)2.992 F +.492(fect if the)-.25 F F12.992 E F0 .492(option is supplied.) +2.992 F .493(If no)5.493 F .221(options are supplied, each)144 108 R F2 +(name)2.721 E F0 .221(refers to a v)2.721 F .22 +(ariable; if there is no v)-.25 F .22(ariable by that name, an)-.25 F +2.72(yf)-.15 G(unc-)-2.72 E 1.188(tion with that name is unset.)144 120 +R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F +-.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E +3.206(passed to subsequent commands.)144 132 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 -E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E -F4(,)A F3(LINENO)144 362.4 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN) -4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E +E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E +F4(,)A F3(LINENO)144 144 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 -F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144 -374.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 -G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 391.2 Q -F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 403.2 S .026(it for each speci\214ed child process and return i\ -ts termination status.).8 F(Each)5.027 E F2(n)2.887 E F0 .027 -(may be a process ID)2.767 F .256 -(or a job speci\214cation; if a job spec is gi)144 415.2 R -.15(ve)-.25 -G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 -(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .317(is not gi)144 427.2 R -.15(ve)-.25 G .317 -(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 -(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 -(nd the return status is zero.)-2.818 F .318(If the)5.318 F F1144 -439.2 Q F0 .362(option is supplied,)2.862 F F1(wait)2.862 E F0 -.1(wa) -2.862 G .362(its for an).1 F 2.862(yj)-.15 G .362 -(ob to terminate and returns its e)-2.862 F .361(xit status.)-.15 F(If) -5.361 E F2(n)3.221 E F0(speci\214es)3.101 E 2.595(an)144 451.2 S(on-e) --2.595 E .095(xistent process or job, the return status is 127.)-.15 F -.096(Otherwise, the return status is the e)5.095 F .096(xit status)-.15 -F(of the last process or job w)144 463.2 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 480 Q F0(If)108 492 Q F1(bash) -4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 E F0 -4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.896 -(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 -(cation, the shell becomes).2 F 3.445(restricted. A)108 504 R .945 -(restricted shell is used to set up an en)3.445 F .946 -(vironment more controlled than the standard shell.)-.4 F(It)5.946 E -(beha)108 516 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1(bash) -2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 532.8 Q -(changing directories with)144 532.8 Q F1(cd)2.5 E F0<83>108 549.6 Q -(setting or unsetting the v)144 549.6 Q(alues of)-.25 E F3(SHELL)2.5 E +F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 156 +Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G +(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 172.8 Q +F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 +184.8 S .659(it for each speci\214ed child process and return its termi\ +nation status.).8 F(Each)5.659 E F2(id)3.169 E F0 .658(may be a process) +3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 196.8 +R -.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 +G .009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) +-5.009 E F2(id)144.01 208.8 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G +.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521 +(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521 +(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 220.8 Q F1 +3.056 E F0 .556(option is supplied,)3.056 F F1(wait)3.057 E F0 -.1 +(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557 +(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .557 +(If the)5.557 F F13.057 E F0 .587 +(option is supplied, and job control is enabled,)144 232.8 R F1(wait) +3.086 E F0(forces)3.086 E F2(id)3.086 E F0 .586 +(to terminate before returning its sta-)3.086 F .755 +(tus, instead of returning when it changes status.)144 244.8 R(If)5.756 +E F2(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 +(xistent process or job, the)-.15 F .365(return status is 127.)144 256.8 +R .365(Otherwise, the return status is the e)5.365 F .365 +(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 +268.8 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 285.6 Q F0 +(If)108 297.6 Q F1(bash)4.396 E F0 1.896(is started with the name)4.396 +F F1(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1 +4.397 E F0 1.897(option is supplied at in)4.397 F -.2(vo)-.4 G 1.897 +(cation, the shell becomes).2 F 3.446(restricted. A)108 309.6 R .945 +(restricted shell is used to set up an en)3.446 F .945 +(vironment more controlled than the standard shell.)-.4 F(It)5.945 E +(beha)108 321.6 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 338.4 Q +(changing directories with)144 338.4 Q F1(cd)2.5 E F0<83>108 355.2 Q +(setting or unsetting the v)144 355.2 Q(alues of)-.25 E F3(SHELL)2.5 E F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) -2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 566.4 Q -(specifying command names containing)144 566.4 Q F1(/)2.5 E F0<83>108 -583.2 Q(specifying a \214lename containing a)144 583.2 Q F1(/)2.5 E F0 +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 372 Q +(specifying command names containing)144 372 Q F1(/)2.5 E F0<83>108 +388.8 Q(specifying a \214lename containing a)144 388.8 Q F1(/)2.5 E F0 (as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E<83>108 600 Q .45 -(specifying a \214lename containing a slash as an ar)144 600 R .449 -(gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 -(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 612 Q<83> -108 628.8 Q(importing function de\214nitions from the shell en)144 628.8 -Q(vironment at startup)-.4 E<83>108 645.6 Q(parsing the v)144 645.6 Q +(iltin command).2 E<83>108 405.6 Q .449 +(specifying a \214lename containing a slash as an ar)144 405.6 R .449 +(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 +(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 417.6 Q<83> +108 434.4 Q(importing function de\214nitions from the shell en)144 434.4 +Q(vironment at startup)-.4 E<83>108 451.2 Q(parsing the v)144 451.2 Q (alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E<83>108 662.4 Q(redirecting output using the\ - >, >|, <>, >&, &>, and >> redirection operators)144 662.4 Q<83>108 -679.2 Q(using the)144 679.2 Q F1(exec)2.5 E F0 -.2(bu)2.5 G -(iltin command to replace the shell with another command).2 E<83>108 696 -Q(adding or deleting b)144 696 Q(uiltin commands with the)-.2 E F1 -2.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1(enable)2.5 E -F0 -.2(bu)2.5 G(iltin command).2 E<83>108 712.8 Q(using the)144 712.8 Q -F1(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E -(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(76)192.055 E 0 Cg EP -%%Page: 77 77 +(vironment at startup)-.4 E<83>108 468 Q(redirecting output using the >\ +, >|, <>, >&, &>, and >> redirection operators)144 468 Q<83>108 484.8 Q +(using the)144 484.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 +501.6 Q(adding or deleting b)144 501.6 Q(uiltin commands with the)-.2 E +F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 518.4 Q +(using the)144 518.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 +535.2 Q(specifying the)144 535.2 Q F12.5 E F0(option to the)2.5 E +F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 552 Q +(turning of)144 552 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1 +(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 568.8 Q 2.5(ys)-.15 G +(tartup \214les are read.)-2.5 E 1.566 +(When a command that is found to be a shell script is e)108 585.6 R -.15 +(xe)-.15 G 1.566(cuted \(see).15 F F3 1.566(COMMAND EXECUTION)4.066 F F0 +(abo)3.816 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 597.6 Q F0(turns of) +2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 +614.4 Q F2(Bash Refer)108 626.4 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F) +-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu Readline Libr)108 +638.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y) +-.15 E F2(The Gnu History Libr)108 650.4 Q(ary)-.15 E F0 2.5(,B)C +(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2 -.8(Po)108 662.4 S +(rtable Oper).8 E(ating System Interface \(POSIX\) P)-.15 E +(art 2: Shell and Utilities)-.8 E F0 2.5(,I)C(EEE --)-2.5 E +(http://pubs.opengroup.or)144 674.4 Q(g/onlinepubs/9699919799/)-.18 E +(http://tiswww)108 686.4 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F2(sh) +108 698.4 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A +(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(79)193.45 E 0 Cg EP +%%Page: 80 80 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(specifying the)144 84 Q/F1 10/Times-Bold@0 SF2.5 E F0 -(option to the)2.5 E F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E -<83>108 100.8 Q(turning of)144 100.8 Q 2.5(fr)-.25 G -(estricted mode with)-2.5 E F1(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 -E(estricted)-.18 E F0(.)A(These restrictions are enforced after an)108 -117.6 Q 2.5(ys)-.15 G(tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 134.4 R -.15 -(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567 -(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1 -(rbash)108 146.4 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H -(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G -(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 163.2 Q/F4 -10/Times-Italic@0 SF(Bash Refer)108 175.2 Q(ence Manual)-.37 E F0 2.5 -(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 -(The Gnu Readline Libr)108 187.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 199.2 Q -(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F4 -.8(Po)108 211.2 S(rtable Oper).8 E -(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) --.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 223.2 Q -(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 235.2 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) -108 247.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A -F4(emacs)108 259.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 -271.2 S(adline).37 E F0(\(3\))A F3(FILES)72 288 Q F4(/bin/bash)109.666 -300 Q F0(The)144 312 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4 -(/etc/pr)109.666 324 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 336 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bash_pr)109.666 348 Q(o\214le)-.45 E -F0(The personal initialization \214le, e)144 360 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bashr)109.666 372 Q(c)-.37 E F0 -(The indi)144 384 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F4(~/.bash_lo)109.666 396 Q(gout)-.1 E F0 -(The indi)144 408 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) --.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666 -420 Q(c)-.37 E F0(Indi)144 432 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline) -.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 448.8 S(THORS).548 E -F0(Brian F)108 460.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 -E(bfox@gnu.or)108 472.8 Q(g)-.18 E(Chet Rame)108 489.6 Q 1.3 -.65(y, C) --.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) --.25 G(rsity).15 E(chet.rame)108 501.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 -518.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 -(If you \214nd a b)108 530.4 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(emacs)108 84 Q F0(\(1\),)A F1(vi)2.5 E F0(\(1\))A F1 +-.37(re)108 96 S(adline).37 E F0(\(3\))A/F2 10.95/Times-Bold@0 SF(FILES) +72 112.8 Q F1(/bin/bash)109.666 124.8 Q F0(The)144 136.8 Q/F3 10 +/Times-Bold@0 SF(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F1(/etc/pr) +109.666 148.8 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 160.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F1(~/.bash_pr)109.666 172.8 Q(o\214le)-.45 +E F0(The personal initialization \214le, e)144 184.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F1(~/.bashr)109.666 196.8 Q(c)-.37 E F0 +(The indi)144 208.8 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F1(~/.bash_lo)109.666 220.8 Q(gout)-.1 E F0 +(The indi)144 232.8 Q(vidual login shell cleanup \214le, e)-.25 E -.15 +(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr) +109.666 244.8 Q(c)-.37 E F0(Indi)144 256.8 Q(vidual)-.25 E F1 -.37(re) +2.5 G(adline).37 E F0(initialization \214le)2.5 E F2 -.548(AU)72 273.6 S +(THORS).548 E F0(Brian F)108 285.6 Q(ox, Free Softw)-.15 E(are F)-.1 E +(oundation)-.15 E(bfox@gnu.or)108 297.6 Q(g)-.18 E(Chet Rame)108 314.4 Q +1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni) +-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 326.4 Q(y@case.edu)-.15 +E F2 -.11(BU)72 343.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 +(If you \214nd a b)108 355.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F -3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .567(ug, and)-.2 -F 5.625(that it appears in the latest v)108 542.4 R 5.625(ersion of)-.15 -F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 -(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 -(ilable from).25 F F4(ftp://ftp.gnu.or)108 554.4 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .411(Once you ha)108 571.2 R .711 -.15(ve d)-.2 H .411 -(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) --.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 -(ug report.)-.2 F(If)5.41 E .594(you ha)108 583.2 R .894 -.15(ve a \214) --.2 H .595(x, you are encouraged to mail that as well!).15 F .595 -(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F -(be mailed to)108 595.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 -(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 612 Q(ug reports should include:)-.2 E(The v)108 -628.8 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 640.8 Q -(are and operating system)-.1 E(The compiler used to compile)108 652.8 Q -2.5(Ad)108 664.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E -2.5(As)108 676.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G -(rcises the b).15 E(ug)-.2 E F4(bashb)108.27 693.6 Q(ug)-.2 E F0 +3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 +F 5.626(that it appears in the latest v)108 367.2 R 5.625(ersion of)-.15 +F F3(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 +(ersion is al)-.15 F -.1(wa)-.1 G 5.625(ys a).1 F -.25(va)-.2 G 5.625 +(ilable from).25 F F1(ftp://ftp.gnu.or)108 379.2 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .41(Once you ha)108 396 R .71 -.15(ve d)-.2 H .41 +(etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) +-.15 F F1(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F +.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 408 R .895 -.15 +(ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F +.594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F +(be mailed to)108 420 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 436.8 Q(ug reports should include:)-.2 E(The v) +108 453.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 465.6 +Q(are and operating system)-.1 E(The compiler used to compile)108 477.6 +Q 2.5(Ad)108 489.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 +E 2.5(As)108 501.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 +G(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 518.4 Q(ug)-.2 E F0 (inserts the \214rst three items automatically into the template it pro) 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -710.4 Q(ug reports concerning this manual page should be directed to)-.2 -E F4 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(77)192.055 E 0 Cg -EP -%%Page: 78 78 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 -/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G -(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 -(There are some subtle dif)108 112.8 R 1.869(ferences between)-.25 F/F2 -10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869 -(ersions of)-.15 F F2(sh)4.368 E F0 4.368(,m)C 1.868 -(ostly because of the)-4.368 F/F3 9/Times-Bold@0 SF(POSIX)108 124.8 Q F0 -(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 141.6 Q -(Shell b)108 158.4 Q +535.2 Q(ug reports concerning this manual page should be directed to)-.2 +E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) +.25 E F2 -.11(BU)72 552 S(GS).11 E F0(It')108 564 Q 2.5(st)-.55 G +(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 +(There are some subtle dif)108 580.8 R 1.868(ferences between)-.25 F F3 +(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F +F3(sh)4.369 E F0 4.369(,m)C 1.869(ostly because of the)-4.369 F/F4 9 +/Times-Bold@0 SF(POSIX)108 592.8 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 609.6 Q(Shell b)108 626.4 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E 1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 175.2 R .39 -(process suspension is attempted.)108 187.2 R .389 -(When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 -G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 -(mand in the sequence.)108 199.2 R .192(It suf)5.192 F .192(\214ces to \ -place the sequence of commands between parentheses to force it into a) --.25 F(subshell, which may be stopped as a unit.)108 211.2 Q(Array v)108 -228 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 244.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 -E(78)192.055 E 0 Cg EP +re not handled gracefully when)108 643.2 R .389 +(process suspension is attempted.)108 655.2 R .389 +(When a process is stopped, the shell immediately e)5.389 F -.15(xe)-.15 +G .39(cutes the ne).15 F .39(xt com-)-.15 F .193(mand in the sequence.) +108 667.2 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ +ommands between parentheses to force it into a)-.25 F +(subshell, which may be stopped as a unit.)108 679.2 Q(Array v)108 696 Q +(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 712.8 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E +(80)193.45 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index 6b4fc4912..f79cc8ed5 100644 Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ diff --git a/doc/bashref.html b/doc/bashref.html index 8c2eabf06..f494f344e 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,13 +1,13 @@ - + + Bash Reference Manual @@ -24,7 +25,6 @@ A copy of the license is included in the section entitled - @@ -284,12 +284,12 @@ Next: , Previou

Bash Features

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

-

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

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

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

\nnn

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

\xHH

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

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

-

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

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

+

The exit status of a pipeline is the exit status of the last command in the pipeline, unless the pipefail option is enabled (see The Set Builtin). @@ -1111,7 +1116,7 @@ associativity.

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

An OR list has the form

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

Compound commands are the shell programming constructs. +

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

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

Expand words, and execute commands once for each member +

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

+

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

@@ -1295,6 +1302,8 @@ zero if no condition tested true.

case will selectively execute the command-list corresponding to the first pattern that matches word. +The match is performed according +to the rules described below in Pattern Matching. If the nocasematch shell option (see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case @@ -1306,7 +1315,9 @@ as a clause.

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

@@ -1467,7 +1478,7 @@ if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of ‘a’, then a ‘b’:

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

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

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

The process ID of the shell spawned to execute the coprocess is available as the value of the variable NAME_PID. @@ -1744,7 +1756,7 @@ Adding the -k option

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

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

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

+

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

+

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

+

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

+

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

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

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

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

Functions may be recursive. The FUNCNEST variable may be used to limit the depth of the @@ -2208,10 +2275,11 @@ original word are removed unless they have been quoted themselves (quote removal).

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

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

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

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

This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -2419,6 +2486,8 @@ Bash uses the value of the variable formed from the rest of expanded and that value is used in the rest of the substitution, rather than the value of parameter itself. This is known as indirect expansion. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If parameter is a nameref, this expands to the name of the variable referenced by parameter instead of performing the complete indirect expansion. @@ -2647,8 +2716,8 @@ array, and an index of -1 references the last element.

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

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

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

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

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

E

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

P

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

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

+

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

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

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

+

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


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

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

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

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

1 argument
-

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

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

2 arguments
@@ -5004,6 +5092,8 @@ Options, if supplied, have the following meanings:
-d

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

-n

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

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

-C
-

Evaluate callback each time quantumP lines are read. +

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

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

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

-e

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

-i text
@@ -5816,7 +5908,8 @@ The settings can be either those listed below, or, if the -o option is used, those available with the -o option to the set builtin command (see The Set Builtin). With no options, or with the -p option, a list of all settable -options is displayed, with an indication of whether or not each is set. +options is displayed, with an indication of whether or not each is set; +if optnames are supplied, the output is restricted to those options. The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -5859,6 +5952,12 @@ option.

The list of shopt options is:

+
assoc_expand_once
+

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

+
autocd

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

checkwinsize
-

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

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

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

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

+
compat44
+

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

+
complete_fullquote

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

dotglob

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

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

+
localvar_inherit
+

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

+
login_shell

The shell sets this option if it is started as a login shell (see Invoking Bash). @@ -6378,6 +6493,8 @@ sequences that are expanded before PS1 is displayed.

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

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

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

BASH_ALIASES @@ -6453,6 +6574,8 @@ The shell sets BASH_ARGC only when in extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin). +Setting extdebug after the shell has started to execute a script +may result in inconsistent values.

BASH_ARGV @@ -6467,6 +6590,21 @@ The shell sets BASH_ARGV only when in extended debugging mode (see The Shopt Builtin for a description of the extdebug option to the shopt builtin). +Setting extdebug after the shell has started to execute a script +may result in inconsistent values. +

+ +
BASH_ARGV0 + +
+

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

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

+
EPOCHREALTIME + +
+

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

+
+
EPOCHSECONDS + +
+

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

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

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

A colon-separated list of patterns defining the set of file names to be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one +If a file name matched by a filename expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. The pattern matching honors the setting of the extglob shell @@ -7208,10 +7369,11 @@ and before the command is executed.

PS4
-

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

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

@@ -7544,7 +7706,8 @@ of a login shell.

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

-D
@@ -7823,7 +7986,10 @@ signals SIGTTIN, SIGTTOU, and SIGTSTP.
  • Bash expands and displays PS1 before reading the first line of a command, and expands and displays PS2 before reading the second and subsequent lines of a multi-line command. -Bash displays PS0 after it reads a command but before executing it. +Bash expands and displays PS0 after it reads a command but before +executing it. +See Controlling the Prompt, for a complete list of prompt +string escape sequences.
  • Bash executes the value of the PROMPT_COMMAND variable as a command before printing the primary prompt, $PS1 @@ -8076,6 +8242,8 @@ is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative integers. +When used with the [[ command, Arg1 and Arg2 +are evaluated as arithmetic expressions (see Shell Arithmetic).

    @@ -8396,12 +8564,16 @@ special parameters ‘@’ and ‘*unset name[subscript] destroys the array element at index subscript. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by filename -expansion. +Unsetting the last element of an array variable does not unset the variable. unset name, where name is an array, removes the entire array. A subscript of ‘*’ or ‘@’ also removes the entire array.

    +

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

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

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

    \a
    @@ -9102,6 +9275,11 @@ The jobs command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated.

    +

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


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

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

    @@ -9879,7 +10060,8 @@ set to either ‘emacs’ or ‘vi’.
    emacs-mode-string
    -

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

    If the show-mode-in-prompt variable is enabled, +this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. @@ -10092,9 +10274,9 @@ The default value is ‘off’.

    show-mode-in-prompt
    -

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

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

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

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

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

    vi-ins-mode-string
    -

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

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

    $if

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

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

    +
    +
    version
    +

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

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

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

    + + +
    variable
    +

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

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

    +
    previous-screen-line () + +
    +

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

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

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

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

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

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

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

    Search backward through the history for the string of characters between the start of the current line and the point. @@ -11285,11 +11529,12 @@ ring the terminal’s bell (subject to the setting of bell-style).

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

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

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

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

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

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

    Invoke an editor on the current command line, and execute the result as shell commands. @@ -11574,7 +11820,9 @@ but the FIGNORE shell variable is used. is considered. The string is first split using the characters in the IFS special variable as delimiters. -Shell quoting is honored. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of IFS. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, @@ -12013,7 +12261,7 @@ a shell function and bind it to a particular command using complete -F

    The following function provides completions for the cd builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as $2 +used for completion. This function uses the word passed as $2 to determine the directory name to complete. You can also use the COMP_WORDS array variable; the current word is indexed by the COMP_CWORD variable. @@ -12220,7 +12468,7 @@ The lithist shell option causes the shell to save the command with embedded newlines instead of semicolons. The shopt builtin is used to set these options. -See Bash Builtins, for a description of shopt. +See The Shopt Builtin, for a description of shopt.


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

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

    +
    +
    -d start-end
    +

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

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

    History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually without taking quoting on previous lines into +account.

    History expansion takes place in two parts. The first is to determine which line from the history list should be used during substitution. @@ -12385,7 +12646,7 @@ also treated as quoted if it immediately precedes the closing double quote in a double-quoted string.

    Several shell options settable with the shopt -builtin (see Bash Builtins) may be used to tailor +builtin (see The Shopt Builtin) may be used to tailor the behavior of history expansion. If the histverify shell option is enabled, and Readline is being used, history substitutions are not immediately passed to @@ -12728,11 +12989,27 @@ may remove or edit it. configure script understands, type

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

    at the Bash prompt in your Bash source directory.

    +

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

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

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

    If you need to do unusual things to compile Bash, please try to figure out how configure could check whether or not to do them, and mail diffs or instructions to @@ -12794,7 +13071,9 @@ own directory. To do this, you must use a version of make that supports the VPATH variable, such as GNU make. cd to the directory where you want the object files and executables to go and run -the configure script from the source directory. You may need to +the configure script from the source directory +(see Basic Installation). +You may need to supply the --srcdir=PATH argument to tell configure where the source files are. configure automatically checks for the source code in the directory that configure is in and in ‘..’. @@ -13097,6 +13376,13 @@ This allows pipelines as well as shell builtins and functions to be timed.

    Include support for the bash debugger (distributed separately).

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

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

    +
    --enable-direxpand-default

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

    --enable-prompt-string-decoding

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

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

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

        -
          +
          1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section @@ -14614,6 +14900,7 @@ Next: , Pre BASH_ALIASESBash Variables BASH_ARGCBash Variables BASH_ARGVBash Variables +BASH_ARGV0Bash Variables BASH_CMDSBash Variables BASH_COMMANDBash Variables BASH_COMPATBash Variables @@ -14666,6 +14953,8 @@ Next: , Pre enable-bracketed-pasteReadline Init File Syntax enable-keypadReadline Init File Syntax ENVBash Variables +EPOCHREALTIMEBash Variables +EPOCHSECONDSBash Variables EUIDBash Variables EXECIGNOREBash Variables expand-tildeReadline Init File Syntax @@ -14937,7 +15226,7 @@ Next: , Previ delete-horizontal-space ()Commands For Killing digit-argument (M-0, M-1, … M--)Numeric Arguments display-shell-version (C-x C-v)Miscellaneous Commands -do-uppercase-version (M-a, M-b, M-x, …)Miscellaneous Commands +do-lowercase-version (M-A, M-B, M-x, …)Miscellaneous Commands downcase-word (M-l)Commands For Text dump-functions ()Miscellaneous Commands dump-macros ()Miscellaneous Commands @@ -14945,7 +15234,7 @@ Next: , Previ dynamic-complete-history (M-TAB)Commands For Completion
            E -edit-and-execute-command (C-xC-e)Miscellaneous Commands +edit-and-execute-command (C-x C-e)Miscellaneous Commands end-kbd-macro (C-x ))Keyboard Macros end-of-file (usually C-d)Commands For Text end-of-history (M->)Commands For History @@ -14968,8 +15257,8 @@ Next: , Previ history-expand-line (M-^)Miscellaneous Commands history-search-backward ()Commands For History history-search-forward ()Commands For History -history-substr-search-backward ()Commands For History -history-substr-search-forward ()Commands For History +history-substring-search-backward ()Commands For History +history-substring-search-forward ()Commands For History
            I insert-comment (M-#)Miscellaneous Commands @@ -14989,6 +15278,7 @@ Next: , Previ
            N next-history (C-n)Commands For History +next-screen-line ()Commands For Moving non-incremental-forward-search-history (M-n)Commands For History non-incremental-reverse-search-history (M-p)Commands For History
            @@ -15005,6 +15295,7 @@ Next: , Previ possible-variable-completions (C-x $)Commands For Completion prefix-meta (ESC)Miscellaneous Commands previous-history (C-p)Commands For History +previous-screen-line ()Commands For Moving print-last-kbd-macro ()Keyboard Macros
            Q diff --git a/doc/bashref.info b/doc/bashref.info index 28b061096..29dd0effe 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,13 +1,13 @@ -This is bashref.info, produced by makeinfo version 6.1 from +This is bashref.info, produced by makeinfo version 6.5 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). +Bash shell (version 5.0, 15 March 2018). - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. - Copyright (C) 1988-2016 Free Software Foundation, Inc. + Copyright (C) 1988-2018 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,11 +27,11 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 4.4, 7 September 2016). The Bash home page is +Bash shell (version 5.0, 15 March 2018). The Bash home page is . - This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash -Reference Manual', for 'Bash', Version 4.4. + This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash +Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has @@ -451,7 +451,7 @@ decoded as follows: question mark '\NNN' the eight-bit character whose value is the octal value NNN (one to - three digits) + three octal digits) '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -586,16 +586,20 @@ information. If the pipeline is not executed asynchronously (*note Lists::), the shell waits for all commands in the pipeline to complete. - Each command in a pipeline is executed in its own subshell (*note -Command Execution Environment::). The exit status of a pipeline is the -exit status of the last command in the pipeline, unless the 'pipefail' -option is enabled (*note The Set Builtin::). If 'pipefail' is enabled, -the pipeline's return status is the value of the last (rightmost) -command to exit with a non-zero status, or zero if all commands exit -successfully. If the reserved word '!' precedes the pipeline, the exit -status is the logical negation of the exit status as described above. -The shell waits for all commands in the pipeline to terminate before -returning a value. + Each command in a pipeline is executed in its own subshell, which is +a separate process (*note Command Execution Environment::). If the +'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt +Builtin::), the last element of a pipeline may be run by the shell +process. + + The exit status of a pipeline is the exit status of the last command +in the pipeline, unless the 'pipefail' option is enabled (*note The Set +Builtin::). If 'pipefail' is enabled, the pipeline's return status is +the value of the last (rightmost) command to exit with a non-zero +status, or zero if all commands exit successfully. If the reserved word +'!' precedes the pipeline, the exit status is the logical negation of +the exit status as described above. The shell waits for all commands in +the pipeline to terminate before returning a value.  File: bashref.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands @@ -633,7 +637,7 @@ executed with left associativity. COMMAND1 && COMMAND2 COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of -zero. +zero (success). An OR list has the form COMMAND1 || COMMAND2 @@ -656,11 +660,12 @@ File: bashref.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. -Compound commands are the shell programming constructs. Each construct -begins with a reserved word or control operator and is terminated by a -corresponding reserved word or operator. Any redirections (*note -Redirections::) associated with a compound command apply to all commands -within that compound command unless explicitly overridden. +Compound commands are the shell programming language constructs. Each +construct begins with a reserved word or control operator and is +terminated by a corresponding reserved word or operator. Any +redirections (*note Redirections::) associated with a compound command +apply to all commands within that compound command unless explicitly +overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -705,14 +710,16 @@ syntax, it may be replaced with one or more newlines. for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done - Expand WORDS, and execute COMMANDS once for each member in the - resultant list, with NAME bound to the current member. If 'in - WORDS' is not present, the 'for' command executes the COMMANDS once - for each positional parameter that is set, as if 'in "$@"' had been - specified (*note Special Parameters::). The return status is the - exit status of the last command that executes. If there are no - items in the expansion of WORDS, no commands are executed, and the - return status is zero. + Expand WORDS (*note Shell Expansions::), and execute COMMANDS once + for each member in the resultant list, with NAME bound to the + current member. If 'in WORDS' is not present, the 'for' command + executes the COMMANDS once for each positional parameter that is + set, as if 'in "$@"' had been specified (*note Special + Parameters::). + + The return status is the exit status of the last command that + executes. If there are no items in the expansion of WORDS, no + commands are executed, and the return status is zero. An alternate form of the 'for' command is also supported: @@ -764,20 +771,21 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac 'case' will selectively execute the COMMAND-LIST corresponding to - the first PATTERN that matches WORD. If the 'nocasematch' shell - option (see the description of 'shopt' in *note The Shopt - Builtin::) is enabled, the match is performed without regard to the - case of alphabetic characters. The '|' is used to separate - multiple patterns, and the ')' operator terminates a pattern list. - A list of patterns and an associated command-list is known as a - CLAUSE. + the first PATTERN that matches WORD. The match is performed + according to the rules described below in *note Pattern Matching::. + If the 'nocasematch' shell option (see the description of 'shopt' + in *note The Shopt Builtin::) is enabled, the match is performed + without regard to the case of alphabetic characters. The '|' is + used to separate multiple patterns, and the ')' operator terminates + a pattern list. A list of patterns and an associated command-list + is known as a CLAUSE. Each clause must be terminated with ';;', ';&', or ';;&'. The WORD undergoes tilde expansion, parameter expansion, command - substitution, arithmetic expansion, and quote removal before - matching is attempted. Each PATTERN undergoes tilde expansion, - parameter expansion, command substitution, and arithmetic - expansion. + substitution, arithmetic expansion, and quote removal (*note Shell + Parameter Expansion::) before matching is attempted. Each PATTERN + undergoes tilde expansion, parameter expansion, command + substitution, and arithmetic expansion. There may be an arbitrary number of 'case' clauses, each terminated by a ';;', ';&', or ';;&'. The first pattern that matches @@ -904,7 +912,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre variable LINE) if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of 'a', then a 'b': - [[ $line =~ [[:space:]]*(a)?b ]] + [[ $line =~ [[:space:]]*?(a)b ]] That means values like 'aab' and ' aaaaaab' will match, as will a line containing a 'b' anywhere in its value. @@ -917,7 +925,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: - pattern='[[:space:]]*(a)?b' + pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] If you want to match a character that's special to the regular @@ -1030,7 +1038,8 @@ a file descriptor in the executing shell, and that file descriptor is assigned to 'NAME'[1]. This pipe is established before any redirections specified by the command (*note Redirections::). The file descriptors can be utilized as arguments to shell commands and redirections using -standard word expansions. The file descriptors are not available in +standard word expansions. Other than those created to execute command +and process substitutions, the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is @@ -1119,7 +1128,7 @@ first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to 'cat file | bash'. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, -and feed that list of commnds to a shell. Parallel can speed this up. +and feed that list of commands to a shell. Parallel can speed this up. Assuming that 'file' contains a list of shell commands, one per line, parallel -j 10 < file @@ -1210,7 +1219,57 @@ last command executed before the 'return'. Variables local to the function may be declared with the 'local' builtin. These variables are visible only to the function and the -commands it invokes. +commands it invokes. This is particularly important when a shell +function calls other functions. + + Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + + The shell uses DYNAMIC SCOPING to control a variable's visibility +within functions. With dynamic scoping, visible variables and their +values are a result of the sequence of function calls that caused +execution to reach the current function. The value of a variable that a +function sees depends on its value within its caller, if any, whether +that caller is the "global" scope or another shell function. This is +also the value that a local variable declaration "shadows", and the +value that is restored when the function returns. + + For example, if a variable VAR is declared as local in function +FUNC1, and FUNC1 calls another function FUNC2, references to VAR made +from within FUNC2 will resolve to the local variable VAR from FUNC1, +shadowing any global variable named VAR. + + The following script demonstrates this behavior. When executed, the +script displays + + In func2, var = func1 local + + func1() + { + local var='func1 local' + func2 + } + + func2() + { + echo "In func2, var = $var" + } + + var=global + func1 + + The 'unset' builtin also acts using the same dynamic scope: if a +variable is local to the current scope, 'unset' will unset it; otherwise +the unset will refer to the variable found in any calling scope as +described above. If a variable at the current local scope is unset, it +will remain so until it is reset in that scope or until the function +returns. Once the function returns, any instance of the variable at a +previous scope will become visible. If the unset acts on a variable at +a previous scope, any instance of a variable with that name that had +been shadowed will become visible. Function names and definitions may be listed with the '-f' option to the 'declare' ('typeset') builtin command (*note Bash Builtins::). The @@ -1218,10 +1277,7 @@ the 'declare' ('typeset') builtin command (*note Bash Builtins::). The (and optionally the source file and line number, if the 'extdebug' shell option is enabled). Functions may be exported so that subshells automatically have them defined with the '-f' option to the 'export' -builtin (*note Bourne Shell Builtins::). Note that shell functions and -variables with the same name may result in multiple identically-named -entries in the environment passed to the shell's children. Care should -be taken in cases where this may cause a problem. +builtin (*note Bourne Shell Builtins::). Functions may be recursive. The 'FUNCNEST' variable may be used to limit the depth of the function call stack and restrict the number of @@ -1447,10 +1503,10 @@ original word are removed unless they have been quoted themselves (QUOTE REMOVAL). Only brace expansion, word splitting, and filename expansion can -change the number of words of the expansion; other expansions expand a +increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the -expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' -(*note Arrays::). +expansions of '"$@"' and '$*' (*note Special Parameters::), and +'"${NAME[@]}"' and '${NAME[*]}' (*note Arrays::). After all expansions, 'quote removal' (*note Quote Removal::) is performed. @@ -1492,9 +1548,7 @@ each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation -to the context of the expansion or the text between the braces. To -avoid conflicts with parameter expansion, the string '${' is not -considered eligible for brace expansion. +to the context of the expansion or the text between the braces. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence @@ -1503,7 +1557,7 @@ expression. Any incorrectly formed brace expansion is left unchanged. A { or ',' may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string '${' is not considered eligible for -brace expansion. +brace expansion, and inhibits brace expansion until the closing '}'.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: @@ -1603,12 +1657,14 @@ PARAMETER is not a NAMEREF, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of PARAMETER as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the -value of PARAMETER itself. This is known as 'indirect expansion'. If -PARAMETER is a nameref, this expands to the name of the variable -referenced by PARAMETER instead of performing the complete indirect -expansion. The exceptions to this are the expansions of ${!PREFIX*} and -${!NAME[@]} described below. The exclamation point must immediately -follow the left brace in order to introduce indirection. +value of PARAMETER itself. This is known as 'indirect expansion'. The +value is subject to tilde expansion, parameter expansion, command +substitution, and arithmetic expansion. If PARAMETER is a nameref, this +expands to the name of the variable referenced by PARAMETER instead of +performing the complete indirect expansion. The exceptions to this are +the expansions of ${!PREFIX*} and ${!NAME[@]} described below. The +exclamation point must immediately follow the left brace in order to +introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1668,7 +1724,7 @@ omitted, the operator tests only for existence. $ echo ${string:7} 7890abcdefgh $ echo ${string:7:0} - + $ echo ${string:7:2} 78 $ echo ${string:7:-2} @@ -1676,7 +1732,7 @@ omitted, the operator tests only for existence. $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} - + $ echo ${string: -7:2} bc $ echo ${string: -7:-2} @@ -1685,7 +1741,7 @@ omitted, the operator tests only for existence. $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} - + $ echo ${1:7:2} 78 $ echo ${1:7:-2} @@ -1693,7 +1749,7 @@ omitted, the operator tests only for existence. $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} - + $ echo ${1: -7:2} bc $ echo ${1: -7:-2} @@ -1702,7 +1758,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} - + $ echo ${array[0]:7:2} 78 $ echo ${array[0]:7:-2} @@ -1710,7 +1766,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7} bcdefgh $ echo ${array[0]: -7:0} - + $ echo ${array[0]: -7:2} bc $ echo ${array[0]: -7:-2} @@ -1729,7 +1785,7 @@ omitted, the operator tests only for existence. $ echo ${@:7} 7 8 9 0 a b c d e f g h $ echo ${@:7:0} - + $ echo ${@:7:2} 7 8 $ echo ${@:7:-2} @@ -1741,7 +1797,7 @@ omitted, the operator tests only for existence. $ echo ${@:0:2} ./bash 1 $ echo ${@: -7:0} - + If PARAMETER is an indexed array name subscripted by '@' or '*', the result is the LENGTH members of the array beginning with @@ -1766,7 +1822,7 @@ omitted, the operator tests only for existence. $ echo ${array[@]:0:2} 0 1 $ echo ${array[@]: -7:0} - + Substring expansion applied to an associative array produces undefined results. @@ -1803,22 +1859,23 @@ omitted, the operator tests only for existence. '${PARAMETER#WORD}' '${PARAMETER##WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion (*note Filename Expansion::). If the pattern matches the - beginning of the expanded value of PARAMETER, then the result of - the expansion is the expanded value of PARAMETER with the shortest - matching pattern (the '#' case) or the longest matching pattern - (the '##' case) deleted. If PARAMETER is '@' or '*', the pattern - removal operation is applied to each positional parameter in turn, - and the expansion is the resultant list. If PARAMETER is an array - variable subscripted with '@' or '*', the pattern removal operation - is applied to each member of the array in turn, and the expansion - is the resultant list. + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches the beginning of the expanded value of PARAMETER, + then the result of the expansion is the expanded value of PARAMETER + with the shortest matching pattern (the '#' case) or the longest + matching pattern (the '##' case) deleted. If PARAMETER is '@' or + '*', the pattern removal operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + pattern removal operation is applied to each member of the array in + turn, and the expansion is the resultant list. '${PARAMETER%WORD}' '${PARAMETER%%WORD}' - The WORD is expanded to produce a pattern just as in filename - expansion. If the pattern matches a trailing portion of the + The WORD is expanded to produce a pattern and matched according to + the rules described below (*note Pattern Matching::). If the + pattern matches If the pattern matches a trailing portion of the expanded value of PARAMETER, then the result of the expansion is the value of PARAMETER with the shortest matching pattern (the '%' case) or the longest matching pattern (the '%%' case) deleted. If @@ -1832,21 +1889,23 @@ omitted, the operator tests only for existence. The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. If PATTERN begins with - '/', all matches of PATTERN are replaced with STRING. Normally - only the first match is replaced. If PATTERN begins with '#', it - must match at the beginning of the expanded value of PARAMETER. If - PATTERN begins with '%', it must match at the end of the expanded - value of PARAMETER. If STRING is null, matches of PATTERN are - deleted and the '/' following PATTERN may be omitted. If the - 'nocasematch' shell option (see the description of 'shopt' in *note - The Shopt Builtin::) is enabled, the match is performed without - regard to the case of alphabetic characters. If PARAMETER is '@' - or '*', the substitution operation is applied to each positional - parameter in turn, and the expansion is the resultant list. If - PARAMETER is an array variable subscripted with '@' or '*', the - substitution operation is applied to each member of the array in - turn, and the expansion is the resultant list. + against its value is replaced with STRING. The match is performed + according to the rules described below (*note Pattern Matching::). + If PATTERN begins with '/', all matches of PATTERN are replaced + with STRING. Normally only the first match is replaced. If + PATTERN begins with '#', it must match at the beginning of the + expanded value of PARAMETER. If PATTERN begins with '%', it must + match at the end of the expanded value of PARAMETER. If STRING is + null, matches of PATTERN are deleted and the '/' following PATTERN + may be omitted. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. If PARAMETER is '@' or '*', the substitution operation + is applied to each positional parameter in turn, and the expansion + is the resultant list. If PARAMETER is an array variable + subscripted with '@' or '*', the substitution operation is applied + to each member of the array in turn, and the expansion is the + resultant list. '${PARAMETER^PATTERN}' '${PARAMETER^^PATTERN}' @@ -1881,7 +1940,7 @@ omitted, the operator tests only for existence. 'E' The expansion is a string that is the value of PARAMETER with backslash escape sequences expanded as with the '$'...'' - quoting mechansim. + quoting mechanism. 'P' The expansion is a string that is the result of expanding the value of PARAMETER as if it were a prompt string (*note @@ -2046,17 +2105,22 @@ performed without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character '.' at the start of a filename or immediately following a slash must be matched -explicitly, unless the shell option 'dotglob' is set. When matching a -filename, the slash character must always be matched explicitly. In -other cases, the '.' character is not treated specially. +explicitly, unless the shell option 'dotglob' is set. The filenames '.' +and '..' must always be matched explicitly, even if 'dotglob' is set. +In other cases, the '.' character is not treated specially. + + When matching a filename, the slash character must always be matched +explicitly by a slash in the pattern, but in other matching contexts it +can be matched by a special pattern character as described below (*note +Pattern Matching::). See the description of 'shopt' in *note The Shopt Builtin::, for a description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' options. The 'GLOBIGNORE' shell variable may be used to restrict the set of -filenames matching a pattern. If 'GLOBIGNORE' is set, each matching -filename that also matches one of the patterns in 'GLOBIGNORE' is +file names matching a pattern. If 'GLOBIGNORE' is set, each matching +file name that also matches one of the patterns in 'GLOBIGNORE' is removed from the list of matches. If the 'nocaseglob' option is set, the matching against the patterns in 'GLOBIGNORE' is performed without regard to case. The filenames '.' and '..' are always ignored when @@ -2149,6 +2213,12 @@ of the following sub-patterns: '!(PATTERN-LIST)' Matches anything except one of the given patterns. + Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. Using separate matches against shorter +strings, or using arrays of strings instead of a single long string, may +be faster. +  File: bashref.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions @@ -2180,7 +2250,9 @@ instead be preceded by a word of the form {VARNAME}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a file descriptor greater than 10 and assign it to {VARNAME}. If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines the file -descriptor to close. +descriptor to close. If {VARNAME} is supplied, the redirection persists +beyond the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is '<', the @@ -2344,12 +2416,11 @@ fashion. A variant of here documents, the format is: [N]<<< WORD - The WORD undergoes brace expansion, tilde expansion, parameter and -variable expansion, command substitution, arithmetic expansion, and -quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string, with a newline appended, to -the command on its standard input (or file descriptor N if N is -specified). + The WORD undergoes tilde expansion, parameter and variable expansion, +command substitution, arithmetic expansion, and quote removal. Pathname +expansion and word splitting are not performed. The result is supplied +as a single string, with a newline appended, to the command on its +standard input (or file descriptor N if N is specified). 3.6.8 Duplicating File Descriptors ---------------------------------- @@ -2486,11 +2557,11 @@ taken. '$PATH' is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named 'command_not_found_handle'. If that - function exists, it is invoked with the original command and the - original command's arguments as its arguments, and the function's - exit status becomes the exit status of the shell. If that function - is not defined, the shell prints an error message and returns an - exit status of 127. + function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as + its arguments, and the function's exit status becomes the exit + status of that subshell. If that function is not defined, the + shell prints an error message and returns an exit status of 127. 4. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate @@ -2783,13 +2854,13 @@ Completion Builtins::). Unless otherwise noted, each builtin command documented as accepting options preceded by '-' accepts '--' to signify the end of the options. -The ':', 'true', 'false', and 'test' builtins do not accept options and -do not treat '--' specially. The 'exit', 'logout', 'return', 'break', -'continue', 'let', and 'shift' builtins accept and process arguments -beginning with '-' without requiring '--'. Other builtins that accept -arguments but are not specified as accepting options interpret arguments -beginning with '-' as invalid options and require '--' to prevent this -interpretation. +The ':', 'true', 'false', and 'test'/'[' builtins do not accept options +and do not treat '--' specially. The 'exit', 'logout', 'return', +'break', 'continue', 'let', and 'shift' builtins accept and process +arguments beginning with '-' without requiring '--'. Other builtins +that accept arguments but are not specified as accepting options +interpret arguments beginning with '-' as invalid options and require +'--' to prevent this interpretation.  File: bashref.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2904,10 +2975,11 @@ standard. If COMMAND cannot be executed for some reason, a non-interactive shell exits, unless the 'execfail' shell option is enabled. In that case, it returns failure. An interactive shell returns - failure if the file cannot be executed. If no COMMAND is - specified, redirections may be used to affect the current shell - environment. If there are no redirection errors, the return status - is zero; otherwise the return status is non-zero. + failure if the file cannot be executed. A subshell exits + unconditionally if 'exec' fails. If no COMMAND is specified, + redirections may be used to affect the current shell environment. + If there are no redirection errors, the return status is zero; + otherwise the return status is non-zero. 'exit' exit [N] @@ -2988,7 +3060,7 @@ standard. locations. The '-d' option causes the shell to forget the remembered location of each NAME. If the '-t' option is supplied, the full pathname to which each NAME corresponds is printed. If - multiple NAME arguments are supplied with '-t' the NAME is printed + multiple NAME arguments are supplied with '-t', the NAME is printed before the hashed full pathname. The '-l' option causes output to be displayed in a format that may be reused as input. If no arguments are given, or if only '-l' is supplied, information about @@ -3032,7 +3104,7 @@ standard. status of the last command executed in the function. If 'return' is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. - if 'return' is executed during a 'DEBUG' trap, the last command + If 'return' is executed during a 'DEBUG' trap, the last command used to determine the status is the last command executed by the trap handler before 'return' was invoked. 'return' may also be used to terminate execution of a script being executed with the '.' @@ -3096,7 +3168,7 @@ standard. The expression is false. 1 argument - The expression is true if and only if the argument is not + The expression is true if, and only if, the argument is not null. 2 arguments @@ -3600,7 +3672,8 @@ standard. '-d' The first character of DELIM is used to terminate each input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'mapfile' will terminate a line when it reads a NUL character. '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. @@ -3615,7 +3688,7 @@ standard. Read lines from file descriptor FD instead of the standard input. '-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The '-c' + Evaluate CALLBACK each time QUANTUM lines are read. The '-c' option specifies QUANTUM. '-c' Specify the number of lines read between each call to @@ -3712,12 +3785,14 @@ standard. '-d DELIM' The first character of DELIM is used to terminate the input - line, rather than newline. + line, rather than newline. If DELIM is the empty string, + 'read' will terminate a line when it reads a NUL character. '-e' Readline (*note Command Line Editing::) is used to obtain the line. Readline uses the current (or default, if line editing - was not previously active) editing settings. + was not previously active) editing settings, but uses + Readline's default filename completion. '-i TEXT' If Readline is being used to read the line, TEXT is placed @@ -4236,9 +4311,10 @@ This builtin allows you to change additional shell optional behavior. option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or with the '-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The '-p' option - causes output to be displayed in a form that may be reused as - input. Other options have the following meanings: + with an indication of whether or not each is set; if OPTNAMES are + supplied, the output is restricted to those options. The '-p' + option causes output to be displayed in a form that may be reused + as input. Other options have the following meanings: '-s' Enable (set) each OPTNAME. @@ -4269,6 +4345,12 @@ This builtin allows you to change additional shell optional behavior. The list of 'shopt' options is: + 'assoc_expand_once' + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expression + evaluation and while executing builtins that can perform + variable assignments. + 'autocd' If set, a command name that is the name of a directory is executed as if it were the argument to the 'cd' command. This @@ -4301,13 +4383,16 @@ This builtin allows you to change additional shell optional behavior. are stopped. 'checkwinsize' - If set, Bash checks the window size after each command and, if - necessary, updates the values of 'LINES' and 'COLUMNS'. + If set, Bash checks the window size after each external + (non-builtin) command and, if necessary, updates the values of + 'LINES' and 'COLUMNS'. 'cmdhist' If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy - re-editing of multi-line commands. + re-editing of multi-line commands. This option is enabled by + default, but only has an effect if command history is enabled + (*note Bash History Facilities::). 'compat31' If set, Bash changes its behavior to that of version 3.1 with @@ -4357,6 +4442,11 @@ This builtin allows you to change additional shell optional behavior. executed (this allows 'break' or 'continue' in a shell function to affect loops in the caller's context). + 'compat44' + If set, Bash saves the positional parameters to BASH_ARGV and + BASH_ARGC before they are used, regardless of whether or not + extended debugging mode is enabled. + 'complete_fullquote' If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -4384,7 +4474,8 @@ This builtin allows you to change additional shell optional behavior. 'dotglob' If set, Bash includes filenames beginning with a '.' in the - results of filename expansion. + results of filename expansion. The filenames '.' and '..' + must always be matched explicitly, even if 'dotglob' is set. 'execfail' If this is set, a non-interactive shell will not exit if it @@ -4513,6 +4604,12 @@ This builtin allows you to change additional shell optional behavior. commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + 'localvar_inherit' + If set, local variables inherit the value and attributes of a + variable of the same name that exists at a previous scope + before any new value is assigned. The NAMEREF attribute is + not inherited. + 'login_shell' The shell sets this option if it is started as a login shell (*note Invoking Bash::). The value may not be changed. @@ -4676,7 +4773,8 @@ In some cases, Bash assigns a default value to the variable. that are expanded before 'PS1' is displayed. 'PS2' - The secondary prompt string. The default value is '> '. + The secondary prompt string. The default value is '> '. 'PS2' is + expanded in the same way as 'PS1' before being displayed.  File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4706,7 +4804,9 @@ Variables::). 'BASHPID' Expands to the process ID of the current Bash process. This differs from '$$' under certain circumstances, such as subshells - that do not require Bash to be re-initialized. + that do not require Bash to be re-initialized. Assignments to + 'BASHPID' have no effect. If 'BASHPID' is unset, it loses its + special properties, even if it is subsequently reset. 'BASH_ALIASES' An associative array variable whose members correspond to the @@ -4725,7 +4825,9 @@ Variables::). subroutine is executed, the number of parameters passed is pushed onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of - the 'extdebug' option to the 'shopt' builtin). + the 'extdebug' option to the 'shopt' builtin). Setting 'extdebug' + after the shell has started to execute a script may result in + inconsistent values. 'BASH_ARGV' An array variable containing all of the parameters in the current @@ -4735,7 +4837,16 @@ Variables::). the parameters supplied are pushed onto 'BASH_ARGV'. The shell sets 'BASH_ARGV' only when in extended debugging mode (see *note The Shopt Builtin:: for a description of the 'extdebug' option to - the 'shopt' builtin). + the 'shopt' builtin). Setting 'extdebug' after the shell has + started to execute a script may result in inconsistent values. + +'BASH_ARGV0' + When referenced, this variable expands to the name of the shell or + shell script (identical to '$0'; *Note Special Parameters::, for + the description of special parameter 0). Assignment to + 'BASH_ARGV0' causes the value assigned to also be assigned to '$0'. + If 'BASH_ARGV0' is unset, it loses its special properties, even if + it is subsequently reset. 'BASH_CMDS' An associative array variable whose members correspond to the @@ -4932,6 +5043,21 @@ Variables::). Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode (*note Bash POSIX Mode::). +'EPOCHREALTIME' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch as a floating point value with + micro-second granularity (see the documentation for the C library + function TIME for the definition of Epoch). Assignments to + 'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses + its special properties, even if it is subsequently reset. + +'EPOCHSECONDS' + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see the documentation for the C + library function TIME for the definition of Epoch). Assignments to + 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses + its special properties, even if it is subsequently reset. + 'EUID' The numeric effective user id of the current user. This variable is readonly. @@ -4982,8 +5108,8 @@ Variables::). nesting level will cause the current command to abort. 'GLOBIGNORE' - A colon-separated list of patterns defining the set of filenames to - be ignored by filename expansion. If a filename matched by a + A colon-separated list of patterns defining the set of file names + to be ignored by filename expansion. If a file name matched by a filename expansion pattern also matches one of the patterns in 'GLOBIGNORE', it is removed from the list of matches. The pattern matching honors the setting of the 'extglob' shell option. @@ -5218,10 +5344,12 @@ Variables::). with '#? ' 'PS4' - The value is the prompt printed before the command line is echoed - when the '-x' option is set (*note The Set Builtin::). The first - character of 'PS4' is replicated multiple times, as necessary, to - indicate multiple levels of indirection. The default is '+ '. + The value of this parameter is expanded like PS1 and the expanded + value is the prompt printed before the command line is echoed when + the '-x' option is set (*note The Set Builtin::). The first + character of the expanded value is replicated multiple times, as + necessary, to indicate multiple levels of indirection. The default + is '+ '. 'PWD' The current working directory as set by the 'cd' builtin. @@ -5452,7 +5580,7 @@ invocation which are not available with the 'set' builtin. If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an - interactive shell. + interactive shell or when reading input through a pipe. '-D' A list of all double-quoted strings preceded by '$' is printed on @@ -5678,8 +5806,10 @@ several ways. 3. Bash expands and displays 'PS1' before reading the first line of a command, and expands and displays 'PS2' before reading the second - and subsequent lines of a multi-line command. Bash displays 'PS0' - after it reads a command but before executing it. + and subsequent lines of a multi-line command. Bash expands and + displays 'PS0' after it reads a command but before executing it. + See *note Controlling the Prompt::, for a complete list of prompt + string escape sequences. 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a command before printing the primary prompt, '$PS1' (*note Bash @@ -5884,7 +6014,9 @@ link itself. arithmetic binary operators return true if ARG1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to ARG2, respectively. ARG1 and ARG2 may be - positive or negative integers. + positive or negative integers. When used with the '[[' command, + ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell + Arithmetic::).  File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features @@ -6122,9 +6254,15 @@ quotes. The 'unset' builtin is used to destroy arrays. 'unset NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described -above. Care must be taken to avoid unwanted side effects caused by -filename expansion. 'unset NAME', where NAME is an array, removes the -entire array. A subscript of '*' or '@' also removes the entire array. +above. Unsetting the last element of an array variable does not unset +the variable. 'unset NAME', where NAME is an array, removes the entire +array. A subscript of '*' or '@' also removes the entire array. + + When using a variable name with a subscript as an argument to a +command, such as with 'unset', without using the word expansion syntax +described above, the argument is subject to the shell's filename +expansion. If filename expansion is not desired, the argument should be +quoted. The 'declare', 'local', and 'readonly' builtins each accept a '-a' option to specify an indexed array and a '-A' option to specify an @@ -6245,7 +6383,7 @@ non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters -which can appear in the prompt variables 'PS1' to 'PS4': +which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4': '\a' A bell character. @@ -6699,6 +6837,11 @@ command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. + When the shell is waiting for a job or process using the 'wait' +builtin, and job control is enabled, 'wait' will return when the job +changes state. The '-f' option will force 'wait' to wait until the job +or process terminates before returning. +  File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control @@ -6775,7 +6918,7 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, option is encountered. 'wait' - wait [-n] [JOBSPEC or PID ...] + wait [-fn] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or job specification JOBSPEC exits and return the exit status of the @@ -6783,7 +6926,10 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the '-n' option is supplied, 'wait' waits for any job to - terminate and returns its exit status. If neither JOBSPEC nor PID + terminate and returns its exit status. If the '-f' option is + supplied, and job control is enabled, 'wait' forces each PID or + JOBSPEC to terminate before returning its status, intead of + returning when it changes status. If neither JOBSPEC nor PID specifies an active child process of the shell, the return status is 127. @@ -7272,14 +7418,14 @@ Variable Settings This variable can be set to either 'emacs' or 'vi'. 'emacs-mode-string' - This string is displayed immediately before the last line of - the primary prompt when emacs editing mode is active. The - value is expanded like a key binding, so the standard set of - meta- and control prefixes and backslash escape sequences is - available. Use the '\1' and '\2' escapes to begin and end - sequences of non-printing characters, which can be used to - embed a terminal control sequence into the mode string. The - default is '@'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the '\1' and '\2' escapes to begin and end sequences of + non-printing characters, which can be used to embed a terminal + control sequence into the mode string. The default is '@'. 'enable-bracketed-paste' When set to 'On', Readline will configure the terminal in a @@ -7431,10 +7577,10 @@ Variable Settings default value is 'off'. 'show-mode-in-prompt' - If set to 'on', add a character to the beginning of the prompt + If set to 'on', add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi - insertion. The mode strings are user-settable. The default - value is 'off'. + insertion. The mode strings are user-settable (e.g., + EMACS-MODE-STRING). The default value is 'off'. 'skip-completed-text' If set to 'on', this alters the default completion behavior @@ -7450,24 +7596,26 @@ Variable Settings 'off'. 'vi-cmd-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - command mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(cmd)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in command mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(cmd)'. 'vi-ins-mode-string' - This string is displayed immediately before the last line of - the primary prompt when vi editing mode is active and in - insertion mode. The value is expanded like a key binding, so - the standard set of meta- and control prefixes and backslash - escape sequences is available. Use the '\1' and '\2' escapes - to begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. The default is '(ins)'. + If the SHOW-MODE-IN-PROMPT variable is enabled, this string is + displayed immediately before the last line of the primary + prompt when vi editing mode is active and in insertion mode. + The value is expanded like a key binding, so the standard set + of meta- and control prefixes and backslash escape sequences + is available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '(ins)'. 'visible-stats' If set to 'on', a character denoting a file's type is appended @@ -7594,8 +7742,9 @@ four parser directives used. '$if' The '$if' construct allows bindings to be made based on the editing mode, the terminal being used, or the application using Readline. - The text of the test extends to the end of the line; no characters - are required to isolate it. + The text of the test, after any comparison operator, extends to the + end of the line; unless otherwise noted, no characters are required + to isolate it. 'mode' The 'mode=' form of the '$if' directive is used to test @@ -7612,6 +7761,22 @@ four parser directives used. the portion of the terminal name before the first '-'. This allows 'sun' to match both 'sun' and 'sun-cmd', for instance. + 'version' + The 'version' test may be used to perform comparisons against + specific Readline versions. The 'version' expands to the + current Readline version. The set of comparison operators + includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The + version number supplied on the right side of the operator + consists of a major version number, an optional decimal point, + and an optional minor version (e.g., '7.1'). If the minor + version is omitted, it is assumed to be '0'. The operator may + be separated from the string 'version' and from the version + number argument by whitespace. The following example sets a + variable if the Readline version being used is 7.0 or newer: + $if version >= 7.0 + set show-mode-in-prompt on + $endif + 'application' The APPLICATION construct is used to include application-specific settings. Each program using the @@ -7625,6 +7790,20 @@ four parser directives used. "\C-xq": "\eb\"\ef\"" $endif + 'variable' + The VARIABLE construct provides simple equality tests for + Readline variables and values. The permitted comparison + operators are '=', '==', and '!='. The variable name must be + separated from the comparison operator by whitespace; the + operator may be separated from the value on the right hand + side by whitespace. Both string and boolean variables may be + tested. Boolean variables must be tested against the values + ON and OFF. The following example is equivalent to the + 'mode=emacs' test described above: + $if editing-mode == emacs + set show-mode-in-prompt on + $endif + '$endif' This command, as seen in the previous example, terminates an '$if' command. @@ -7810,6 +7989,20 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. +'previous-screen-line ()' + Attempt to move point to the same physical screen column on the + previous physical screen line. This will not have the desired + effect if the current Readline line does not take up more than one + physical line or if point is not greater than the length of the + prompt plus the screen width. + +'next-screen-line ()' + Attempt to move point to the same physical screen column on the + next physical screen line. This will not have the desired effect + if the current Readline line does not take up more than one + physical line or if the length of the current Readline line is not + greater than the length of the prompt plus the screen width. + 'clear-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -7876,13 +8069,13 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-forward ()' +'history-substring-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -'history-substr-search-backward ()' +'history-substring-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a @@ -8226,9 +8419,10 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Abort the current editing command and ring the terminal's bell (subject to the setting of 'bell-style'). -'do-uppercase-version (M-a, M-b, M-X, ...)' - If the metafied character X is lowercase, run the command that is - bound to the corresponding uppercase character. +'do-lowercase-version (M-A, M-B, M-X, ...)' + If the metafied character X is upper case, run the command that is + bound to the corresponding metafied lower case character. The + behavior is undefined if X is already lower case. 'prefix-meta ()' Metafy the next character typed. This is for keyboards without a @@ -8347,10 +8541,11 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: 'operate-and-get-next (C-o)' Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. + relative to the current line from the history for editing. A + numeric argument, if supplied, specifies the history entry to use + instead of the current line. -'edit-and-execute-command (C-xC-e)' +'edit-and-execute-command (C-x C-e)' Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke '$VISUAL', '$EDITOR', and 'emacs' as the editor, in that order. @@ -8414,13 +8609,15 @@ used to filter the matches, but the 'FIGNORE' shell variable is used. Next, the string specified as the argument to the '-W' option is considered. The string is first split using the characters in the 'IFS' -special variable as delimiters. Shell quoting is honored. Each word is -then expanded using brace expansion, tilde expansion, parameter and -variable expansion, command substitution, and arithmetic expansion, as -described above (*note Shell Expansions::). The results are split using -the rules described above (*note Word Splitting::). The results of the -expansion are prefix-matched against the word being completed, and the -matching words become the possible completions. +special variable as delimiters. Shell quoting is honored within the +string, in order to provide a mechanism for the words to contain shell +metacharacters or characters in the value of 'IFS'. Each word is then +expanded using brace expansion, tilde expansion, parameter and variable +expansion, command substitution, and arithmetic expansion, as described +above (*note Shell Expansions::). The results are split using the rules +described above (*note Word Splitting::). The results of the expansion +are prefix-matched against the word being completed, and the matching +words become the possible completions. After these matches have been generated, any shell function or command specified with the '-F' and '-C' options is invoked. When the @@ -8770,10 +8967,9 @@ function and bind it to a particular command using 'complete -F'. The following function provides completions for the 'cd' builtin. It is a reasonably good example of what shell functions must do when used -for completion. This function uses the word passsed as '$2' to -determine the directory name to complete. You can also use the -'COMP_WORDS' array variable; the current word is indexed by the -'COMP_CWORD' variable. +for completion. This function uses the word passed as '$2' to determine +the directory name to complete. You can also use the 'COMP_WORDS' array +variable; the current word is indexed by the 'COMP_CWORD' variable. The function relies on the 'complete' and 'compgen' builtins to do much of the work, adding only the things that the Bash 'cd' does beyond @@ -8942,7 +9138,7 @@ of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. The 'lithist' shell option causes the shell to save the command with embedded newlines instead of semicolons. The 'shopt' builtin is used to set these -options. *Note Bash Builtins::, for a description of 'shopt'. +options. *Note The Shopt Builtin::, for a description of 'shopt'.  File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8962,8 +9158,8 @@ history file. FIRST and LAST may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset - from the current command number). If LAST is not specified it is - set to FIRST. If FIRST is not specified it is set to the previous + from the current command number). If LAST is not specified, it is + set to FIRST. If FIRST is not specified, it is set to the previous command for editing and -16 for listing. If the '-l' flag is given, the commands are listed on standard output. The '-n' flag suppresses the command numbers when listing. The '-r' flag @@ -8987,6 +9183,7 @@ history file. history [N] history -c history -d OFFSET + history -d START-END history [-anrw] [FILENAME] history -ps ARG @@ -9005,8 +9202,18 @@ history file. options to replace the history list completely. '-d OFFSET' - Delete the history entry at position OFFSET. OFFSET should be - specified as it appears when the history is displayed. + Delete the history entry at position OFFSET. If OFFSET is + positive, it should be specified as it appears when the + history is displayed. If OFFSET is negative, it is + interpreted as relative to one greater than the last history + position, so negative indices count back from the end of the + history, and an index of '-1' refers to the current 'history + -d' command. + + '-d START-END' + Delete the history entries between positions START and END, + inclusive. Positive and negative values for START and END are + interpreted as described above. '-a' Append the new history lines to the history file. These are @@ -9055,7 +9262,8 @@ a previous command into the current input line, or fix errors in previous commands quickly. History expansion is performed immediately after a complete line is -read, before the shell breaks it into words. +read, before the shell breaks it into words, and is performed on each +line individually without taking quoting on previous lines into account. History expansion takes place in two parts. The first is to determine which line from the history list should be used during @@ -9071,15 +9279,15 @@ may be used to escape the history expansion character, but the history expansion character is also treated as quoted if it immediately precedes the closing double quote in a double-quoted string. - Several shell options settable with the 'shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. If -the 'histverify' shell option is enabled, and Readline is being used, -history substitutions are not immediately passed to the shell parser. -Instead, the expanded line is reloaded into the Readline editing buffer -for further modification. If Readline is being used, and the -'histreedit' shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. The '-p' -option to the 'history' builtin command may be used to see what a + Several shell options settable with the 'shopt' builtin (*note The +Shopt Builtin::) may be used to tailor the behavior of history +expansion. If the 'histverify' shell option is enabled, and Readline is +being used, history substitutions are not immediately passed to the +shell parser. Instead, the expanded line is reloaded into the Readline +editing buffer for further modification. If Readline is being used, and +the 'histreedit' shell option is enabled, a failed history expansion +will be reloaded into the Readline editing buffer for correction. The +'-p' option to the 'history' builtin command may be used to see what a history expansion will do before using it. The '-s' option to the 'history' builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for @@ -9319,10 +9527,24 @@ don't want to keep, you may remove or edit it. To find out more about the options and arguments that the 'configure' script understands, type - bash-2.04$ ./configure --help + bash-4.2$ ./configure --help at the Bash prompt in your Bash source directory. + If you want to build Bash in a directory separate from the source +directory - to build for multiple architectures, for example - just use +the full path to the configure script. The following commands will +build bash in a directory under '/usr/local/build' from the source code +in '/usr/local/src/bash-4.4': + + mkdir /usr/local/build/bash-4.4 + cd /usr/local/build/bash-4.4 + bash /usr/local/src/bash-4.4/configure + make + + See *note Compiling For Multiple Architectures:: for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be @@ -9369,10 +9591,10 @@ time, by placing the object files for each architecture in their own directory. To do this, you must use a version of 'make' that supports the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' -script from the source directory. You may need to supply the -'--srcdir=PATH' argument to tell 'configure' where the source files are. -'configure' automatically checks for the source code in the directory -that 'configure' is in and in '..'. +script from the source directory (*note Basic Installation::). You may +need to supply the '--srcdir=PATH' argument to tell 'configure' where +the source files are. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the @@ -9611,6 +9833,12 @@ unless the operating system does not provide the necessary support. '--enable-debugger' Include support for the bash debugger (distributed separately). +'--enable-dev-fd-stat-broken' + If calling 'stat' on /dev/fd/N returns different results than + calling 'fstat' on file descriptor N, supply this option to enable + a workaround. This has implications for conditional commands that + test file attributes. + '--enable-direxpand-default' Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally @@ -9681,7 +9909,7 @@ unless the operating system does not provide the necessary support. '--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt + characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. @@ -10636,7 +10864,7 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 268) + (line 269) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) @@ -10660,7 +10888,7 @@ D.1 Index of Shell Builtin Commands * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. - (line 89) + (line 92) * echo: Bash Builtins. (line 245) * enable: Bash Builtins. (line 294) * eval: Bourne Shell Builtins. @@ -10668,17 +10896,17 @@ D.1 Index of Shell Builtin Commands * exec: Bourne Shell Builtins. (line 102) * exit: Bourne Shell Builtins. - (line 119) + (line 120) * export: Bourne Shell Builtins. - (line 126) + (line 127) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 142) + (line 143) * hash: Bourne Shell Builtins. - (line 185) + (line 186) * help: Bash Builtins. (line 323) * history: Bash History Builtins. (line 40) @@ -10692,38 +10920,38 @@ D.1 Index of Shell Builtin Commands * mapfile: Bash Builtins. (line 369) * popd: Directory Stack Builtins. (line 35) -* printf: Bash Builtins. (line 414) +* printf: Bash Builtins. (line 415) * pushd: Directory Stack Builtins. (line 53) * pwd: Bourne Shell Builtins. - (line 205) -* read: Bash Builtins. (line 458) -* readarray: Bash Builtins. (line 550) + (line 206) +* read: Bash Builtins. (line 459) +* readarray: Bash Builtins. (line 553) * readonly: Bourne Shell Builtins. - (line 215) + (line 216) * return: Bourne Shell Builtins. - (line 234) + (line 235) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 255) + (line 256) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 559) +* source: Bash Builtins. (line 562) * suspend: Job Control Builtins. - (line 101) + (line 104) * test: Bourne Shell Builtins. - (line 268) + (line 269) * times: Bourne Shell Builtins. - (line 343) + (line 344) * trap: Bourne Shell Builtins. - (line 349) -* type: Bash Builtins. (line 564) -* typeset: Bash Builtins. (line 596) -* ulimit: Bash Builtins. (line 602) + (line 350) +* type: Bash Builtins. (line 567) +* typeset: Bash Builtins. (line 599) +* ulimit: Bash Builtins. (line 605) * umask: Bourne Shell Builtins. - (line 398) -* unalias: Bash Builtins. (line 701) + (line 399) +* unalias: Bash Builtins. (line 704) * unset: Bourne Shell Builtins. - (line 416) + (line 417) * wait: Job Control Builtins. (line 76) @@ -10738,9 +10966,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 121) + (line 122) * ]]: Conditional Constructs. - (line 121) + (line 122) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10762,7 +10990,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 79) + (line 80) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -10801,22 +11029,23 @@ D.3 Parameter and Variable Index * BASH: Bash Variables. (line 13) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 39) -* BASH_ARGV: Bash Variables. (line 49) -* BASH_CMDS: Bash Variables. (line 59) -* BASH_COMMAND: Bash Variables. (line 68) -* BASH_COMPAT: Bash Variables. (line 73) -* BASH_ENV: Bash Variables. (line 88) -* BASH_EXECUTION_STRING: Bash Variables. (line 94) -* BASH_LINENO: Bash Variables. (line 97) -* BASH_LOADABLES_PATH: Bash Variables. (line 105) -* BASH_REMATCH: Bash Variables. (line 109) -* BASH_SOURCE: Bash Variables. (line 117) -* BASH_SUBSHELL: Bash Variables. (line 124) -* BASH_VERSINFO: Bash Variables. (line 129) -* BASH_VERSION: Bash Variables. (line 152) -* BASH_XTRACEFD: Bash Variables. (line 155) +* BASH_ALIASES: Bash Variables. (line 32) +* BASH_ARGC: Bash Variables. (line 41) +* BASH_ARGV: Bash Variables. (line 53) +* BASH_ARGV0: Bash Variables. (line 64) +* BASH_CMDS: Bash Variables. (line 72) +* BASH_COMMAND: Bash Variables. (line 81) +* BASH_COMPAT: Bash Variables. (line 86) +* BASH_ENV: Bash Variables. (line 101) +* BASH_EXECUTION_STRING: Bash Variables. (line 107) +* BASH_LINENO: Bash Variables. (line 110) +* BASH_LOADABLES_PATH: Bash Variables. (line 118) +* BASH_REMATCH: Bash Variables. (line 122) +* BASH_SOURCE: Bash Variables. (line 130) +* BASH_SUBSHELL: Bash Variables. (line 137) +* BASH_VERSINFO: Bash Variables. (line 142) +* BASH_VERSION: Bash Variables. (line 165) +* BASH_XTRACEFD: Bash Variables. (line 168) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10825,12 +11054,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 166) +* CHILD_MAX: Bash Variables. (line 179) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 173) +* COLUMNS: Bash Variables. (line 186) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -10843,88 +11072,90 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 225) -* COMP_CWORD: Bash Variables. (line 179) -* COMP_KEY: Bash Variables. (line 208) -* COMP_LINE: Bash Variables. (line 185) -* COMP_POINT: Bash Variables. (line 190) -* COMP_TYPE: Bash Variables. (line 198) -* COMP_WORDBREAKS: Bash Variables. (line 212) -* COMP_WORDS: Bash Variables. (line 218) +* COMPREPLY: Bash Variables. (line 238) +* COMP_CWORD: Bash Variables. (line 192) +* COMP_KEY: Bash Variables. (line 221) +* COMP_LINE: Bash Variables. (line 198) +* COMP_POINT: Bash Variables. (line 203) +* COMP_TYPE: Bash Variables. (line 211) +* COMP_WORDBREAKS: Bash Variables. (line 225) +* COMP_WORDS: Bash Variables. (line 231) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 231) -* DIRSTACK: Bash Variables. (line 235) +* COPROC: Bash Variables. (line 244) +* DIRSTACK: Bash Variables. (line 248) * disable-completion: Readline Init File Syntax. (line 116) * echo-control-characters: Readline Init File Syntax. (line 121) * editing-mode: Readline Init File Syntax. (line 126) -* EMACS: Bash Variables. (line 245) +* EMACS: Bash Variables. (line 258) * emacs-mode-string: Readline Init File Syntax. (line 132) * enable-bracketed-paste: Readline Init File Syntax. (line 142) * enable-keypad: Readline Init File Syntax. (line 150) -* ENV: Bash Variables. (line 250) -* EUID: Bash Variables. (line 254) -* EXECIGNORE: Bash Variables. (line 258) +* ENV: Bash Variables. (line 263) +* EPOCHREALTIME: Bash Variables. (line 267) +* EPOCHSECONDS: Bash Variables. (line 275) +* EUID: Bash Variables. (line 282) +* EXECIGNORE: Bash Variables. (line 286) * expand-tilde: Readline Init File Syntax. (line 161) -* FCEDIT: Bash Variables. (line 271) -* FIGNORE: Bash Variables. (line 275) -* FUNCNAME: Bash Variables. (line 281) -* FUNCNEST: Bash Variables. (line 298) -* GLOBIGNORE: Bash Variables. (line 303) -* GROUPS: Bash Variables. (line 310) -* histchars: Bash Variables. (line 316) -* HISTCMD: Bash Variables. (line 331) -* HISTCONTROL: Bash Variables. (line 336) -* HISTFILE: Bash Variables. (line 352) -* HISTFILESIZE: Bash Variables. (line 356) -* HISTIGNORE: Bash Variables. (line 367) +* FCEDIT: Bash Variables. (line 299) +* FIGNORE: Bash Variables. (line 303) +* FUNCNAME: Bash Variables. (line 309) +* FUNCNEST: Bash Variables. (line 326) +* GLOBIGNORE: Bash Variables. (line 331) +* GROUPS: Bash Variables. (line 338) +* histchars: Bash Variables. (line 344) +* HISTCMD: Bash Variables. (line 359) +* HISTCONTROL: Bash Variables. (line 364) +* HISTFILE: Bash Variables. (line 380) +* HISTFILESIZE: Bash Variables. (line 384) +* HISTIGNORE: Bash Variables. (line 395) * history-preserve-point: Readline Init File Syntax. (line 165) * history-size: Readline Init File Syntax. (line 171) -* HISTSIZE: Bash Variables. (line 387) -* HISTTIMEFORMAT: Bash Variables. (line 394) +* HISTSIZE: Bash Variables. (line 415) +* HISTTIMEFORMAT: Bash Variables. (line 422) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 180) -* HOSTFILE: Bash Variables. (line 402) -* HOSTNAME: Bash Variables. (line 413) -* HOSTTYPE: Bash Variables. (line 416) +* HOSTFILE: Bash Variables. (line 430) +* HOSTNAME: Bash Variables. (line 441) +* HOSTTYPE: Bash Variables. (line 444) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 419) +* IGNOREEOF: Bash Variables. (line 447) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 429) +* INPUTRC: Bash Variables. (line 457) * isearch-terminators: Readline Init File Syntax. (line 195) * keymap: Readline Init File Syntax. (line 202) -* LANG: Bash Variables. (line 433) -* LC_ALL: Bash Variables. (line 437) -* LC_COLLATE: Bash Variables. (line 441) -* LC_CTYPE: Bash Variables. (line 448) +* LANG: Bash Variables. (line 461) +* LC_ALL: Bash Variables. (line 465) +* LC_COLLATE: Bash Variables. (line 469) +* LC_CTYPE: Bash Variables. (line 476) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 453) -* LC_NUMERIC: Bash Variables. (line 457) -* LC_TIME: Bash Variables. (line 461) -* LINENO: Bash Variables. (line 465) -* LINES: Bash Variables. (line 469) -* MACHTYPE: Bash Variables. (line 475) +* LC_MESSAGES <1>: Bash Variables. (line 481) +* LC_NUMERIC: Bash Variables. (line 485) +* LC_TIME: Bash Variables. (line 489) +* LINENO: Bash Variables. (line 493) +* LINES: Bash Variables. (line 497) +* MACHTYPE: Bash Variables. (line 503) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 479) +* MAILCHECK: Bash Variables. (line 507) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 487) +* MAPFILE: Bash Variables. (line 515) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -10935,42 +11166,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 491) +* OLDPWD: Bash Variables. (line 519) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 494) +* OPTERR: Bash Variables. (line 522) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 498) +* OSTYPE: Bash Variables. (line 526) * output-meta: Readline Init File Syntax. (line 254) * page-completions: Readline Init File Syntax. (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 501) -* POSIXLY_CORRECT: Bash Variables. (line 506) -* PPID: Bash Variables. (line 515) -* PROMPT_COMMAND: Bash Variables. (line 519) -* PROMPT_DIRTRIM: Bash Variables. (line 523) -* PS0: Bash Variables. (line 529) +* PIPESTATUS: Bash Variables. (line 529) +* POSIXLY_CORRECT: Bash Variables. (line 534) +* PPID: Bash Variables. (line 543) +* PROMPT_COMMAND: Bash Variables. (line 547) +* PROMPT_DIRTRIM: Bash Variables. (line 551) +* PS0: Bash Variables. (line 557) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 534) -* PS4: Bash Variables. (line 539) -* PWD: Bash Variables. (line 545) -* RANDOM: Bash Variables. (line 548) -* READLINE_LINE: Bash Variables. (line 553) -* READLINE_POINT: Bash Variables. (line 557) -* REPLY: Bash Variables. (line 561) +* PS3: Bash Variables. (line 562) +* PS4: Bash Variables. (line 567) +* PWD: Bash Variables. (line 575) +* RANDOM: Bash Variables. (line 578) +* READLINE_LINE: Bash Variables. (line 583) +* READLINE_POINT: Bash Variables. (line 587) +* REPLY: Bash Variables. (line 591) * revert-all-at-newline: Readline Init File Syntax. (line 270) -* SECONDS: Bash Variables. (line 564) -* SHELL: Bash Variables. (line 570) -* SHELLOPTS: Bash Variables. (line 575) -* SHLVL: Bash Variables. (line 584) +* SECONDS: Bash Variables. (line 594) +* SHELL: Bash Variables. (line 600) +* SHELLOPTS: Bash Variables. (line 605) +* SHLVL: Bash Variables. (line 614) * show-all-if-ambiguous: Readline Init File Syntax. (line 276) * show-all-if-unmodified: Readline Init File Syntax. @@ -10981,16 +11212,16 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 589) -* TMOUT: Bash Variables. (line 627) -* TMPDIR: Bash Variables. (line 639) -* UID: Bash Variables. (line 643) +* TIMEFORMAT: Bash Variables. (line 619) +* TMOUT: Bash Variables. (line 657) +* TMPDIR: Bash Variables. (line 669) +* UID: Bash Variables. (line 673) * vi-cmd-mode-string: Readline Init File Syntax. (line 310) * vi-ins-mode-string: Readline Init File Syntax. - (line 320) + (line 321) * visible-stats: Readline Init File Syntax. - (line 330) + (line 332)  File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -11006,7 +11237,7 @@ D.4 Function Index * accept-line (Newline or Return): Commands For History. (line 6) * alias-expand-line (): Miscellaneous Commands. - (line 124) + (line 125) * backward-char (C-b): Commands For Moving. (line 15) * backward-delete-char (Rubout): Commands For Text. (line 17) * backward-kill-line (C-x Rubout): Commands For Killing. @@ -11021,10 +11252,10 @@ D.4 Function Index * call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) * capitalize-word (M-c): Commands For Text. (line 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 42) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (line 47) +* clear-screen (C-l): Commands For Moving. (line 48) * complete (): Commands For Completion. (line 6) * complete-command (M-!): Commands For Completion. @@ -11054,56 +11285,56 @@ D.4 Function Index (line 46) * digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) * display-shell-version (C-x C-v): Miscellaneous Commands. - (line 109) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. + (line 110) +* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands. (line 14) * downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 74) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 86) * dump-variables (): Miscellaneous Commands. - (line 79) + (line 80) * dynamic-complete-history (M-): Commands For Completion. (line 90) -* edit-and-execute-command (C-xC-e): Miscellaneous Commands. - (line 138) +* edit-and-execute-command (C-x C-e): Miscellaneous Commands. + (line 140) * end-kbd-macro (C-x )): Keyboard Macros. (line 9) * end-of-file (usually C-d): Commands For Text. (line 6) * end-of-history (M->): Commands For History. (line 23) * end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) + (line 37) * forward-backward-delete-char (): Commands For Text. (line 21) * forward-char (C-f): Commands For Moving. (line 12) * forward-search-history (C-s): Commands For History. (line 31) * forward-word (M-f): Commands For Moving. (line 18) * glob-complete-word (M-g): Miscellaneous Commands. - (line 91) + (line 92) * glob-expand-word (C-x *): Miscellaneous Commands. - (line 97) + (line 98) * glob-list-expansions (C-x g): Miscellaneous Commands. - (line 103) + (line 104) * history-and-alias-expand-line (): Miscellaneous Commands. - (line 127) + (line 128) * history-expand-line (M-^): Miscellaneous Commands. - (line 117) + (line 118) * history-search-backward (): Commands For History. (line 53) * history-search-forward (): Commands For History. (line 47) -* history-substr-search-backward (): Commands For History. +* history-substring-search-backward (): Commands For History. (line 65) -* history-substr-search-forward (): Commands For History. +* history-substring-search-forward (): Commands For History. (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 61) * insert-completions (M-*): Commands For Completion. (line 22) * insert-last-argument (M-. or M-_): Miscellaneous Commands. - (line 130) + (line 131) * kill-line (C-k): Commands For Killing. (line 6) * kill-region (): Commands For Killing. @@ -11113,19 +11344,20 @@ D.4 Function Index * kill-word (M-d): Commands For Killing. (line 19) * magic-space (): Miscellaneous Commands. - (line 120) + (line 121) * menu-complete (): Commands For Completion. (line 26) * menu-complete-backward (): Commands For Completion. (line 38) * next-history (C-n): Commands For History. (line 17) +* next-screen-line (): Commands For Moving. (line 41) * non-incremental-forward-search-history (M-n): Commands For History. (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. (line 35) * operate-and-get-next (C-o): Miscellaneous Commands. - (line 133) + (line 134) * overwrite-mode (): Commands For Text. (line 65) * possible-command-completions (C-x !): Commands For Completion. (line 86) @@ -11140,38 +11372,39 @@ D.4 Function Index * possible-variable-completions (C-x $): Commands For Completion. (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) + (line 19) * previous-history (C-p): Commands For History. (line 13) +* previous-screen-line (): Commands For Moving. (line 34) * print-last-kbd-macro (): Keyboard Macros. (line 17) * quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. (line 6) -* redraw-current-line (): Commands For Moving. (line 38) +* redraw-current-line (): Commands For Moving. (line 52) * reverse-search-history (C-r): Commands For History. (line 27) * revert-line (M-r): Miscellaneous Commands. - (line 25) + (line 26) * self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 33) * shell-backward-kill-word (): Commands For Killing. (line 33) * shell-backward-word (): Commands For Moving. (line 30) * shell-expand-line (M-C-e): Miscellaneous Commands. - (line 112) + (line 113) * shell-forward-word (): Commands For Moving. (line 26) * shell-kill-word (): Commands For Killing. (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) + (line 52) * start-kbd-macro (C-x (): Keyboard Macros. (line 6) * tilde-expand (M-&): Miscellaneous Commands. - (line 29) + (line 30) * transpose-chars (C-t): Commands For Text. (line 42) * transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) + (line 23) * universal-argument (): Numeric Arguments. (line 10) * unix-filename-rubout (): Commands For Killing. (line 41) @@ -11273,7 +11506,7 @@ D.5 Concept Index * history list: Bash History Facilities. (line 6) * History, how to use: A Programmable Completion Example. - (line 114) + (line 113) * identifier: Definitions. (line 51) * initialization file, readline: Readline Init File. (line 6) * installation: Basic Installation. (line 6) @@ -11351,134 +11584,134 @@ D.5 Concept Index  Tag Table: -Node: Top897 -Node: Introduction2817 -Node: What is Bash?3033 -Node: What is a shell?4147 -Node: Definitions6685 -Node: Basic Shell Features9636 -Node: Shell Syntax10855 -Node: Shell Operation11881 -Node: Quoting13174 -Node: Escape Character14474 -Node: Single Quotes14959 -Node: Double Quotes15307 -Node: ANSI-C Quoting16585 -Node: Locale Translation17838 -Node: Comments18734 -Node: Shell Commands19352 -Node: Simple Commands20224 -Node: Pipelines20855 -Node: Lists23598 -Node: Compound Commands25327 -Node: Looping Constructs26330 -Node: Conditional Constructs28793 -Node: Command Grouping39715 -Node: Coprocesses41194 -Node: GNU Parallel43026 -Node: Shell Functions46999 -Node: Shell Parameters52205 -Node: Positional Parameters56618 -Node: Special Parameters57518 -Node: Shell Expansions60855 -Node: Brace Expansion62949 -Node: Tilde Expansion65730 -Node: Shell Parameter Expansion68078 -Node: Command Substitution82210 -Node: Arithmetic Expansion83565 -Node: Process Substitution84497 -Node: Word Splitting85617 -Node: Filename Expansion87561 -Node: Pattern Matching89845 -Node: Quote Removal93543 -Node: Redirections93838 -Node: Executing Commands103258 -Node: Simple Command Expansion103928 -Node: Command Search and Execution105858 -Node: Command Execution Environment108194 -Node: Environment111178 -Node: Exit Status112837 -Node: Signals114507 -Node: Shell Scripts116474 -Node: Shell Builtin Commands118989 -Node: Bourne Shell Builtins121023 -Node: Bash Builtins141623 -Node: Modifying Shell Behavior170268 -Node: The Set Builtin170613 -Node: The Shopt Builtin181026 -Node: Special Builtins196825 -Node: Shell Variables197804 -Node: Bourne Shell Variables198241 -Node: Bash Variables200272 -Node: Bash Features228652 -Node: Invoking Bash229551 -Node: Bash Startup Files235500 -Node: Interactive Shells240603 -Node: What is an Interactive Shell?241013 -Node: Is this Shell Interactive?241662 -Node: Interactive Shell Behavior242477 -Node: Bash Conditional Expressions245852 -Node: Shell Arithmetic250092 -Node: Aliases252909 -Node: Arrays255457 -Node: The Directory Stack260541 -Node: Directory Stack Builtins261325 -Node: Controlling the Prompt264293 -Node: The Restricted Shell267039 -Node: Bash POSIX Mode268864 -Node: Job Control279215 -Node: Job Control Basics279675 -Node: Job Control Builtins284394 -Node: Job Control Variables288924 -Node: Command Line Editing290080 -Node: Introduction and Notation291751 -Node: Readline Interaction293374 -Node: Readline Bare Essentials294565 -Node: Readline Movement Commands296348 -Node: Readline Killing Commands297308 -Node: Readline Arguments299226 -Node: Searching300270 -Node: Readline Init File302456 -Node: Readline Init File Syntax303603 -Node: Conditional Init Constructs323790 -Node: Sample Init File326315 -Node: Bindable Readline Commands329432 -Node: Commands For Moving330636 -Node: Commands For History331779 -Node: Commands For Text336068 -Node: Commands For Killing339457 -Node: Numeric Arguments341938 -Node: Commands For Completion343077 -Node: Keyboard Macros347268 -Node: Miscellaneous Commands347955 -Node: Readline vi Mode353759 -Node: Programmable Completion354666 -Node: Programmable Completion Builtins362127 -Node: A Programmable Completion Example372013 -Node: Using History Interactively377265 -Node: Bash History Facilities377949 -Node: Bash History Builtins380950 -Node: History Interaction384947 -Node: Event Designators387911 -Node: Word Designators389130 -Node: Modifiers390767 -Node: Installing Bash392169 -Node: Basic Installation393306 -Node: Compilers and Options395997 -Node: Compiling For Multiple Architectures396738 -Node: Installation Names398401 -Node: Specifying the System Type399219 -Node: Sharing Defaults399935 -Node: Operation Controls400608 -Node: Optional Features401566 -Node: Reporting Bugs411823 -Node: Major Differences From The Bourne Shell413017 -Node: GNU Free Documentation License429869 -Node: Indexes455046 -Node: Builtin Index455500 -Node: Reserved Word Index462327 -Node: Variable Index464775 -Node: Function Index480234 -Node: Concept Index493391 +Node: Top891 +Node: Introduction2805 +Node: What is Bash?3021 +Node: What is a shell?4135 +Node: Definitions6673 +Node: Basic Shell Features9624 +Node: Shell Syntax10843 +Node: Shell Operation11869 +Node: Quoting13162 +Node: Escape Character14462 +Node: Single Quotes14947 +Node: Double Quotes15295 +Node: ANSI-C Quoting16573 +Node: Locale Translation17832 +Node: Comments18728 +Node: Shell Commands19346 +Node: Simple Commands20218 +Node: Pipelines20849 +Node: Lists23781 +Node: Compound Commands25520 +Node: Looping Constructs26532 +Node: Conditional Constructs29027 +Node: Command Grouping40082 +Node: Coprocesses41561 +Node: GNU Parallel43464 +Node: Shell Functions47438 +Node: Shell Parameters54521 +Node: Positional Parameters58934 +Node: Special Parameters59834 +Node: Shell Expansions63171 +Node: Brace Expansion65294 +Node: Tilde Expansion68018 +Node: Shell Parameter Expansion70366 +Node: Command Substitution84849 +Node: Arithmetic Expansion86204 +Node: Process Substitution87136 +Node: Word Splitting88256 +Node: Filename Expansion90200 +Node: Pattern Matching92730 +Node: Quote Removal96716 +Node: Redirections97011 +Node: Executing Commands106569 +Node: Simple Command Expansion107239 +Node: Command Search and Execution109169 +Node: Command Execution Environment111545 +Node: Environment114529 +Node: Exit Status116188 +Node: Signals117858 +Node: Shell Scripts119825 +Node: Shell Builtin Commands122340 +Node: Bourne Shell Builtins124378 +Node: Bash Builtins145036 +Node: Modifying Shell Behavior173944 +Node: The Set Builtin174289 +Node: The Shopt Builtin184702 +Node: Special Builtins201572 +Node: Shell Variables202551 +Node: Bourne Shell Variables202988 +Node: Bash Variables205092 +Node: Bash Features235106 +Node: Invoking Bash236005 +Node: Bash Startup Files241991 +Node: Interactive Shells247094 +Node: What is an Interactive Shell?247504 +Node: Is this Shell Interactive?248153 +Node: Interactive Shell Behavior248968 +Node: Bash Conditional Expressions252456 +Node: Shell Arithmetic256822 +Node: Aliases259639 +Node: Arrays262187 +Node: The Directory Stack267553 +Node: Directory Stack Builtins268337 +Node: Controlling the Prompt271305 +Node: The Restricted Shell274067 +Node: Bash POSIX Mode275892 +Node: Job Control286243 +Node: Job Control Basics286703 +Node: Job Control Builtins291671 +Node: Job Control Variables296398 +Node: Command Line Editing297554 +Node: Introduction and Notation299225 +Node: Readline Interaction300848 +Node: Readline Bare Essentials302039 +Node: Readline Movement Commands303822 +Node: Readline Killing Commands304782 +Node: Readline Arguments306700 +Node: Searching307744 +Node: Readline Init File309930 +Node: Readline Init File Syntax311077 +Node: Conditional Init Constructs331448 +Node: Sample Init File335644 +Node: Bindable Readline Commands338761 +Node: Commands For Moving339965 +Node: Commands For History341814 +Node: Commands For Text346109 +Node: Commands For Killing349498 +Node: Numeric Arguments351979 +Node: Commands For Completion353118 +Node: Keyboard Macros357309 +Node: Miscellaneous Commands357996 +Node: Readline vi Mode363949 +Node: Programmable Completion364856 +Node: Programmable Completion Builtins372450 +Node: A Programmable Completion Example382336 +Node: Using History Interactively387587 +Node: Bash History Facilities388271 +Node: Bash History Builtins391276 +Node: History Interaction395807 +Node: Event Designators398874 +Node: Word Designators400093 +Node: Modifiers401730 +Node: Installing Bash403132 +Node: Basic Installation404269 +Node: Compilers and Options407527 +Node: Compiling For Multiple Architectures408268 +Node: Installation Names409961 +Node: Specifying the System Type410779 +Node: Sharing Defaults411495 +Node: Operation Controls412168 +Node: Optional Features413126 +Node: Reporting Bugs423652 +Node: Major Differences From The Bourne Shell424846 +Node: GNU Free Documentation License441698 +Node: Indexes466875 +Node: Builtin Index467329 +Node: Reserved Word Index474156 +Node: Variable Index476604 +Node: Function Index492282 +Node: Concept Index505585  End Tag Table diff --git a/doc/bashref.pdf b/doc/bashref.pdf index fff99af93..9686b72e9 100644 Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ diff --git a/doc/bashref.ps b/doc/bashref.ps index a7c58bd71..7b2de8cee 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -1,8 +1,8 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software +%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software %%Title: bashref.dvi -%%CreationDate: Wed Sep 7 17:14:23 2016 -%%Pages: 178 +%%CreationDate: Mon Mar 19 13:43:29 2018 +%%Pages: 182 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2016.09.07:1714 +%DVIPSSource: TeX output 2018.03.19:0943 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -7595,25 +7595,24 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 -b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.4,)g(for)f -Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3118 1697 y(Septem)m(b)s(er)f -(2016)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 -b(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.0,)g(for)f +Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.0.)3285 1697 y(Marc)m(h)g(2018)150 +4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 +b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 +b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(7)e(Septem)m(b)s -(er)g(2016\).)150 4523 y(This)h(is)h(Edition)g(4.4,)i(last)f(up)s -(dated)d(7)i(Septem)m(b)s(er)g(2016,)i(of)e Fr(The)f(GNU)i(Bash)f -(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)d Ft(Bash)p -Fu(,)g(V)-8 b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602 -4764 y(c)577 4767 y Fq(\015)f Fu(1988{2016)35 b(F)-8 -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 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.0,)c(15)f(Marc)m(h)g +(2018\).)150 4523 y(This)f(is)h(Edition)f(5.0,)i(last)g(up)s(dated)d +(15)j(Marc)m(h)f(2018,)i(of)e Fr(The)f(GNU)h(Bash)g(Reference)g(Man)m +(ual)p Fu(,)h(for)150 4633 y Ft(Bash)p Fu(,)d(V)-8 b(ersion)31 +b(5.0.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 +y Fq(\015)f Fu(1988{2018)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 +b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h +(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s +(cumen)m(t)f(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 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8 @@ -7697,7 +7696,7 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)29 b Fu(10)524 3205 y(3.2.4.2)93 b(Conditional)31 b(Constructs)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -39 b Fu(10)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22 +39 b Fu(11)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36 b Fu(14)399 3425 y(3.2.5)93 b(Copro)s(cesses)26 b Fn(:)15 @@ -7707,7 +7706,7 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399 3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)26 b Fu(15)275 3644 y(3.3)92 b(Shell)30 +(:)f(:)g(:)h(:)26 b Fu(16)275 3644 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g @@ -7715,385 +7714,385 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b -Fu(18)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 +Fu(19)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)21 b Fu(19)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 +h(:)f(:)h(:)21 b Fu(20)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(20)275 4082 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4082 y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)38 b Fu(21)399 4192 y(3.5.1)93 b(Brace)31 +(:)g(:)h(:)f(:)38 b Fu(22)399 4192 y(3.5.1)93 b(Brace)31 b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b -Fu(21)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b +Fu(22)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(22)399 4411 y(3.5.3)93 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(23)399 4411 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(23)399 4521 y(3.5.4)93 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(24)399 4521 y(3.5.4)93 b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(29)399 4630 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(30)399 4630 y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b -Fu(29)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 +Fu(30)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)28 b Fu(30)399 4849 y(3.5.7)93 b(W)-8 b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 -b Fu(30)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22 +b Fu(31)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)35 b Fu(30)524 5068 y(3.5.8.1)93 b(P)m(attern)31 +f(:)h(:)f(:)g(:)35 b Fu(31)524 5068 y(3.5.8.1)93 b(P)m(attern)31 b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(31)399 5178 y(3.5.9)93 +h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(32)399 5178 y(3.5.9)93 b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 -b Fu(32)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) +b Fu(33)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(32)p +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(33)p eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Fu(ii)399 83 y(3.6.1)93 b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 -b Fu(34)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15 +b Fu(35)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)28 b Fu(34)399 302 y(3.6.3)93 b(App)s(ending)28 +(:)f(:)g(:)h(:)f(:)28 b Fu(35)399 302 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)33 b Fu(34)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h +(:)33 b Fu(35)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h (and)f(Standard)h(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 -b Fu(34)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) +b Fu(35)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) h(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 -b Fu(34)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 +b Fu(36)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(35)399 741 y(3.6.7)93 +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(36)399 741 y(3.6.7)93 b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(35)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 +b Fu(36)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 -b Fu(35)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d +b Fu(36)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -40 b Fu(36)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f +40 b Fu(37)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f (for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f -(:)41 b Fu(36)275 1179 y(3.7)92 b(Executing)31 b(Commands)24 +(:)41 b Fu(37)275 1179 y(3.7)92 b(Executing)31 b(Commands)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(36)399 1289 y(3.7.1)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(37)399 1289 y(3.7.1)93 b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)24 b Fu(36)399 1398 y(3.7.2)93 b(Command)29 +h(:)f(:)g(:)h(:)f(:)24 b Fu(37)399 1398 y(3.7.2)93 b(Command)29 b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -28 b Fu(37)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m +28 b Fu(38)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m (vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(37)399 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(38)399 1617 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)39 b Fu(38)399 1727 y(3.7.5)93 b(Exit)31 +(:)f(:)g(:)h(:)39 b Fu(39)399 1727 y(3.7.5)93 b(Exit)31 b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 -b Fu(39)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) +b Fu(40)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(39)275 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(40)275 1946 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(40)150 2197 +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(41)150 2197 y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)27 b Fs(42)275 2334 y Fu(4.1)92 b(Bourne)30 +(:)h(:)f(:)h(:)f(:)27 b Fs(43)275 2334 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 -b Fu(42)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 +b Fu(43)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)26 b Fu(49)275 2553 y(4.3)92 b(Mo)s(difying)30 +(:)f(:)g(:)h(:)f(:)26 b Fu(50)275 2553 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(60)399 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(61)399 2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)27 b Fu(60)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 +f(:)g(:)27 b Fu(61)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(64)275 2882 y(4.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(65)275 2882 y(4.4)92 b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)22 b Fu(70)150 3132 y Fs(5)135 b(Shell)45 +f(:)g(:)h(:)f(:)22 b Fu(71)150 3132 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(71)275 3269 y Fu(5.1)92 +f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(72)275 3269 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -23 b Fu(71)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 +23 b Fu(72)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 -b Fu(71)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 +b Fu(72)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -44 b Fs(82)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 +44 b Fs(84)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29 -b Fu(82)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f +b Fu(84)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(84)275 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(86)275 3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(85)399 4095 y(6.3.1)93 +(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(87)399 4095 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(86)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +b Fu(88)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m (e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)35 b Fu(86)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 +h(:)35 b Fu(88)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(86)275 4424 y(6.4)92 b(Bash)30 +(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(88)275 4424 y(6.4)92 b(Bash)30 b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(87)275 4534 y(6.5)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(89)275 4534 y(6.5)92 b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)26 b Fu(89)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f +(:)h(:)26 b Fu(91)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 -b Fu(90)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) +b Fu(92)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38 -b Fu(91)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 +b Fu(93)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(93)399 4972 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(95)399 4972 y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -36 b Fu(93)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 +36 b Fu(95)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(94)275 5191 y(6.10)92 +(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(96)275 5191 y(6.10)92 b(The)30 b(Restricted)h(Shell)11 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)24 -b Fu(95)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17 +b Fu(97)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17 b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(96)p eop end +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(98)p eop end %%Page: -3 5 TeXDict begin -3 4 bop 3674 -116 a Fu(iii)150 83 y Fs(7)135 b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(100)275 220 y +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(102)275 220 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(100)275 330 y(7.2)92 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(102)275 330 y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 -b Fu(101)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 +b Fu(103)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(103)150 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(105)150 690 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)k Fs(104)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 +(:)g(:)h(:)f(:)h(:)k Fs(106)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(104)275 936 y(8.2)92 +h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(106)275 936 y(8.2)92 b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27 -b Fu(104)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 +b Fu(106)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26 -b Fu(105)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +b Fu(107)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 -b Fu(105)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 +b Fu(107)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(106)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 +b Fu(108)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)30 b Fu(106)399 1484 y(8.2.5)93 b(Searc)m(hing)31 +(:)f(:)h(:)30 b Fu(108)399 1484 y(8.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(106)275 +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(108)275 1594 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(107)399 1704 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(109)399 1704 y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 -b Fu(107)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 +b Fu(109)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 -b Fu(115)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 +b Fu(117)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(116)275 2032 y(8.4)92 +(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(118)275 2032 y(8.4)92 b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(119)399 2142 y(8.4.1)93 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(121)399 2142 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(119)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(121)399 2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f (History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)39 b Fu(120)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 +f(:)39 b Fu(122)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)23 b Fu(121)399 2471 y(8.4.4)93 b(Killing)31 +h(:)f(:)23 b Fu(123)399 2471 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(122)399 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(125)399 2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(124)399 +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(126)399 2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 -b Fu(124)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 +b Fu(126)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(126)399 2909 y(8.4.8)93 +h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(128)399 2909 y(8.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)27 b Fu(126)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e +(:)f(:)27 b Fu(128)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(128)275 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(130)275 3128 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 -b Fu(129)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 +b Fu(131)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(131)275 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(133)275 3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(134)150 3598 y +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(137)150 3598 y Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28 b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)41 b Fs(137)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +(:)h(:)41 b Fs(140)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(137)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(140)275 3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)41 b Fu(137)275 3954 y(9.3)92 b(History)31 +h(:)f(:)h(:)f(:)41 b Fu(140)275 3954 y(9.3)92 b(History)31 b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23 -b Fu(139)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 +b Fu(142)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)32 b Fu(140)399 4174 y(9.3.2)93 b(W)-8 +(:)h(:)f(:)g(:)h(:)32 b Fu(143)399 4174 y(9.3.2)93 b(W)-8 b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(140)399 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(143)399 4283 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)29 b Fu(141)p eop end +h(:)f(:)h(:)f(:)g(:)29 b Fu(144)p eop end %%Page: -4 6 TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)29 b Fs(142)275 220 y Fu(10.1)92 b(Basic)32 +f(:)h(:)f(:)29 b Fs(145)275 220 y Fu(10.1)92 b(Basic)32 b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 -b Fu(142)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 +b Fu(145)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)30 b Fu(143)275 439 y(10.3)92 b(Compiling)30 +(:)f(:)h(:)f(:)30 b Fu(146)275 439 y(10.3)92 b(Compiling)30 b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(143)275 549 y(10.4)92 +(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(146)275 549 y(10.4)92 b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 -b Fu(143)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s +b Fu(146)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s (e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)34 b Fu(143)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 +h(:)34 b Fu(147)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(144)275 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(147)275 878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)25 b Fu(144)275 987 y(10.8)92 b(Optional)31 +(:)h(:)f(:)25 b Fu(147)275 987 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32 -b Fu(144)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 +b Fu(148)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)35 b Fs(149)150 1498 y(App)t(endix)44 +(:)f(:)g(:)h(:)f(:)35 b Fs(153)150 1498 y(App)t(endix)44 b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284 1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)47 b Fs(150)275 1776 y Fu(B.1)92 +f(:)g(:)h(:)f(:)h(:)47 b Fs(154)275 1776 y Fu(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)35 b Fu(154)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 +(:)35 b Fu(158)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b -Fo(:)20 b(:)29 b Fs(156)150 2305 y(App)t(endix)44 b(D)118 +Fo(:)20 b(:)29 b Fs(160)150 2305 y(App)t(endix)44 b(D)118 b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 -b Fs(164)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +b Fs(168)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h (Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 -b Fu(164)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b Fu(168)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 -b Fu(165)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b Fu(169)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)42 b Fu(166)275 2771 y(D.4)92 b(F)-8 b(unction)31 +h(:)f(:)g(:)42 b Fu(170)275 2771 y(D.4)92 b(F)-8 b(unction)31 b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 -b Fu(168)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b +b Fu(172)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b -Fu(170)p eop end +Fu(174)p eop end %%Page: 1 7 TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80 b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 @@ -8242,7 +8241,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an) h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38 b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27 b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 -4295 y(tions],)f(page)f(32,)i(for)d(a)g(list)h(of)f(redirection)h(op)s +4295 y(tions],)f(page)f(33,)i(for)d(a)g(list)h(of)f(redirection)h(op)s (erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630 4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150 4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h @@ -8314,34 +8313,34 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h (follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g -(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(40\),)k +(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(41\),)k (from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g -(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(82\),)h(or)e(from)g +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(84\),)h(or)e(from)g (the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d (the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i -(Section)f(6.6)g([Aliases],)i(page)e(90\).)199 4186 y(3.)61 +(Section)f(6.6)g([Aliases],)i(page)e(92\).)199 4186 y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s (ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g -([Shell)g(Expansions],)h(page)f(21\),)330 4551 y(breaking)35 +([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h (\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 -b(page)h(30\))h(and)e(commands)g(and)g(argumen)m(ts.)199 +b(page)h(31\))h(and)e(commands)g(and)g(argumen)m(ts.)199 4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g -(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(32\))g(and)e(re-)330 +(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(33\))g(and)e(re-)330 4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h -([Executing)f(Commands],)f(page)h(36\).)199 5208 y(7.)61 +([Executing)f(Commands],)f(page)h(37\).)199 5208 y(7.)61 b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and) f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317 -y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(39\).)p +y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(40\).)p eop end %%Page: 6 12 TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41 @@ -8359,11 +8358,11 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m (quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(139\),)47 b(the)150 1124 y Fr(history)30 +(teraction],)j(page)c(142\),)47 b(the)150 1124 y Fr(history)30 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g (expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) --8 b(acilities],)26 b(page)c(137,)j(for)20 b(more)h(details)h +-8 b(acilities],)26 b(page)c(140,)j(for)20 b(more)h(details)h (concerning)g(history)f(expansion.)275 1364 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) @@ -8392,13 +8391,13 @@ b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g (expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 y(When)e(the)h(shell)g(is)g(in)f Fm(posix)g Fu(mo)s(de)g(\(see)i -(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(96\),)i(the)e(`)p +(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(98\),)i(the)e(`)p Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f (double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g (enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f (within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 -3583 y([Shell)29 b(Expansions],)g(page)h(21\).)41 b(The)28 +3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28 b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f (follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h (c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p @@ -8418,7 +8417,7 @@ Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g (quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h -(Expansion],)e(page)h(23\).)150 4672 y Fk(3.1.2.4)63 +(Expansion],)e(page)h(24\).)150 4672 y Fk(3.1.2.4)63 b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p @@ -8432,57 +8431,57 @@ eop end TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))150 572 y Ft(\\f)384 b Fu(form)30 -b(feed)150 735 y Ft(\\n)384 b Fu(newline)150 898 y Ft(\\r)g -Fu(carriage)32 b(return)150 1061 y Ft(\\t)384 b Fu(horizon)m(tal)32 -b(tab)150 1224 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 -1387 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1551 y Ft(\\')g -Fu(single)31 b(quote)150 1714 y Ft(\\")384 b Fu(double)30 -b(quote)150 1877 y Ft(\\?)384 b Fu(question)31 b(mark)150 -2040 y Ft(\\)p Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g -(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 -b(alue)31 b Fr(nnn)e Fu(\(one)i(to)g(three)g(digits\))150 -2203 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f -(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 -b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 -2313 y(hex)30 b(digits\))150 2476 y Ft(\\u)p Fj(HHHH)192 -b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e -(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 -2586 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 -2749 y Ft(\\U)p Fj(HHHHHHHH)630 2858 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) -g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g -(hexadecimal)g(v)-5 b(alue)630 2968 y Fr(HHHHHHHH)42 -b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3131 -y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38 -b Fu(c)m(haracter)150 3296 y(The)30 b(expanded)f(result)i(is)f +(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30 +b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g +Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32 +b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 +1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g +Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30 +b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150 +1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 +b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630 +2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36 +b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36 +b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46 +b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150 +2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g +(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g +(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31 +b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630 +2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f +(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 +b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g +(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p +Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f (single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f -(presen)m(t.)150 3499 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3646 y Fu(A)28 b(double-quoted)g(string)f +(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f (preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3756 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 +3767 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 b(If)24 b(the)h(curren)m(t)g(lo)s(cale)h(is)f Ft(C)g Fu(or)g Ft(POSIX)p Fu(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150 -3865 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g -(replacemen)m(t)h(is)e(double-quoted.)275 4004 y(Some)20 +3876 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g +(replacemen)m(t)h(is)e(double-quoted.)275 4010 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150 -4113 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) +4119 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5 -b(ariable,)150 4223 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p +b(ariable,)150 4229 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 -4332 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 +4339 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38 -b(Still)23 b(others)f(use)g(b)s(oth)150 4442 y(v)-5 b(ariables)31 +b(Still)23 b(others)f(use)g(b)s(oth)150 4448 y(v)-5 b(ariables)31 b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p -Ft(LC_MESSAGES)p Fu(/LC)p 2528 4442 28 4 v 34 w(MESSA)m(GES/)p +Ft(LC_MESSAGES)p Fu(/LC)p 2528 4448 28 4 v 34 w(MESSA)m(GES/)p Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150 4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m (teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) 16 b Fu(option)150 4902 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h (enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e -(64\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p +(65\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m (haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g @@ -8490,7 +8489,7 @@ Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g (allo)m(w)150 5230 y(commen)m(ts.)56 b(The)34 b Ft (interactive_comments)c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g (in)m(teractiv)m(e)j(shells.)55 b(See)150 5340 y(Section)30 -b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(85,)g(for)e(a)i +b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(87,)g(for)e(a)i (description)e(of)h(what)g(mak)m(es)h(a)f(shell)g(in)m(teractiv)m(e.)p eop end %%Page: 8 14 @@ -8516,7 +8515,7 @@ b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s (eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150 1600 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)h (command's)f(argumen)m(ts.)275 1736 y(The)h(return)h(status)g(\(see)i -(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(39\))g(of)g(a)g(simple)f +(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(40\))g(of)g(a)g(simple)f (command)g(is)h(its)150 1846 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f (128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 1956 y(w)m(as)31 @@ -8551,21 +8550,21 @@ h(it)150 3752 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e (output)g(format)g(to)150 3971 y(that)j(sp)s(eci\014ed)e(b)m(y)h Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 -4081 y(Mo)s(de],)40 b(page)f(96\),)i(it)d(do)s(es)f(not)h(recognize)i +4081 y(Mo)s(de],)40 b(page)f(98\),)i(it)d(do)s(es)f(not)h(recognize)i Ft(time)c Fu(as)i(a)g(reserv)m(ed)g(w)m(ord)f(if)h(the)g(next)g(tok)m (en)g(b)s(egins)150 4191 y(with)33 b(a)g(`)p Ft(-)p Fu('.)49 b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set) g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150 4300 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41 -b(page)d(71,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 +b(page)d(72,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 4519 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s (elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time) 150 4629 y(these)31 b(easily)-8 b(.)275 4765 y(When)29 b(the)h(shell)h(is)f(in)f Fm(posix)g Fu(mo)s(de)h(\(see)h(Section)f -(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(96\),)g Ft(time)150 +(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(98\),)g Ft(time)150 4875 y Fu(ma)m(y)26 b(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h (user)e(and)g(system)h(time)150 4984 y(consumed)33 b(b)m(y)h(the)h @@ -8579,1826 +8578,1913 @@ Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150 %%Page: 9 15 TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299 -y(Eac)m(h)25 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)f -(its)g(o)m(wn)h(subshell)e(\(see)i(Section)g(3.7.3)h([Command)150 -408 y(Execution)36 b(En)m(vironmen)m(t],)i(page)e(37\).)58 -b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline)g(is)f(the)h(exit)h -(status)f(of)g(the)150 518 y(last)27 b(command)f(in)f(the)i(pip)s -(eline,)f(unless)g(the)g Ft(pipefail)e Fu(option)i(is)g(enabled)g -(\(see)h(Section)g(4.3.1)h([The)150 628 y(Set)34 b(Builtin],)j(page)e -(60\).)53 b(If)34 b Ft(pipefail)e Fu(is)i(enabled,)h(the)g(pip)s -(eline's)f(return)f(status)h(is)h(the)f(v)-5 b(alue)35 -b(of)150 737 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g -(with)e(a)i(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f -(exit)150 847 y(successfully)-8 b(.)67 b(If)38 b(the)h(reserv)m(ed)g(w) -m(ord)g(`)p Ft(!)p Fu(')g(precedes)g(the)g(pip)s(eline,)h(the)g(exit)f -(status)g(is)g(the)g(logical)150 956 y(negation)h(of)f(the)f(exit)i -(status)f(as)f(describ)s(ed)g(ab)s(o)m(v)m(e.)66 b(The)38 -b(shell)h(w)m(aits)h(for)e(all)h(commands)g(in)f(the)150 -1066 y(pip)s(eline)30 b(to)h(terminate)g(b)s(efore)f(returning)g(a)h(v) --5 b(alue.)150 1262 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150 -1409 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) +y(Eac)m(h)29 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)e +(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess) +150 408 y(\(see)g(Section)g(3.7.3)h([Command)e(Execution)h(En)m +(vironmen)m(t],)g(page)g(38\).)41 b(If)29 b(the)g Ft(lastpipe)e +Fu(option)j(is)150 518 y(enabled)35 b(using)g(the)g Ft(shopt)f +Fu(builtin)g(\(see)i(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j(page) +f(65\),)i(the)d(last)150 628 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m +(y)h(b)s(e)f(run)f(b)m(y)h(the)h(shell)f(pro)s(cess.)275 +760 y(The)24 b(exit)i(status)f(of)h(a)f(pip)s(eline)g(is)g(the)g(exit)h +(status)f(of)h(the)f(last)h(command)f(in)f(the)i(pip)s(eline,)g(unless) +150 870 y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i +(Section)f(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(61\).)42 +b(If)30 b Ft(pipefail)150 980 y Fu(is)f(enabled,)g(the)f(pip)s(eline's) +g(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g +(\(righ)m(tmost\))i(command)d(to)h(exit)150 1089 y(with)34 +b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h +(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p +Ft(!)p Fu(')150 1199 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i +(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g +(as)g(describ)s(ed)150 1308 y(ab)s(o)m(v)m(e.)63 b(The)38 +b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f +(to)h(terminate)h(b)s(efore)e(returning)g(a)150 1418 +y(v)-5 b(alue.)150 1614 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150 +1761 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more) h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`) -p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1518 y(`)p Ft(&&)p +p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1870 y(`)p Ft(&&)p Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m (y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h -Ft(newline)p Fu(.)275 1651 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p +Ft(newline)p Fu(.)275 2003 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f (precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p -Ft(&)p Fu(',)i(whic)m(h)150 1761 y(ha)m(v)m(e)32 b(equal)e(precedence.) -275 1893 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h +Ft(&)p Fu(',)i(whic)m(h)150 2113 y(ha)m(v)m(e)32 b(equal)e(precedence.) +275 2245 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h (app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-) -150 2003 y(alen)m(t)i(to)f(a)g(semicolon.)275 2136 y(If)c(a)h(command)f +150 2355 y(alen)m(t)i(to)f(a)g(semicolon.)275 2488 y(If)c(a)h(command)f (is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150 -2245 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 +2597 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28 b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h -Fr(bac)m(kground)p Fu(.)150 2355 y(The)f(shell)h(do)s(es)f(not)h(w)m +Fr(bac)m(kground)p Fu(.)150 2707 y(The)f(shell)h(do)s(es)f(not)h(w)m (ait)g(for)f(the)h(command)f(to)i(\014nish,)d(and)h(the)h(return)e -(status)i(is)g(0)g(\(true\).)40 b(When)150 2464 y(job)d(con)m(trol)i +(status)i(is)g(0)g(\(true\).)40 b(When)150 2816 y(job)d(con)m(trol)i (is)e(not)g(activ)m(e)j(\(see)e(Chapter)f(7)g([Job)g(Con)m(trol],)j -(page)e(100\),)j(the)d(standard)e(input)g(for)150 2574 +(page)e(102\),)j(the)d(standard)e(input)g(for)150 2926 y(async)m(hronous)43 b(commands,)k(in)d(the)f(absence)i(of)f(an)m(y)g (explicit)h(redirections,)j(is)43 b(redirected)h(from)150 -2684 y Ft(/dev/null)p Fu(.)275 2816 y(Commands)19 b(separated)j(b)m(y)f +3036 y Ft(/dev/null)p Fu(.)275 3168 y(Commands)19 b(separated)j(b)m(y)f (a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m(tially;)k(the)21 -b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 2926 +b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 3278 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i(is)f (the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 -3059 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) +3411 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one) g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op) -s(er-)150 3168 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p +s(er-)150 3520 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30 b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s -(ciativit)m(y)-8 b(.)275 3301 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h -(form)390 3434 y Fj(command1)46 b Ft(&&)h Fj(command2)150 -3566 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h -Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero.)275 -3699 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 3832 -y Fj(command1)46 b Ft(||)h Fj(command2)150 3965 y Fr(command2)38 -b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38 -b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 4097 -y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f -Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f -(executed)150 4207 y(in)d(the)h(list.)150 4403 y Fk(3.2.4)63 -b(Comp)s(ound)42 b(Commands)150 4550 y Fu(Comp)s(ound)32 -b(commands)j(are)g(the)g(shell)g(programming)f(constructs.)54 -b(Eac)m(h)35 b(construct)g(b)s(egins)f(with)150 4659 -y(a)k(reserv)m(ed)f(w)m(ord)h(or)f(con)m(trol)i(op)s(erator)f(and)f(is) -g(terminated)h(b)m(y)f(a)h(corresp)s(onding)f(reserv)m(ed)g(w)m(ord)150 -4769 y(or)44 b(op)s(erator.)81 b(An)m(y)44 b(redirections)g(\(see)h -(Section)g(3.6)g([Redirections],)j(page)d(32\))g(asso)s(ciated)g(with) -150 4878 y(a)g(comp)s(ound)e(command)i(apply)f(to)h(all)h(commands)e -(within)g(that)h(comp)s(ound)e(command)i(unless)150 4988 -y(explicitly)32 b(o)m(v)m(erridden.)275 5121 y(In)20 -b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f -(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 -5230 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g -(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g -(newline)150 5340 y(in)f(place)h(of)g(a)g(semicolon.)p +(ciativit)m(y)-8 b(.)275 3653 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h +(form)390 3786 y Fj(command1)46 b Ft(&&)h Fj(command2)150 +3918 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g +(\(success\).)275 4051 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 +4184 y Fj(command1)46 b Ft(||)h Fj(command2)150 4317 +y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h +Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 +4449 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h +Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h +(command)f(executed)150 4559 y(in)d(the)h(list.)150 4755 +y Fk(3.2.4)63 b(Comp)s(ound)42 b(Commands)150 4902 y +Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f +(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 +5011 y(gins)25 b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h +(op)s(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f +(reserv)m(ed)150 5121 y(w)m(ord)i(or)g(op)s(erator.)40 +b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h +(page)f(33\))h(asso)s(ciated)f(with)150 5230 y(a)k(comp)s(ound)f +(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d +(command)i(unless)f(ex-)150 5340 y(plicitly)i(o)m(v)m(erridden.)p eop end %%Page: 10 16 TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299 -y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e +y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s +(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150 +408 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g +(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g +(newline)150 518 y(in)f(place)h(of)g(a)g(semicolon.)275 +663 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e (commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150 -408 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 -609 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150 -756 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g -(constructs.)275 891 y(Note)k(that)f(wherev)m(er)g(a)g(`)p +773 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150 +983 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150 +1130 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g +(constructs.)275 1276 y(Note)k(that)f(wherev)m(er)g(a)g(`)p Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's) -g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1001 y(replaced)c(with)f(one)h -(or)f(more)g(newlines.)150 1162 y Ft(until)240 b Fu(The)30 +g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1385 y(replaced)c(with)f(one)h +(or)f(more)g(newlines.)150 1561 y Ft(until)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870 -1297 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj -(consequent-commands)p Ft(;)c(done)630 1432 y Fu(Execute)f +1701 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj +(consequent-commands)p Ft(;)c(done)630 1841 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 -b Fu(has)41 b(an)g(exit)h(status)630 1542 y(whic)m(h)c(is)h(not)g +b Fu(has)41 b(an)g(exit)h(status)630 1950 y(whic)m(h)c(is)h(not)g (zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g -(the)g(last)g(command)630 1651 y(executed)31 b(in)f Fr(consequen)m +(the)g(last)g(command)630 2060 y(executed)31 b(in)f Fr(consequen)m (t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150 -1812 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(while)e Fu(command)h(is:)870 1947 y Ft(while)46 b +2230 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(while)e Fu(command)h(is:)870 2370 y Ft(while)46 b Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p -Ft(;)c(done)630 2082 y Fu(Execute)f Fr(consequen)m(t-commands)k +Ft(;)c(done)630 2510 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41 -b(an)g(exit)h(status)630 2192 y(of)34 b(zero.)53 b(The)34 +b(an)g(exit)h(status)630 2620 y(of)34 b(zero.)53 b(The)34 b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h -(command)f(executed)h(in)630 2301 y Fr(consequen)m(t-commands)p +(command)f(executed)h(in)630 2729 y Fr(consequen)m(t-commands)p Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150 -2462 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(for)e Fu(command)i(is:)870 2597 y Ft(for)47 b Fj(name)g +2900 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h +Ft(for)e Fu(command)i(is:)870 3040 y Ft(for)47 b Fj(name)g Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g -Fj(commands)p Ft(;)e(done)630 2732 y Fu(Expand)31 b Fr(w)m(ords)p -Fu(,)j(and)e(execute)i Fr(commands)i Fu(once)d(for)g(eac)m(h)h(mem)m(b) -s(er)e(in)g(the)h(resultan)m(t)630 2841 y(list,)d(with)f -Fr(name)34 b Fu(b)s(ound)27 b(to)i(the)h(curren)m(t)e(mem)m(b)s(er.)40 -b(If)28 b(`)p Ft(in)i Fj(words)p Fu(')e(is)h(not)g(presen)m(t,)h(the) -630 2951 y Ft(for)f Fu(command)g(executes)i(the)e Fr(commands)k -Fu(once)d(for)f(eac)m(h)i(p)s(ositional)f(parameter)g(that)630 -3060 y(is)d(set,)h(as)f(if)g(`)p Ft(in)j("$@")p Fu(')c(had)g(b)s(een)g -(sp)s(eci\014ed)g(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)e(P)m -(arameters],)630 3170 y(page)c(20\).)39 b(The)21 b(return)g(status)h -(is)g(the)g(exit)h(status)f(of)g(the)g(last)g(command)g(that)g -(executes.)630 3280 y(If)i(there)h(are)h(no)e(items)i(in)e(the)h -(expansion)g(of)g Fr(w)m(ords)p Fu(,)h(no)f(commands)f(are)h(executed,) -j(and)630 3389 y(the)j(return)e(status)i(is)f(zero.)630 -3524 y(An)g(alternate)i(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g -(also)h(supp)s(orted:)870 3659 y Ft(for)47 b(\(\()g Fj(expr1)f -Ft(;)i Fj(expr2)e Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f -Fj(commands)e Ft(;)j(done)630 3794 y Fu(First,)38 b(the)f(arithmetic)h -(expression)e Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 -b(according)f(to)g(the)g(rules)f(de-)630 3904 y(scrib)s(ed)41 -b(b)s(elo)m(w)h(\(see)h(Section)g(6.5)g([Shell)g(Arithmetic],)j(page)d -(89\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33 -b Fr(expr2)41 b Fu(is)34 b(then)f(ev)-5 b(aluated)35 -b(rep)s(eatedly)f(un)m(til)g(it)g(ev)-5 b(aluates)35 -b(to)g(zero.)51 b(Eac)m(h)630 4123 y(time)23 b Fr(expr2)30 -b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h(v)-5 b(alue,)25 -b Fr(commands)h Fu(are)d(executed)g(and)g(the)g(arith-)630 -4233 y(metic)29 b(expression)f Fr(expr3)36 b Fu(is)28 -b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g(omitted,)i -(it)f(b)s(eha)m(v)m(es)g(as)630 4342 y(if)i(it)h(ev)-5 +Fj(commands)p Ft(;)e(done)630 3180 y Fu(Expand)30 b Fr(w)m(ords)k +Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d +(execute)i Fr(com-)630 3289 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem) +m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46 +b Fu(b)s(ound)39 b(to)i(the)630 3399 y(curren)m(t)34 +b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p +Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h +(the)630 3508 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g +(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30 +b("$@")p Fu(')36 b(had)630 3618 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j +(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)630 +3758 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h +(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630 +3868 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g +Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630 +3977 y(return)29 b(status)i(is)f(zero.)630 4117 y(An)g(alternate)i +(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870 +4257 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e +Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630 +4397 y Fu(First,)38 b(the)f(arithmetic)h(expression)e +Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g +(rules)f(de-)630 4507 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g +(6.5)g([Shell)g(Arithmetic],)j(page)d(91\).)77 b(The)42 +b(arithmetic)630 4616 y(expression)33 b Fr(expr2)41 b +Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g +(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 4726 +y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h +(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g +(arith-)630 4835 y(metic)29 b(expression)f Fr(expr3)36 +b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g +(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 4945 y(if)i(it)h(ev)-5 b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32 b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630 -4452 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m +5055 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m (y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275 -4613 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h -(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(42\))g(ma)m(y) -150 4723 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 -4923 y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 -5095 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h -Ft(if)f Fu(command)g(is:)870 5230 y Ft(if)47 b Fj(test-commands)p -Ft(;)d(then)965 5340 y Fj(consequent-commands)p Ft(;)p +5230 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h +(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(43\))g(ma)m(y) +150 5340 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)p eop end %%Page: 11 17 TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)870 299 -y Ft([elif)46 b Fj(more-test-commands)p Ft(;)d(then)965 -408 y Fj(more-consequents)p Ft(;])870 518 y([else)j Fj -(alternate-consequents)p Ft(;])870 628 y(fi)630 757 y -Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)150 299 +y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 472 +y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(if)f +Fu(command)g(is:)870 608 y Ft(if)47 b Fj(test-commands)p +Ft(;)d(then)965 718 y Fj(consequent-commands)p Ft(;)870 +828 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965 +937 y Fj(more-consequents)p Ft(;])870 1047 y([else)j +Fj(alternate-consequents)p Ft(;])870 1156 y(fi)630 1292 +y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60 b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61 -b(the)630 867 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f +b(the)630 1402 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f (executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39 -b(a)h(non-zero)630 976 y(status,)45 b(eac)m(h)e Ft(elif)d +b(a)h(non-zero)630 1512 y(status,)45 b(eac)m(h)e Ft(elif)d Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f -(is)f(zero,)46 b(the)630 1086 y(corresp)s(onding)37 b +(is)f(zero,)46 b(the)630 1621 y(corresp)s(onding)37 b Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g -(completes.)63 b(If)630 1196 y(`)p Ft(else)29 b Fj +(completes.)63 b(If)630 1731 y(`)p Ft(else)29 b Fj (alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g -(\014nal)g(command)g(in)g(the)g(\014nal)630 1305 y Ft(if)44 +(\014nal)g(command)g(in)g(the)g(\014nal)630 1840 y Ft(if)44 b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j -(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1415 +(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1950 y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of) -g(the)g(last)g(command)g(executed,)630 1524 y(or)30 b(zero)i(if)e(no)g -(condition)h(tested)g(true.)150 1674 y Ft(case)288 b +g(the)g(last)g(command)g(executed,)630 2060 y(or)30 b(zero)i(if)e(no)g +(condition)h(tested)g(true.)150 2222 y Ft(case)288 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870 -1803 y Ft(case)47 b Fj(word)f Ft(in)h([)h([\(])f Fj(pattern)f +2358 y Ft(case)47 b Fj(word)f Ft(in)h([)h([\(])f Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))g Fj(command-list)e -Ft(;;]...)h(esac)630 1933 y(case)20 b Fu(will)i(selectiv)m(ely)j +Ft(;;]...)h(esac)630 2494 y(case)20 b Fu(will)i(selectiv)m(ely)j (execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 -b(to)i(the)g(\014rst)f Fr(pattern)630 2042 y Fu(that)42 -b(matc)m(hes)g Fr(w)m(ord)p Fu(.)73 b(If)41 b(the)g Ft(nocasematch)d -Fu(shell)j(option)h(\(see)g(the)g(description)f(of)630 -2152 y Ft(shopt)34 b Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f -(Builtin],)k(page)e(64\))g(is)g(enabled,)g(the)g(matc)m(h)g(is)630 -2262 y(p)s(erformed)29 b(without)i(regard)g(to)g(the)g(case)h(of)f -(alphab)s(etic)g(c)m(haracters.)44 b(The)30 b(`)p Ft(|)p -Fu(')h(is)g(used)630 2371 y(to)e(separate)g(m)m(ultiple)g(patterns,)g -(and)e(the)i(`)p Ft(\))p Fu(')f(op)s(erator)g(terminates)h(a)g(pattern) -f(list.)41 b(A)630 2481 y(list)31 b(of)g(patterns)f(and)g(an)g(asso)s -(ciated)i(command-list)f(is)f(kno)m(wn)g(as)h(a)g Fr(clause)p -Fu(.)630 2610 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h +b(to)i(the)g(\014rst)f Fr(pattern)630 2604 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 +2713 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(32.)39 b(If)23 b(the)h Ft(nocasematch)d +Fu(shell)j(op-)630 2823 y(tion)j(\(see)g(the)f(description)g(of)g +Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f +(65\))630 2933 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 +3042 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 3152 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 3261 y(kno)m(wn)e(as)g(a)h Fr(clause)p +Fu(.)630 3397 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h (with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630 -2720 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g -(command)f(substitution,)h(arithmetic)630 2829 y(expansion,)47 -b(and)d(quote)g(remo)m(v)-5 b(al)45 b(b)s(efore)f(matc)m(hing)h(is)f -(attempted.)82 b(Eac)m(h)45 b Fr(pattern)630 2939 y Fu(undergo)s(es)38 -b(tilde)h(expansion,)i(parameter)e(expansion,)i(command)d -(substitution,)j(and)630 3049 y(arithmetic)32 b(expansion.)630 -3178 y(There)e(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f(of)h -Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p -Ft(;;)p Fu(',)630 3288 y(`)p Ft(;&)p Fu(',)c(or)e(`)p +3507 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g +(command)f(substitution,)h(arithmetic)630 3617 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 3726 y(page)22 b(24\))g(b)s(efore)f(matc)m +(hing)h(is)g(attempted.)38 b(Eac)m(h)22 b Fr(pattern)g +Fu(undergo)s(es)e(tilde)i(expansion,)630 3836 y(parameter)31 +b(expansion,)f(command)g(substitution,)h(and)f(arithmetic)h(expansion.) +630 3972 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 4082 y(`)p Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h -(determines)e(the)h(command-list)g(that)630 3397 y(is)35 +(determines)e(the)h(command-list)g(that)630 4191 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630 -3507 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h -(matc)m(h.)630 3636 y(Here)j(is)g(an)g(example)h(using)e +4301 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h +(matc)m(h.)630 4437 y(Here)j(is)g(an)g(example)h(using)e Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h -(describ)s(e)g(one)630 3746 y(in)m(teresting)d(feature)f(of)f(an)g -(animal:)870 3875 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f -(animal:)f(")870 3985 y(read)h(ANIMAL)870 4095 y(echo)g(-n)g("The)f -($ANIMAL)g(has)h(")870 4204 y(case)g($ANIMAL)e(in)965 -4314 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 -4423 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 -4533 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870 -4643 y(esac)870 4752 y(echo)h(")g(legs.")630 4902 y Fu(If)25 +(describ)s(e)g(one)630 4546 y(in)m(teresting)d(feature)f(of)f(an)g +(animal:)870 4682 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f +(animal:)f(")870 4792 y(read)h(ANIMAL)870 4902 y(echo)g(-n)g("The)f +($ANIMAL)g(has)h(")870 5011 y(case)g($ANIMAL)e(in)965 +5121 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965 +5230 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965 +5340 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)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)870 299 +y Ft(esac)870 408 y(echo)47 b(")g(legs.")630 560 y Fu(If)25 b(the)h(`)p Ft(;;)p Fu(')g(op)s(erator)g(is)g(used,)g(no)g(subsequen)m (t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)f(\014rst)630 -5011 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p +669 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p Fu(')f(in)h(place)g(of)g(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)f -(con)m(tin)m(ue)h(with)f(the)630 5121 y Fr(command-list)39 +(con)m(tin)m(ue)h(with)f(the)630 779 y Fr(command-list)39 b Fu(asso)s(ciated)f(with)e(the)g(next)g(clause,)j(if)d(an)m(y)-8 b(.)59 b(Using)37 b(`)p Ft(;;&)p Fu(')f(in)g(place)h(of)630 -5230 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f +889 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f (patterns)g(in)f(the)h(next)g(clause,)h(if)e(an)m(y)-8 -b(,)31 b(and)f(execute)630 5340 y(an)m(y)h(asso)s(ciated)h -Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)p -eop end -%%Page: 12 18 -TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299 -y(The)26 b(return)f(status)h(is)g(zero)h(if)f(no)g Fr(pattern)g -Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e(status)630 -408 y(is)30 b(the)h(exit)g(status)g(of)f(the)h Fr(command-list)i -Fu(executed.)150 564 y Ft(select)630 697 y Fu(The)g Ft(select)f -Fu(construct)i(allo)m(ws)h(the)f(easy)g(generation)h(of)e(men)m(us.)50 -b(It)34 b(has)f(almost)i(the)630 806 y(same)c(syn)m(tax)g(as)f(the)h -Ft(for)e Fu(command:)870 939 y Ft(select)46 b Fj(name)h -Ft([in)g Fj(words)f Ft(...)o(];)h(do)h Fj(commands)p -Ft(;)d(done)630 1072 y Fu(The)25 b(list)h(of)f(w)m(ords)g(follo)m(wing) -i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)g(items.)39 -b(The)25 b(set)h(of)630 1181 y(expanded)i(w)m(ords)h(is)g(prin)m(ted)f -(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)g(preceded) -630 1291 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37 b(If)20 -b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j(the)d(p)s -(ositional)h(parameters)g(are)f(prin)m(ted,)630 1401 -y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s +b(,)31 b(and)f(execute)630 998 y(an)m(y)h(asso)s(ciated)h +Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)630 +1129 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 1238 y(is)30 b(the)h(exit)g(status)g(of)f(the)h +Fr(command-list)i Fu(executed.)150 1390 y Ft(select)630 +1520 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 +1630 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870 +1760 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 1891 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 2000 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 2110 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 +2219 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s (eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m -(ed)h(and)f(a)h(line)630 1510 y(is)h(read)f(from)h(the)f(standard)g +(ed)h(and)f(a)h(line)630 2329 y(is)h(read)f(from)h(the)f(standard)g (input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e -(corresp)s(onding)630 1620 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h +(corresp)s(onding)630 2438 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h (w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40 -b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 1729 +b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 2548 y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f (prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b -Ft(EOF)f Fu(is)h(read,)630 1839 y(the)c Ft(select)e Fu(command)i +Ft(EOF)f Fu(is)h(read,)630 2658 y(the)c Ft(select)e Fu(command)i (completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g -Fr(name)38 b Fu(to)c(b)s(e)e(set)630 1948 y(to)f(n)m(ull.)41 +Fr(name)38 b Fu(to)c(b)s(e)e(set)630 2767 y(to)f(n)m(ull.)41 b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5 -b(ariable)31 b Ft(REPLY)p Fu(.)630 2081 y(The)42 b Fr(commands)j +b(ariable)31 b Ft(REPLY)p Fu(.)630 2898 y(The)42 b Fr(commands)j Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h -Ft(break)d Fu(command)i(is)630 2191 y(executed,)32 b(at)f(whic)m(h)f(p) +Ft(break)d Fu(command)i(is)630 3007 y(executed,)32 b(at)f(whic)m(h)f(p) s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630 -2323 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f +3138 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f (to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630 -2433 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f -(index)f(of)i(the)g(\014le)f(selected.)870 2566 y Ft(select)46 -b(fname)g(in)i(*;)870 2675 y(do)870 2785 y(echo)f(you)g(picked)f -($fname)g(\\\($REPLY\\\))870 2894 y(break;)870 3004 y(done)150 -3160 y(\(\(...)o(\)\))870 3292 y(\(\()h Fj(expression)e -Ft(\)\))630 3425 y Fu(The)33 b(arithmetic)i Fr(expression)f +3247 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 3378 y Ft(select)46 +b(fname)g(in)i(*;)870 3487 y(do)870 3597 y(echo)f(you)g(picked)f +($fname)g(\\\($REPLY\\\))870 3707 y(break;)870 3816 y(done)150 +3968 y(\(\(...)o(\)\))870 4098 y(\(\()h Fj(expression)e +Ft(\)\))630 4228 y Fu(The)33 b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 b(according)g(to)f(the)g(rules)f(describ)s -(ed)g(b)s(elo)m(w)630 3535 y(\(see)j(Section)f(6.5)h([Shell)f -(Arithmetic],)i(page)f(89\).)55 b(If)34 b(the)h(v)-5 -b(alue)35 b(of)g(the)g(expression)g(is)630 3644 y(non-zero,)27 +(ed)g(b)s(elo)m(w)630 4338 y(\(see)j(Section)f(6.5)h([Shell)f +(Arithmetic],)i(page)f(91\).)55 b(If)34 b(the)h(v)-5 +b(alue)35 b(of)g(the)g(expression)g(is)630 4448 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f(the)g(return)e(status)i -(is)g(1.)39 b(This)25 b(is)g(exactly)630 3754 y(equiv)-5 -b(alen)m(t)32 b(to)870 3886 y Ft(let)47 b(")p Fj(expression)p -Ft(")630 4019 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f -(49,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e -Fu(builtin.)150 4175 y Ft([[...)o(]])870 4308 y([[)47 -b Fj(expression)e Ft(]])630 4440 y Fu(Return)25 b(a)h(status)f(of)h(0)g +(is)g(1.)39 b(This)25 b(is)g(exactly)630 4557 y(equiv)-5 +b(alen)m(t)32 b(to)870 4688 y Ft(let)47 b(")p Fj(expression)p +Ft(")630 4818 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f +(50,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e +Fu(builtin.)150 4969 y Ft([[...)o(]])870 5100 y([[)47 +b Fj(expression)e Ft(]])630 5230 y Fu(Return)25 b(a)h(status)f(of)h(0)g (or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5 b(aluation)27 -b(of)e(the)h(conditional)h(expres-)630 4550 y(sion)j +b(of)e(the)h(conditional)h(expres-)630 5340 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 b(are)i(comp)s(osed)f(of)g -(the)h(primaries)f(describ)s(ed)f(b)s(elo)m(w)h(in)630 -4659 y(Section)36 b(6.4)h([Bash)f(Conditional)g(Expressions],)h(page)f -(87.)57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630 -4769 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j(the)f(w)m -(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f Ft(]])p -Fu(;)i(tilde)630 4879 y(expansion,)e(parameter)g(and)f(v)-5 -b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630 -4988 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h -(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630 -5098 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p -Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j -(as)f(primaries.)630 5230 y(When)k(used)f(with)h Ft([[)p -Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g -(sort)g(lexicographically)j(using)d(the)630 5340 y(curren)m(t)30 -b(lo)s(cale.)p eop end +(the)h(primaries)f(describ)s(ed)f(b)s(elo)m(w)h(in)p +eop end %%Page: 13 19 TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)630 299 -y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p Ft(!=)p -Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e(righ)m(t) -h(of)g(the)g(op)s(erator)630 408 y(is)31 b(considered)g(a)h(pattern)f -(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s(ed)f(b)s -(elo)m(w)h(in)630 518 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m -(hing],)h(page)f(31,)g(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g -(w)m(ere)630 628 y(enabled.)46 b(The)31 b(`)p Ft(=)p -Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p Ft(==)p -Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 -737 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d +y(Section)36 b(6.4)h([Bash)f(Conditional)g(Expressions],)h(page)f(89.) +57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630 408 +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 +518 y(expansion,)e(parameter)g(and)f(v)-5 b(ariable)31 +b(expansion,)g(arithmetic)g(expansion,)g(command)630 +628 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 +737 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 878 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 988 y(curren)m(t)30 +b(lo)s(cale.)630 1129 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p +Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e +(righ)m(t)h(of)g(the)g(op)s(erator)630 1238 y(is)31 b(considered)g(a)h +(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s +(ed)f(b)s(elo)m(w)h(in)630 1348 y(Section)d(3.5.8.1)h([P)m(attern)f +(Matc)m(hing],)h(page)f(32,)g(as)f(if)g(the)g Ft(extglob)d +Fu(shell)j(option)g(w)m(ere)630 1457 y(enabled.)46 b(The)31 +b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p +Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 +1567 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 -b(page)d(64\))630 847 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s +b(page)d(65\))630 1677 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s (erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 -956 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 +1786 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p -Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 1066 y(\(`)p +Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 1896 y(\(`)p Ft(!=)p Fu('\)the)33 b(pattern,)g(and)f(1)g(otherwise.)47 b(An)m(y)32 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to) -630 1176 y(force)f(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) -h(as)g(a)f(string.)630 1316 y(An)j(additional)i(binary)e(op)s(erator,)i +630 2005 y(force)f(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed) +h(as)g(a)f(string.)630 2146 y(An)j(additional)i(binary)e(op)s(erator,)i (`)p Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g -(precedence)h(as)630 1426 y(`)p Ft(==)p Fu(')29 b(and)f(`)p +(precedence)h(as)630 2256 y(`)p Ft(==)p Fu(')29 b(and)f(`)p Ft(!=)p Fu('.)40 b(When)29 b(it)g(is)g(used,)f(the)h(string)g(to)h(the) e(righ)m(t)i(of)f(the)g(op)s(erator)g(is)g(consid-)630 -1536 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m +2365 y(ered)34 b(an)g(extended)g(regular)g(expression)g(and)f(matc)m (hed)i(accordingly)g(\(as)f(in)g Fl(r)-5 b(e)g(gex)11 -b Fu(3\)\).)630 1645 y(The)29 b(return)f(v)-5 b(alue)30 +b Fu(3\)\).)630 2475 y(The)29 b(return)f(v)-5 b(alue)30 b(is)g(0)g(if)f(the)h(string)g(matc)m(hes)g(the)g(pattern,)g(and)f(1)h -(otherwise.)41 b(If)29 b(the)630 1755 y(regular)e(expression)g(is)h +(otherwise.)41 b(If)29 b(the)630 2585 y(regular)e(expression)g(is)h (syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e -(return)630 1864 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39 +(return)630 2694 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39 b(the)h Ft(nocasematch)c Fu(shell)k(option)g(\(see)g(the)g(description) -g(of)f Ft(shopt)f Fu(in)630 1974 y(Section)32 b(4.3.2)g([The)f(Shopt)f -(Builtin],)i(page)g(64\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s -(erformed)630 2084 y(without)36 b(regard)g(to)h(the)f(case)h(of)f +g(of)f Ft(shopt)f Fu(in)630 2804 y(Section)32 b(4.3.2)g([The)f(Shopt)f +(Builtin],)i(page)g(65\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s +(erformed)630 2913 y(without)36 b(regard)g(to)h(the)f(case)h(of)f (alphab)s(etic)h(c)m(haracters.)59 b(An)m(y)36 b(part)g(of)h(the)f -(pattern)630 2193 y(ma)m(y)31 b(b)s(e)f(quoted)h(to)g(force)g(the)g +(pattern)630 3023 y(ma)m(y)31 b(b)s(e)f(quoted)h(to)g(force)g(the)g (quoted)g(p)s(ortion)f(to)h(b)s(e)f(matc)m(hed)h(as)g(a)g(string.)41 -b(Brac)m(k)m(et)630 2303 y(expressions)27 b(in)f(regular)i(expressions) +b(Brac)m(k)m(et)630 3133 y(expressions)27 b(in)f(regular)i(expressions) e(m)m(ust)h(b)s(e)g(treated)h(carefully)-8 b(,)29 b(since)e(normal)g -(quot-)630 2412 y(ing)38 b(c)m(haracters)h(lose)f(their)g(meanings)f(b) +(quot-)630 3242 y(ing)38 b(c)m(haracters)h(lose)f(their)g(meanings)f(b) s(et)m(w)m(een)h(brac)m(k)m(ets.)64 b(If)37 b(the)h(pattern)f(is)h -(stored)630 2522 y(in)33 b(a)i(shell)f(v)-5 b(ariable,)35 +(stored)630 3352 y(in)33 b(a)i(shell)f(v)-5 b(ariable,)35 b(quoting)f(the)g(v)-5 b(ariable)35 b(expansion)e(forces)i(the)f(en)m -(tire)g(pattern)g(to)630 2632 y(b)s(e)h(matc)m(hed)i(as)f(a)g(string.) +(tire)g(pattern)g(to)630 3461 y(b)s(e)h(matc)m(hed)i(as)f(a)g(string.) 56 b(Substrings)34 b(matc)m(hed)j(b)m(y)f(paren)m(thesized)g(sub)s -(expressions)630 2741 y(within)k(the)g(regular)g(expression)g(are)g(sa) +(expressions)630 3571 y(within)k(the)g(regular)g(expression)g(are)g(sa) m(v)m(ed)i(in)d(the)i(arra)m(y)f(v)-5 b(ariable)41 b -Ft(BASH_REMATCH)p Fu(.)630 2851 y(The)30 b(elemen)m(t)i(of)e +Ft(BASH_REMATCH)p Fu(.)630 3680 y(The)30 b(elemen)m(t)i(of)e Ft(BASH_REMATCH)d Fu(with)j(index)g(0)h(is)g(the)f(p)s(ortion)g(of)h -(the)f(string)h(matc)m(h-)630 2960 y(ing)j(the)g(en)m(tire)g(regular)g +(the)f(string)h(matc)m(h-)630 3790 y(ing)j(the)g(en)m(tire)g(regular)g (expression.)50 b(The)34 b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c -Fu(with)j(index)g Fr(n)630 3070 y Fu(is)d(the)h(p)s(ortion)f(of)g(the)h +Fu(with)j(index)g Fr(n)630 3900 y Fu(is)d(the)h(p)s(ortion)f(of)g(the)h (string)f(matc)m(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s -(expression.)630 3211 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i +(expression.)630 4041 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i (will)e(matc)m(h)h(a)g(line)f(\(stored)h(in)e(the)i(shell)f(v)-5 -b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 3320 y(there)22 +b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 4150 y(there)22 b(is)g(a)h(sequence)f(of)h(c)m(haracters)g(in)f(the)g(v)-5 b(alue)23 b(consisting)g(of)f(an)m(y)h(n)m(um)m(b)s(er,)f(including)630 -3430 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f +4260 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f (instances)h(of)g(`)p Ft(a)p Fu(',)f(then)g(a)h(`)p Ft(b)p -Fu(':)870 3571 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630 -3712 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p +Fu(':)870 4401 y Ft([[)47 b($line)g(=~)g([[:space:]]*?\(a\)b)c(]])630 +4542 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j -(as)d(will)g(a)g(line)g(con)m(taining)630 3821 y(a)31 +(as)d(will)g(a)g(line)g(con)m(taining)630 4651 y(a)31 b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630 -3962 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 +4792 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5 b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid) -630 4072 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) +630 4902 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp) s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630 -4181 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f +5011 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f (literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630 -4291 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g +5121 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g (expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630 -4401 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 +5230 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25 b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g -(decreases)g(these)630 4510 y(problems.)40 b(F)-8 b(or)31 +(decreases)g(these)630 5340 y(problems.)40 b(F)-8 b(or)31 b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32 -b(to)f(the)g(ab)s(o)m(v)m(e:)870 4651 y Ft(pattern='[[:space:]]*\(a\))o -(?b')870 4761 y([[)47 b($line)g(=~)g($pattern)e(]])630 -4902 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m -(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g -(gram-)630 5011 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m -(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g -(the)630 5121 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p -Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f -(\(its)h(usual)f(regular)630 5230 y(expression)g(meaning\),)i(but)e(in) -g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h) -i(a)e(literal)630 5340 y(`)p Ft(.)p Fu('.)56 b(Shell)35 -b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m -(kslashes,)i(since)f(bac)m(k-)p eop end +b(to)f(the)g(ab)s(o)m(v)m(e:)p eop end %%Page: 14 20 TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 -y(slashes)27 b(are)g(used)f(b)s(oth)g(b)m(y)h(the)f(shell)h(and)f +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)870 299 +y Ft(pattern='[[:space:]]*?\(a)o(\)b')870 408 y([[)47 +b($line)g(=~)g($pattern)e(]])630 543 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g +(to)g(matc)m(h)h(a)e(c)m(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g +(regular)f(expression)g(gram-)630 652 y(mar,)g(it)g(has)g(to)g(b)s(e)f +(quoted)h(to)g(remo)m(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 +b(This)27 b(means)g(that)h(in)g(the)630 762 y(pattern)e(`)p +Ft(xxx.txt)p Fu(',)g(the)h(`)p Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m +(haracter)i(in)e(the)h(string)f(\(its)h(usual)f(regular)630 +872 y(expression)g(meaning\),)i(but)e(in)g(the)h(pattern)f(`)p +Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h)i(a)e(literal)630 +981 y(`)p Ft(.)p Fu('.)56 b(Shell)35 b(programmers)f(should)h(tak)m(e)i +(sp)s(ecial)e(care)i(with)e(bac)m(kslashes,)i(since)f(bac)m(k-)630 +1091 y(slashes)27 b(are)g(used)f(b)s(oth)g(b)m(y)h(the)f(shell)h(and)f (regular)h(expressions)g(to)g(remo)m(v)m(e)h(the)f(sp)s(ecial)630 -408 y(meaning)h(from)f(the)h(follo)m(wing)i(c)m(haracter.)41 +1200 y(meaning)h(from)f(the)h(follo)m(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f(of)g(commands)g(are)630 -518 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 649 y Ft(pattern='\\.') -870 868 y([[)47 b(.)h(=~)f($pattern)e(]])870 978 y([[)i(.)h(=~)f(\\.)g -(]])870 1197 y([[)g(.)h(=~)f("$pattern")e(]])870 1307 -y([[)i(.)h(=~)f('\\.')f(]])630 1438 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h -(matc)m(hes)g(will)f(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f -(not,)h(b)s(ecause)f(in)g(the)630 1547 y(second)39 b(t)m(w)m(o)i(the)e -(bac)m(kslash)h(will)f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e -(matc)m(hed.)68 b(In)39 b(the)630 1657 y(\014rst)31 b(t)m(w)m(o)h -(examples,)h(the)e(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g -(meaning)f(from)g(`)p Ft(.)p Fu(',)h(so)g(the)630 1766 -y(literal)f(`)p Ft(.)p Fu(')e(matc)m(hes.)42 b(If)28 -b(the)i(string)f(in)g(the)g(\014rst)g(examples)g(w)m(ere)h(an)m(ything) -g(other)f(than)630 1876 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p -Ft(a)p Fu(',)g(the)f(pattern)g(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause) -e(the)g(quoted)g(`)p Ft(.)p Fu(')h(in)e(the)i(pattern)630 -1986 y(loses)i(its)g(sp)s(ecial)g(meaning)f(of)h(matc)m(hing)g(an)m(y)g -(single)g(c)m(haracter.)630 2116 y(Expressions)23 b(ma)m(y)h(b)s(e)e -(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f -(in)f(decreasing)630 2226 y(order)30 b(of)g(precedence:)630 -2378 y Ft(\()g Fj(expression)e Ft(\))1110 2488 y Fu(Returns)i(the)h(v) --5 b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 -b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)m(erride)g(the)1110 -2598 y(normal)e(precedence)h(of)g(op)s(erators.)630 2750 -y Ft(!)f Fj(expression)1110 2860 y Fu(T)-8 b(rue)30 b(if)g -Fr(expression)g Fu(is)h(false.)630 3012 y Fj(expression1)c -Ft(&&)j Fj(expression2)1110 3122 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g -Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31 -b(true.)630 3274 y Fj(expression1)c Ft(||)j Fj(expression2)1110 -3384 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 +1310 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 1444 y +Ft(pattern='\\.')870 1663 y([[)47 b(.)h(=~)f($pattern)e(]])870 +1773 y([[)i(.)h(=~)f(\\.)g(]])870 1992 y([[)g(.)h(=~)f("$pattern")e(]]) +870 2102 y([[)i(.)h(=~)f('\\.')f(]])630 2236 y Fu(The)28 +b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f(succeed,)h(but)f(the)g +(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f(in)g(the)630 +2346 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)f(b)s(e)g +(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68 +b(In)39 b(the)630 2455 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e +(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p +Ft(.)p Fu(',)h(so)g(the)630 2565 y(literal)f(`)p Ft(.)p +Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g +(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)630 +2675 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g +(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p +Ft(.)p Fu(')h(in)e(the)i(pattern)630 2784 y(loses)i(its)g(sp)s(ecial)g +(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630 +2919 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h +(follo)m(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630 +3028 y(order)30 b(of)g(precedence:)630 3187 y Ft(\()g +Fj(expression)e Ft(\))1110 3297 y Fu(Returns)i(the)h(v)-5 +b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e +(used)g(to)i(o)m(v)m(erride)g(the)1110 3406 y(normal)e(precedence)h(of) +g(op)s(erators.)630 3566 y Ft(!)f Fj(expression)1110 +3675 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630 +3834 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 3944 +y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38 +b Fu(and)29 b Fr(expression2)38 b Fu(are)31 b(true.)630 +4103 y Fj(expression1)c Ft(||)j Fj(expression2)1110 4213 +y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630 -3536 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g +4372 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g (ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5 -b(alue)25 b(of)g Fr(expression1)630 3646 y Fu(is)30 b(su\016cien)m(t)h +b(alue)25 b(of)g Fr(expression1)630 4481 y Fu(is)30 b(su\016cien)m(t)h (to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire) -g(conditional)h(expression.)150 3838 y Fk(3.2.4.3)63 -b(Grouping)43 b(Commands)150 3985 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m +g(conditional)h(expression.)150 4680 y Fk(3.2.4.3)63 +b(Grouping)43 b(Commands)150 4827 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m (o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e -(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 4094 +(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 4937 y(mands)h(are)i(group)s(ed,)f(redirections)h(ma)m(y)g(b)s(e)e(applied)i (to)g(the)f(en)m(tire)h(command)g(list.)44 b(F)-8 b(or)32 -b(example,)150 4204 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g +b(example,)150 5046 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g (the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.) -150 4356 y Ft(\(\))870 4487 y(\()47 b Fj(list)g Ft(\))630 -4618 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i -(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 -4728 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d -(Execution)i(En)m(vironmen)m(t],)g(page)f(37\),)630 4837 -y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j -Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 -b(the)f Fr(list)630 4947 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 -b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j -(after)e(the)630 5057 y(subshell)g(completes.)150 5209 -y Ft({})870 5340 y({)47 b Fj(list)p Ft(;)g(})p eop end +150 5206 y Ft(\(\))870 5340 y(\()47 b Fj(list)g Ft(\))p +eop end %%Page: 15 21 TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299 -y(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f +y(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i(paren)m +(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 +408 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d +(Execution)i(En)m(vironmen)m(t],)g(page)f(38\),)630 518 +y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j +Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 +b(the)f Fr(list)630 628 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 +b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j +(after)e(the)630 737 y(subshell)g(completes.)150 905 +y Ft({})870 1044 y({)47 b Fj(list)p Ft(;)g(})630 1183 +y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f (braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630 -408 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 +1292 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42 b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f -(newline\))630 518 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 -668 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j +(newline\))630 1402 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 +1574 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j (there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 -778 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 +1683 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40 -b(so)g(they)f(m)m(ust)150 887 y(b)s(e)d(separated)h(from)f(the)g +b(so)g(they)f(m)m(ust)150 1793 y(b)s(e)d(separated)h(from)f(the)g Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m -(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 997 +(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 1903 y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i (tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f -(separated)150 1107 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) -275 1236 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h +(separated)150 2012 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) +275 2155 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h (constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p -Fu(.)150 1426 y Fk(3.2.5)63 b(Copro)s(cesses)150 1573 +Fu(.)150 2363 y Fk(3.2.5)63 b(Copro)s(cesses)150 2510 y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m (y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 -b(copro)s(cess)h(is)150 1683 y(executed)g(async)m(hronously)g(in)f(a)h +b(copro)s(cess)h(is)150 2619 y(executed)g(async)m(hronously)g(in)f(a)h (subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i -(with)g(the)150 1793 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g +(with)g(the)150 2729 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g (with)f(a)g(t)m(w)m(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m -(een)h(the)f(executing)h(shell)f(and)f(the)150 1902 y(copro)s(cess.)275 -2032 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -2162 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g -Ft([)p Fj(redirections)p Ft(])150 2292 y Fu(This)39 b(creates)j(a)e +(een)h(the)f(executing)h(shell)f(and)f(the)150 2838 y(copro)s(cess.)275 +2981 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 +3124 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g +Ft([)p Fj(redirections)p Ft(])150 3267 y Fu(This)39 b(creates)j(a)e (copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46 b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150 -2401 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 +3377 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f -(command)g(\(see)i(Section)f(3.2.1)150 2511 y([Simple)39 +(command)g(\(see)i(Section)f(3.2.1)150 3486 y([Simple)39 b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h (as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150 -2621 y(command.)275 2750 y(When)j(the)i(copro)s(cess)f(is)g(executed,) +3596 y(command.)275 3739 y(When)j(the)i(copro)s(cess)f(is)g(executed,) 48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 -b(ariable)44 b(\(see)g(Section)g(6.7)150 2860 y([Arra)m(ys],)32 -b(page)g(91\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h +b(ariable)44 b(\(see)g(Section)g(6.7)150 3849 y([Arra)m(ys],)32 +b(page)g(93\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h (executing)g(shell.)44 b(The)31 b(standard)f(output)150 -2970 y(of)g Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)i -(a)f(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)f(and)g(that)g -(\014le)150 3079 y(descriptor)i(is)f(assigned)h(to)g -Ft(NAME)p Fu([0].)45 b(The)31 b(standard)g(input)f(of)i -Fr(command)j Fu(is)d(connected)h(via)f(a)g(pip)s(e)150 -3189 y(to)39 b(a)g(\014le)f(descriptor)g(in)g(the)g(executing)i(shell,) -g(and)e(that)h(\014le)f(descriptor)g(is)g(assigned)h(to)g -Ft(NAME)p Fu([1].)150 3298 y(This)31 b(pip)s(e)g(is)h(established)g(b)s -(efore)g(an)m(y)g(redirections)g(sp)s(eci\014ed)g(b)m(y)f(the)i -(command)e(\(see)i(Section)g(3.6)150 3408 y([Redirections],)25 -b(page)e(32\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f -(utilized)i(as)f(argumen)m(ts)h(to)f(shell)g(commands)150 -3518 y(and)33 b(redirections)g(using)g(standard)f(w)m(ord)h -(expansions.)49 b(The)33 b(\014le)g(descriptors)g(are)g(not)h(a)m(v)-5 -b(ailable)35 b(in)150 3627 y(subshells.)275 3757 y(The)27 -b(pro)s(cess)h(ID)h(of)f(the)h(shell)f(spa)m(wned)g(to)h(execute)h(the) -e(copro)s(cess)h(is)f(a)m(v)-5 b(ailable)31 b(as)d(the)h(v)-5 -b(alue)29 b(of)150 3867 y(the)k(v)-5 b(ariable)33 b Ft(NAME)p -850 3867 28 4 v 39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g -(ma)m(y)h(b)s(e)f(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 -3976 y(to)e(terminate.)275 4106 y(Since)20 b(the)g(copro)s(cess)h(is)g +3958 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to) +i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that) +150 4068 y(\014le)i(descriptor)h(is)f(assigned)h(to)g +Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g +Fr(command)k Fu(is)c(connected)h(via)150 4177 y(a)h(pip)s(e)f(to)i(a)f +(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h +(\014le)g(descriptor)g(is)g(assigned)g(to)150 4287 y +Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s +(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h +(command)g(\(see)150 4397 y(Section)45 b(3.6)h([Redirections],)k(page) +45 b(33\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized) +h(as)g(argumen)m(ts)150 4506 y(to)d(shell)g(commands)f(and)g +(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74 +b(Other)41 b(than)g(those)150 4616 y(created)27 b(to)g(execute)g +(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g +(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4725 +y(in)30 b(subshells.)275 4868 y(The)d(pro)s(cess)h(ID)h(of)f(the)h +(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5 +b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 4978 +y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 4978 28 4 v +39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f +(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5087 +y(to)e(terminate.)275 5230 y(Since)20 b(the)g(copro)s(cess)h(is)g (created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f -Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 4216 y(returns)29 +Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 5340 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f -(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 4406 -y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4553 y Fu(There)30 +(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)p eop end +%%Page: 16 22 +TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299 +y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 446 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e (not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150 -4662 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 4792 -y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g -(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150 -4902 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g +555 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 685 y(GNU)e(P)m +(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g(used)g(to)h +(build)f(and)g(run)f(commands)h(in)h(parallel.)150 795 +y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g (di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g -(\014lenames,)150 5011 y(usernames,)27 b(hostnames,)h(or)e(lines)h -(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d -(shorthand)g(references)150 5121 y(to)38 b(man)m(y)g(of)g(the)g(most)g -(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 -b(p)s(ortions)f(of)h(the)g(input)e(line,)150 5230 y(di\013eren)m(t)f(w) -m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).) -54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 -5340 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f -(di\013eren)m(t)g(instances)g(of)g(Bash.)p eop end -%%Page: 16 22 -TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299 -y(F)-8 b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g -(P)m(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 -408 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)g -(use.)275 541 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g +(\014lenames,)150 904 y(usernames,)27 b(hostnames,)h(or)e(lines)h(read) +f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d(shorthand)g +(references)150 1014 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op) +s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h +(the)g(input)e(line,)150 1123 y(di\013eren)m(t)f(w)m(a)m(ys)h(to)f(sp)s +(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).)54 +b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 +1233 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f +(di\013eren)m(t)g(instances)g(of)g(Bash.)275 1363 y(F)-8 +b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g(P)m +(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 +1472 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its) +g(use.)275 1602 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g (replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h -(the)f(curren)m(t)g(directory)150 650 y(and)30 b(its)h(sub)s -(directories:)390 783 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g -(-print)g(|)h(parallel)f(gzip)150 915 y Fu(If)30 b(y)m(ou)h(need)f(to)h -(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f -(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 1025 -y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 -1157 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h +(the)f(curren)m(t)g(directory)150 1711 y(and)30 b(its)h(sub)s +(directories:)390 1841 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html') +g(-print)g(|)h(parallel)f(gzip)150 1971 y Fu(If)30 b(y)m(ou)h(need)f +(to)h(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h +(in)f(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 +2080 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 +2210 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h (\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m -(b)s(er)e(of)i(\014les)150 1267 y(is)c(to)s(o)i(large)f(to)g(pro)s +(b)s(er)e(of)i(\014les)150 2320 y(is)c(to)s(o)i(large)f(to)g(pro)s (cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 -1399 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 -1532 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g +2449 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 +2579 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g(standard)g -(input.)39 b(While)29 b(using)150 1641 y Ft(ls)g Fu(will)h(w)m(ork)g +(input.)39 b(While)29 b(using)150 2688 y Ft(ls)g Fu(will)h(w)m(ork)g (in)f(most)h(instances,)h(it)f(is)g(not)g(su\016cien)m(t)g(to)h(deal)f (with)f(all)i(\014lenames.)40 b(If)30 b(y)m(ou)g(need)f(to)150 -1751 y(accommo)s(date)j(sp)s(ecial)f(c)m(haracters)h(in)e(\014lenames,) -h(y)m(ou)f(can)h(use)390 1883 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f +2798 y(accommo)s(date)j(sp)s(ecial)f(c)m(haracters)h(in)e(\014lenames,) +h(y)m(ou)f(can)h(use)390 2928 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f (-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(mv)g({})g(destdir)150 -2016 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 -2148 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h +3057 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 +3187 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h (there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8 -b(.)42 b(Y)-8 b(ou)31 b(can)150 2258 y(em)m(ulate)h(a)f(parallel)g +b(.)42 b(Y)-8 b(ou)31 b(can)150 3297 y(em)m(ulate)h(a)f(parallel)g Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390 -2390 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h -(parallel)f(-0)h(-X)g(mv)g({})g(destdir)275 2523 y Fu(GNU)31 +3426 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h +(parallel)f(-0)h(-X)g(mv)g({})g(destdir)275 3556 y Fu(GNU)31 b(P)m(arallel)i(can)e(replace)h(certain)g(common)g(idioms)f(that)g(op)s -(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 2632 +(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 3665 y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g(line\):) -390 2765 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 -2874 y(do-something1)d("$x")j("config-$x")390 2984 y(do-something2)d(<) -k("$x")390 3093 y(done)f(<)g(file)g(|)g(process-output)150 -3226 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g -(of)g(lam)m(b)s(das:)390 3358 y Ft(cat)47 b(list)g(|)g(parallel)f +390 3795 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 +3905 y(do-something1)d("$x")j("config-$x")390 4014 y(do-something2)d(<) +k("$x")390 4124 y(done)f(<)g(file)g(|)g(process-output)150 +4253 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g +(of)g(lam)m(b)s(das:)390 4383 y Ft(cat)47 b(list)g(|)g(parallel)f ("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)g -(process-output)275 3491 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h +(process-output)275 4513 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h (built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h(\014lename)e -(extensions,)i(whic)m(h)e(lends)g(itself)150 3600 y(to)i(batc)m(h)g -(\014le)g(transformations)f(or)g(renaming:)390 3733 y +(extensions,)i(whic)m(h)e(lends)g(itself)150 4622 y(to)i(batc)m(h)g +(\014le)g(transformations)f(or)g(renaming:)390 4752 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g -(>{.}.bz2)e(&&)j(rm)f({}")150 3865 y Fu(This)28 b(will)i(recompress)e +(>{.}.bz2)e(&&)j(rm)f({}")150 4882 y Fu(This)28 b(will)i(recompress)e (all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g -(ending)f(in)h(.gz)h(using)f(bzip2,)150 3975 y(running)37 +(ending)f(in)h(.gz)h(using)f(bzip2,)150 4991 y(running)37 b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66 b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c -Ft(find)g Fu(as)150 4084 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h +Ft(find)g Fu(as)150 5101 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h (the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m -(haracters.\))57 b(P)m(arallel)150 4194 y(can)31 b(tak)m(e)h(argumen)m +(haracters.\))57 b(P)m(arallel)150 5210 y(can)31 b(tak)m(e)h(argumen)m (ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also) -g(b)s(e)f(written)g(as)390 4326 y Ft(parallel)46 b("zcat)g({})h(|)h -(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 4459 -y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m -(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.) -150 4568 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 -4701 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h +g(b)s(e)f(written)g(as)390 5340 y Ft(parallel)46 b("zcat)g({})h(|)h +(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)p eop +end +%%Page: 17 23 +TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299 +y(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m(an) +m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.)150 +408 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 +543 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h (freenetproject.org;)d(})k(|)h(parallel)d(traceroute)150 -4833 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m +677 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m (v)m(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30 -b(the)g Ft(-k)g Fu(option)390 4966 y Ft({)47 b(echo)g(foss.org.my)e(;)i +b(the)g Ft(-k)g Fu(option)390 811 y Ft({)47 b(echo)g(foss.org.my)e(;)i (echo)g(debian.org;)e(echo)h(freenetproject.org;)d(})k(|)h(parallel)d -(-k)i(traceroute)150 5098 y Fu(will)31 b(ensure)e(that)i(the)g(output)f +(-k)i(traceroute)150 945 y Fu(will)31 b(ensure)e(that)i(the)g(output)f (of)g Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.) -275 5230 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i +275 1079 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i (run)d(a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar) -f(to)150 5340 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 +f(to)150 1189 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f -(\014lenames,)h(create)g(a)g(series)f(of)g(shell)p eop -end -%%Page: 17 23 -TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299 -y(commands)27 b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g -(list)g(of)g(commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29 -b(can)f(sp)s(eed)150 408 y(this)i(up.)40 b(Assuming)30 +(\014lenames,)h(create)g(a)g(series)f(of)g(shell)150 +1298 y(commands)24 b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h +(list)h(of)e(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 +b(can)f(sp)s(eed)150 1408 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h -(one)f(p)s(er)g(line,)390 540 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 -672 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h -(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) -150 781 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h -(jobs)f(at)h(a)g(time.)150 1016 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 1175 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +(one)f(p)s(er)g(line,)390 1542 y Ft(parallel)46 b(-j)h(10)g(<)g(file) +150 1676 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g +(the)h(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i +(an)150 1786 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f +(shell)h(jobs)f(at)h(a)g(time.)150 2026 y Fs(3.3)68 b(Shell)45 +b(F)-11 b(unctions)150 2185 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m (a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h -(single)g(name)g(for)150 1285 y(the)f(group.)55 b(They)35 +(single)g(name)g(for)150 2295 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 -1395 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e +2404 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e (list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150 -1504 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 +2514 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m -(text;)j(no)c(new)150 1614 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 1745 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 1877 y Fj(name)47 b Ft(\(\))g +(text;)j(no)c(new)150 2623 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m +(terpret)g(them.)275 2757 y(F)-8 b(unctions)30 b(are)h(declared)g +(using)f(this)g(syn)m(tax:)390 2892 y Fj(name)47 b Ft(\(\))g Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2008 y Fu(or)390 2140 y Ft(function)i Fj(name)g Ft([\(\)])h +3026 y Fu(or)390 3160 y Ft(function)i Fj(name)g Ft([\(\)])h Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2271 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f +3294 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f Fr(name)p Fu(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f -Ft(function)f Fu(is)h(optional.)49 b(If)150 2381 y(the)39 +Ft(function)f Fu(is)h(optional.)49 b(If)150 3403 y(the)39 b Ft(function)f Fu(reserv)m(ed)h(w)m(ord)g(is)g(supplied,)i(the)e (paren)m(theses)h(are)f(optional.)69 b(The)39 b Fr(b)s(o)s(dy)45 -b Fu(of)40 b(the)150 2491 y(function)h(is)h(the)g(comp)s(ound)e +b Fu(of)40 b(the)150 3513 y(function)h(is)h(the)g(comp)s(ound)e (command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.4)g([Comp) -s(ound)150 2600 y(Commands],)33 b(page)h(9\).)49 b(That)33 +s(ound)150 3623 y(Commands],)33 b(page)h(9\).)49 b(That)33 b(command)f(is)h(usually)g(a)g Fr(list)j Fu(enclosed)e(b)s(et)m(w)m (een)f Fi({)h Fu(and)e Fi(})p Fu(,)i(but)e(ma)m(y)150 -2710 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) +3732 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e -Fu(reserv)m(ed)150 2819 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m +Fu(reserv)m(ed)150 3842 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m (theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 -b Fr(comp)s(ound-)150 2929 y(command)39 b Fu(is)c(executed)h(whenev)m +b Fr(comp)s(ound-)150 3951 y(command)39 b Fu(is)c(executed)h(whenev)m (er)f Fr(name)41 b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h -(a)f(command.)56 b(When)35 b(the)150 3038 y(shell)d(is)h(in)f +(a)f(command.)56 b(When)35 b(the)150 4061 y(shell)d(is)h(in)f Fm(posix)f Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s -(de],)j(page)f(96\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 -3148 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e -(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(70\).)61 -b(An)m(y)150 3258 y(redirections)32 b(\(see)g(Section)h(3.6)f -([Redirections],)i(page)e(32\))h(asso)s(ciated)g(with)e(the)h(shell)f -(function)h(are)150 3367 y(p)s(erformed)d(when)g(the)i(function)f(is)g -(executed.)275 3499 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f +(de],)j(page)f(98\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 +4171 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e +(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(71\).)61 +b(An)m(y)150 4280 y(redirections)32 b(\(see)g(Section)h(3.6)f +([Redirections],)i(page)e(33\))h(asso)s(ciated)g(with)e(the)h(shell)f +(function)h(are)150 4390 y(p)s(erformed)d(when)g(the)i(function)f(is)g +(executed.)275 4524 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f (deleted)h(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g -Ft(unset)e Fu(builtin)h(\(see)150 3608 y(Section)31 b(4.1)h([Bourne)e -(Shell)g(Builtins],)h(page)h(42\).)275 3740 y(The)26 +Ft(unset)e Fu(builtin)h(\(see)150 4633 y(Section)31 b(4.1)h([Bourne)e +(Shell)g(Builtins],)h(page)h(43\).)275 4768 y(The)26 b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h (unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 -3849 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 +4877 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 -3959 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) -i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4091 y(Note)22 b(that)f(for)f +4987 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) +i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 5121 y(Note)22 b(that)f(for)f (historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g -(curly)f(braces)h(that)g(surround)150 4200 y(the)38 b(b)s(o)s(dy)d(of)j +(curly)f(braces)h(that)g(surround)150 5230 y(the)38 b(b)s(o)s(dy)d(of)j (the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s (dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 -4310 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m +5340 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m (ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i -(are)150 4419 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e -(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 -b(Also,)28 b(when)150 4529 y(using)i(the)g(braces,)h(the)g -Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) -e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 4660 y(When)i(a)i(function)f -(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) -g(the)h(p)s(ositional)g(pa-)150 4770 y(rameters)42 b(during)e(its)i +(are)p eop end +%%Page: 18 24 +TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299 +y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e(whitespace)h(or) +g(another)g(shell)g(metac)m(haracter.)41 b(Also,)28 b(when)150 +408 y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g +(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p Ft(&)p +Fu(',)h(or)g(a)f(newline.)275 548 y(When)i(a)i(function)f(is)g +(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)g +(the)h(p)s(ositional)g(pa-)150 658 y(rameters)42 b(during)e(its)i (execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m -(arameters],)i(page)c(19\).)75 b(The)150 4880 y(sp)s(ecial)37 +(arameters],)i(page)c(20\).)75 b(The)150 767 y(sp)s(ecial)37 b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b) s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150 -4989 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 +877 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 -b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 5099 +b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 986 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h (function)f(while)g(the)h(function)f(is)g(executing.)275 -5230 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) +1126 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g -(and)150 5340 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +(and)150 1235 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f -(inherited)f(unless)h(the)p eop end -%%Page: 18 24 -TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299 -y(function)26 b(has)g(b)s(een)f(giv)m(en)i(the)g Ft(trace)d -Fu(attribute)j(using)f(the)g Ft(declare)e Fu(builtin)i(or)g(the)h -Ft(-o)i(functrace)150 408 y Fu(option)f(has)e(b)s(een)h(enabled)g(with) -g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f -(functions)e(inherit)h(the)g Ft(DEBUG)150 518 y Fu(and)33 -b Ft(RETURN)f Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g -(inherited)f(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 -628 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f -(Shell)g(Builtins],)i(page)f(42,)i(for)c(the)i(description)f(of)150 -737 y(the)c Ft(trap)e Fu(builtin.)275 885 y(The)38 b -Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f -(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 -995 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +(inherited)f(unless)h(the)150 1345 y(function)26 b(has)g(b)s(een)f(giv) +m(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g +Ft(declare)e Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 +1455 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g +Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e +(inherit)h(the)g Ft(DEBUG)150 1564 y Fu(and)33 b Ft(RETURN)f +Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f +(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 +1674 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f +(Shell)g(Builtins],)i(page)f(43,)i(for)c(the)i(description)f(of)150 +1783 y(the)c Ft(trap)e Fu(builtin.)275 1923 y(The)38 +b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric) +f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 +2032 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g -(en)m(tire)g(command)150 1105 y(to)31 b(ab)s(ort.)275 -1253 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +(en)m(tire)g(command)150 2142 y(to)31 b(ab)s(ort.)275 +2281 y(If)37 b(the)g(builtin)g(command)h Ft(return)d Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 1362 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(and)150 2391 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f (after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s -(ciated)150 1472 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +(ciated)150 2501 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 1581 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(completes,)150 2610 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p -Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 1691 y(v)-5 +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2720 y(v)-5 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g -Ft(return)p Fu(,)150 1801 y(that)j(is)g(the)f(function's)h(return)e +Ft(return)p Fu(,)150 2829 y(that)j(is)g(the)f(function's)h(return)e (status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h -(exit)h(status)150 1910 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 2058 y(V)-8 b(ariables)31 +(exit)h(status)150 2939 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 3078 y(V)-8 b(ariables)31 b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f (the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -2168 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g -(commands)g(it)h(in)m(v)m(ok)m(es.)275 2316 y(F)-8 b(unction)51 +3188 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i +(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h +(imp)s(ortan)m(t)150 3298 y(when)j(a)i(shell)g(function)f(calls)h +(other)g(functions.)275 3437 y(Lo)s(cal)41 b(v)-5 b(ariables)42 +b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42 +b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150 +3547 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 +b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5 +b(ariable)41 b(of)g(the)g(same)150 3656 y(name:)59 b(references)40 +b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5 +b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150 +3766 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the) +g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)275 +3905 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b +Fu(to)32 b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h +(within)d(functions.)42 b(With)150 4015 y(dynamic)31 +b(scoping,)i(visible)e(v)-5 b(ariables)32 b(and)f(their)h(v)-5 +b(alues)32 b(are)f(a)h(result)g(of)f(the)h(sequence)g(of)f(function)150 +4125 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g +(curren)m(t)f(function.)58 b(The)36 b(v)-5 b(alue)36 +b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 4234 y(function)24 +b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 b(alue)25 b(within)e(its)i +(caller,)i(if)d(an)m(y)-8 b(,)26 b(whether)e(that)g(caller)i(is)e(the)g +Ft(")p Fu(global)p Ft(")150 4344 y Fu(scop)s(e)41 b(or)g(another)g +(shell)g(function.)73 b(This)40 b(is)h(also)h(the)f(v)-5 +b(alue)41 b(that)h(a)f(lo)s(cal)i(v)-5 b(ariable)41 b(declaration)150 +4453 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5 +b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)275 +4593 y(F)-8 b(or)41 b(example,)j(if)d(a)g(v)-5 b(ariable)41 +b Fr(v)-5 b(ar)48 b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f +(function)f Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 +4702 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h +Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39 +b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 4812 +y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b +Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5 +b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 4951 y(The)29 +b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 +b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390 +5091 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390 +5230 y(func1\(\))390 5340 y({)p eop end +%%Page: 19 25 +TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)581 299 +y Ft(local)46 b(var='func1)f(local')581 408 y(func2)390 +518 y(})390 737 y(func2\(\))390 847 y({)581 956 y(echo)i("In)f(func2,)h +(var)f(=)i($var")390 1066 y(})390 1285 y(var=global)390 +1395 y(func1)275 1526 y Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i +(acts)g(using)e(the)i(same)f(dynamic)g(scop)s(e:)46 b(if)33 +b(a)g(v)-5 b(ariable)34 b(is)f(lo)s(cal)h(to)g(the)150 +1636 y(curren)m(t)i(scop)s(e,)h Ft(unset)e Fu(will)h(unset)g(it;)j +(otherwise)e(the)f(unset)f(will)h(refer)g(to)h(the)f(v)-5 +b(ariable)37 b(found)d(in)150 1745 y(an)m(y)j(calling)h(scop)s(e)f(as)g +(describ)s(ed)f(ab)s(o)m(v)m(e.)61 b(If)36 b(a)h(v)-5 +b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s(cal)h(scop)s(e)e(is)h +(unset,)h(it)150 1855 y(will)27 b(remain)h(so)f(un)m(til)g(it)h(is)f +(reset)h(in)f(that)g(scop)s(e)h(or)f(un)m(til)g(the)h(function)e +(returns.)39 b(Once)27 b(the)g(function)150 1965 y(returns,)34 +b(an)m(y)h(instance)g(of)f(the)g(v)-5 b(ariable)35 b(at)g(a)g(previous) +e(scop)s(e)i(will)f(b)s(ecome)h(visible.)52 b(If)34 b(the)g(unset)150 +2074 y(acts)e(on)f(a)h(v)-5 b(ariable)32 b(at)g(a)f(previous)g(scop)s +(e,)h(an)m(y)f(instance)h(of)f(a)h(v)-5 b(ariable)32 +b(with)f(that)h(name)f(that)h(had)150 2184 y(b)s(een)e(shado)m(w)m(ed)g +(will)h(b)s(ecome)g(visible.)275 2315 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2426 y +Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2425 y Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g -(4.2)g([Bash)f(Builtins],)i(page)f(49\).)59 b(The)35 +(4.2)g([Bash)f(Builtins],)i(page)f(50\).)59 b(The)35 b Ft(-F)h Fu(option)g(to)150 2535 y Ft(declare)e Fu(or)i Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g -(optionally)h(the)f(source)g(\014le)h(and)150 2645 y(line)c(n)m(um)m(b) +(optionally)h(the)f(source)g(\014le)h(and)150 2644 y(line)c(n)m(um)m(b) s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 2754 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f (with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d -Fu(builtin)i(\(see)150 2864 y(Section)c(4.1)g([Bourne)f(Shell)g -(Builtins],)i(page)f(42\).)47 b(Note)33 b(that)g(shell)f(functions)g -(and)f(v)-5 b(ariables)33 b(with)150 2973 y(the)d(same)g(name)g(ma)m(y) -g(result)g(in)g(m)m(ultiple)g(iden)m(tically-named)i(en)m(tries)f(in)e -(the)h(en)m(vironmen)m(t)g(passed)150 3083 y(to)h(the)g(shell's)f(c)m -(hildren.)41 b(Care)30 b(should)g(b)s(e)f(tak)m(en)j(in)e(cases)h -(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3231 -y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 -b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g -(to)i(limit)g(the)f(depth)f(of)150 3341 y(the)27 b(function)f(call)i -(stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f -(in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150 -3450 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f -(calls.)150 3711 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -3871 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +Fu(builtin)i(\(see)150 2863 y(Section)31 b(4.1)h([Bourne)e(Shell)g +(Builtins],)h(page)h(43\).)275 2995 y(F)-8 b(unctions)33 +b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f +Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g(to)i(limit)g(the)f +(depth)f(of)150 3104 y(the)27 b(function)f(call)i(stac)m(k)h(and)d +(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f(in)m(v)m(o)s +(cations.)42 b(By)27 b(default,)g(no)g(limit)150 3214 +y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 3449 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +3608 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 3980 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 +(ecial)150 3718 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)g Fr(v)-5 b(alue)150 4090 y Fu(and)33 b(zero)i(or)f(more)g +b(has)f(a)g Fr(v)-5 b(alue)150 3827 y Fu(and)33 b(zero)i(or)f(more)g Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g -(the)g Ft(declare)e Fu(builtin)h(command)150 4200 y(\(see)e(the)g +(the)g Ft(declare)e Fu(builtin)h(command)150 3937 y(\(see)e(the)g (description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(49\).)275 4348 y(A)d(parameter)h(is)g +g([Bash)g(Builtins],)g(page)g(50\).)275 4069 y(A)d(parameter)h(is)g (set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 -b(alid)28 b(v)-5 b(alue.)41 b(Once)150 4457 y(a)31 b(v)-5 +b(alid)28 b(v)-5 b(alue.)41 b(Once)150 4178 y(a)31 b(v)-5 b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f -(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4605 +(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4310 y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h -(statemen)m(t)h(of)e(the)h(form)390 4754 y Fj(name)p -Ft(=[)p Fj(value)p Ft(])150 4902 y Fu(If)j Fr(v)-5 b(alue)40 +(statemen)m(t)h(of)e(the)h(form)390 4441 y Fj(name)p +Ft(=[)p Fj(value)p Ft(])150 4573 y Fu(If)j Fr(v)-5 b(alue)40 b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35 b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35 b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150 -5011 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 +4682 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 -5121 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) +4792 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) 72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e -Fu(attribute)i(set,)j(then)150 5230 y Fr(v)-5 b(alue)38 +Fu(attribute)i(set,)j(then)150 4902 y Fr(v)-5 b(alue)38 b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f (ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g -(used)150 5340 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f -(page)h(29\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s -(erformed,)f(with)p eop end -%%Page: 19 25 -TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 -y(the)35 b(exception)h(of)f Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.) -54 b(Filename)36 b(expansion)f(is)g(not)g(p)s(erformed.)53 -b(Assign-)150 408 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s -(ear)f(as)g(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e -Ft(declare)p Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 -518 y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g -(\()p Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f -Fm(posix)f Fu(mo)s(de)150 628 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX) -d(Mo)s(de],)j(page)f(96\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e -(in)g(a)h(command)150 737 y(after)i(one)g(or)f(more)h(instances)g(of)f -(the)h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g -(statemen)m(t)150 847 y(prop)s(erties.)275 994 y(In)29 +(used)150 5011 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f +(page)h(30\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s +(erformed,)f(with)150 5121 y(the)35 b(exception)h(of)f +Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36 +b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150 +5230 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g +(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p +Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 5340 +y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p +Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f +Fu(mo)s(de)p eop end +%%Page: 20 26 +TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 +y(\(see)33 b(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s(de],)j(page)f(98\),) +i(these)e(builtins)f(ma)m(y)i(app)s(ear)e(in)g(a)h(command)150 +408 y(after)i(one)g(or)f(more)h(instances)g(of)f(the)h +Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g +(statemen)m(t)150 518 y(prop)s(erties.)275 645 y(In)29 b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e (assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 -b(ariable)31 b(or)150 1104 y(arra)m(y)24 b(index)f(\(see)h(Section)g -(6.7)g([Arra)m(ys],)i(page)e(91\),)i(the)e(`)p Ft(+=)p +b(ariable)31 b(or)150 755 y(arra)m(y)24 b(index)f(\(see)h(Section)g +(6.7)g([Arra)m(ys],)i(page)e(93\),)i(the)e(`)p Ft(+=)p Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)150 -1213 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 +865 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g -(commands)f(suc)m(h)h(as)150 1323 y Ft(declare)e Fu(that)i(accept)h +(commands)f(suc)m(h)h(as)150 974 y Ft(declare)e Fu(that)i(accept)h (assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150 -1433 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h +1084 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g -(arithmetic)150 1542 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 +(arithmetic)150 1193 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h (ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150 -1652 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 +1303 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m -(ys],)h(page)f(91\),)150 1761 y(the)33 b(v)-5 b(ariable's)33 +(ys],)h(page)f(93\),)150 1413 y(the)33 b(v)-5 b(ariable's)33 b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i (`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e -(to)150 1871 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h +(to)150 1522 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h (than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra) -m(ys\),)j(or)150 1980 y(added)c(as)i(additional)g(k)m(ey-v)-5 +m(ys\),)j(or)150 1632 y(added)c(as)i(additional)g(k)m(ey-v)-5 b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150 -2090 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 +1741 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32 -b(v)-5 b(alue.)275 2237 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f +b(v)-5 b(alue.)275 1869 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f (assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150 -2347 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h -([Bash)f(Builtins],)h(page)f(49\))h(to)f(create)i(a)e -Fr(nameref)p Fu(,)g(or)g(a)150 2457 y(reference)f(to)g(another)f(v)-5 +1978 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h +([Bash)f(Builtins],)h(page)f(50\))h(to)f(create)i(a)e +Fr(nameref)p Fu(,)g(or)g(a)150 2088 y(reference)f(to)g(another)f(v)-5 b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26 b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150 -2566 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g +2197 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g (assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed) -f(\(other)150 2676 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f +f(\(other)150 2307 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f (attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h -(p)s(erformed)d(on)150 2785 y(the)31 b(v)-5 b(ariable)31 +(p)s(erformed)d(on)150 2417 y(the)31 b(v)-5 b(ariable)31 b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31 b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150 -2895 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 +2526 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to) -g(the)f(function.)150 3005 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 +g(the)f(function.)150 2636 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h -(its)f(\014rst)g(argumen)m(t,)h(running)390 3152 y Ft(declare)46 -b(-n)h(ref=$1)150 3299 y Fu(inside)31 b(the)h(function)f(creates)i(a)g +(its)f(\014rst)g(argumen)m(t,)h(running)390 2763 y Ft(declare)46 +b(-n)h(ref=$1)150 2890 y Fu(inside)31 b(the)h(function)f(creates)i(a)g (nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32 b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 -3409 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 +3000 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g -(its)f(attributes,)i(are)150 3518 y(treated)g(as)f(references,)g +(its)f(attributes,)i(are)150 3110 y(treated)g(as)f(references,)g (assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v) --5 b(ariable)30 b(whose)g(name)150 3628 y(w)m(as)h(passed)f(as)g -Ft($1)p Fu(.)275 3775 y(If)h(the)g(con)m(trol)i(v)-5 +-5 b(ariable)30 b(whose)g(name)150 3219 y(w)m(as)h(passed)f(as)g +Ft($1)p Fu(.)275 3347 y(If)h(the)g(con)m(trol)i(v)-5 b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h (attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150 -3885 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f +3456 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f (reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in) -h(the)g(list,)150 3995 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g +h(the)g(list,)150 3566 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g (executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e -(giv)m(en)h(the)g(nameref)g(attribute.)150 4104 y(Ho)m(w)m(ev)m(er,)39 +(giv)m(en)h(the)g(nameref)g(attribute.)150 3675 y(Ho)m(w)m(ev)m(er,)39 b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5 b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150 -4214 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h +3785 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section) -g(4.1)h([Bourne)150 4323 y(Shell)43 b(Builtins],)j(page)e(42\).)79 +g(4.1)h([Bourne)150 3894 y(Shell)43 b(Builtins],)j(page)e(43\).)79 b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name) -g(of)g(a)g(nameref)150 4433 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m +g(of)g(a)g(nameref)150 4004 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m (t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v) --5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 4645 y Fk(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 4792 y Fu(A)28 +-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 4189 y Fk(3.4.1)63 +b(P)m(ositional)41 b(P)m(arameters)150 4336 y Fu(A)28 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted) g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150 -4902 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) +4446 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in) -m(v)m(ok)m(ed,)150 5011 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) +m(v)m(ok)m(ed,)150 4555 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 -b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 5121 y(referenced)34 +b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4665 y(referenced)34 b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 -b(parameters)d(ma)m(y)150 5230 y(not)j(b)s(e)f(assigned)h(to)g(with)f +b(parameters)d(ma)m(y)150 4774 y(not)j(b)s(e)f(assigned)h(to)g(with)f (assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150 -5340 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h -(Builtin)g(Commands],)h(page)f(42\).)68 b(The)39 b(p)s(ositional)p -eop end -%%Page: 20 26 -TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 -y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h(shell)g -(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 -408 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 -540 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +4884 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +(Builtin)g(Commands],)h(page)f(43\).)68 b(The)39 b(p)s(ositional)150 +4993 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h +(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 +5103 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 +5230 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f (than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150 -650 y(b)s(e)h(enclosed)h(in)f(braces.)150 844 y Fk(3.4.2)63 -b(Sp)s(ecial)41 b(P)m(arameters)150 991 y Fu(The)d(shell)g(treats)h -(sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38 -b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150 -1101 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 -1255 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h +5340 y(b)s(e)h(enclosed)h(in)f(braces.)p eop end +%%Page: 21 27 +TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 +y Fk(3.4.2)63 b(Sp)s(ecial)41 b(P)m(arameters)150 446 +y Fu(The)d(shell)g(treats)h(sev)m(eral)g(parameters)f(sp)s(ecially)-8 +b(.)65 b(These)38 b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;) +150 555 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 +722 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h (parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630 -1365 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s -(ositional)f(parameter)g(expands)f(to)i(a)630 1474 y(separate)e(w)m +831 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s +(ositional)f(parameter)g(expands)f(to)i(a)630 941 y(separate)e(w)m (ord.)56 b(In)35 b(con)m(texts)i(where)e(it)h(is)g(p)s(erformed,)g -(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1584 +(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1051 y(further)h(w)m(ord)h(splitting)h(and)f(pathname)g(expansion.)61 -b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1694 y(within)25 +b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1160 y(within)25 b(double)h(quotes,)h(it)f(expands)f(to)i(a)f(single)g(w)m(ord)f(with)h -(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1803 +(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1270 y(eter)32 b(separated)h(b)m(y)e(the)h(\014rst)f(c)m(haracter)i(of)f (the)g Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)45 b(That)32 -b(is,)g Ft("$*")630 1913 y Fu(is)f(equiv)-5 b(alen)m(t)32 +b(is,)g Ft("$*")630 1379 y Fu(is)f(equiv)-5 b(alen)m(t)32 b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)f(where)g Fr(c)37 b Fu(is)31 b(the)g(\014rst)f(c)m(haracter)j(of)e(the)g(v)-5 -b(alue)32 b(of)f(the)630 2022 y Ft(IFS)e Fu(v)-5 b(ariable.)41 +b(alue)32 b(of)f(the)630 1489 y Ft(IFS)e Fu(v)-5 b(ariable.)41 b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated) -g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2132 +g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1599 y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m -(ening)i(separators.)150 2286 y Ft(@)432 b Fu(\($@\))35 +(ening)i(separators.)150 1763 y Ft(@)432 b Fu(\($@\))35 b(Expands)e(to)i(the)g(p)s(ositional)g(parameters,)h(starting)f(from)f -(one.)53 b(When)34 b(the)g(ex-)630 2396 y(pansion)41 +(one.)53 b(When)34 b(the)g(ex-)630 1872 y(pansion)41 b(o)s(ccurs)g(within)f(double)h(quotes,)k(eac)m(h)d(parameter)g -(expands)e(to)i(a)g(separate)630 2506 y(w)m(ord.)50 b(That)34 +(expands)e(to)i(a)g(separate)630 1982 y(w)m(ord.)50 b(That)34 b(is,)g Ft("$@")f Fu(is)g(equiv)-5 b(alen)m(t)35 b(to)g Ft("$1")29 b("$2")g(...)o Fu(.)51 b(If)33 b(the)h(double-quoted)f(ex-) -630 2615 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e +630 2091 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e (expansion)g(of)g(the)g(\014rst)f(parameter)h(is)g(joined)630 -2725 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m -(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2834 +2201 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m +(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2311 y(parameter)31 b(is)f(joined)g(with)f(the)i(last)g(part)e(of)i(the)f (original)h(w)m(ord.)40 b(When)30 b(there)h(are)f(no)630 -2944 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h +2420 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h Ft($@)f Fu(expand)h(to)h(nothing)f(\(i.e.,)j(they)e(are)f(remo)m(v)m -(ed\).)150 3098 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m +(ed\).)150 2584 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m (um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150 -3253 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) +2748 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630 -3362 y(pip)s(eline.)150 3517 y Ft(-)432 b Fu(\($-,)24 +2858 y(pip)s(eline.)150 3022 y Ft(-)432 b Fu(\($-,)24 b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f (\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630 -3626 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i +3132 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i (set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g -Ft(-i)630 3736 y Fu(option\).)150 3890 y Ft($)432 b Fu(\($$\))31 +Ft(-i)630 3241 y Fu(option\).)150 3405 y Ft($)432 b Fu(\($$\))31 b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 -4000 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g -(not)g(the)f(subshell.)150 4154 y Ft(!)432 b Fu(\($!\))51 +3515 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g +(not)g(the)f(subshell.)150 3679 y Ft(!)432 b Fu(\($!\))51 b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f (most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 -4264 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f +3789 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f (command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630 -4374 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g -(page)h(101\).)150 4528 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) +3898 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g +(page)h(103\).)150 4062 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 -b(is)g(set)h(at)h(shell)630 4638 y(initialization.)d(If)27 +b(is)g(set)h(at)h(shell)630 4172 y(initialization.)d(If)27 b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g -(\(see)g(Section)h(3.8)g([Shell)630 4747 y(Scripts],)g(page)g(40\),)h +(\(see)g(Section)h(3.8)g([Shell)630 4281 y(Scripts],)g(page)g(41\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41 -b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4857 y +b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4391 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g -(page)f(82\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 -4966 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i +(page)f(84\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 +4501 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i (if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 -5076 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f -(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 5230 -y Ft(_)432 b Fu(\($)p 716 5230 28 4 v 41 w(,)41 b(an)e(underscore.\))67 +4610 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f +(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 4774 +y Ft(_)432 b Fu(\($)p 716 4774 28 4 v 41 w(,)41 b(an)e(underscore.\))67 b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the)f(absolute)h(pathname)f -(used)f(to)630 5340 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g +(used)f(to)630 4884 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g (script)g(b)s(eing)f(executed)i(as)f(passed)g(in)f(the)h(en)m(vironmen) -m(t)p eop end -%%Page: 21 27 -TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299 -y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 +m(t)630 4994 y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous) -630 408 y(command,)g(after)f(expansion.)48 b(Also)34 +630 5103 y(command,)g(after)f(expansion.)48 b(Also)34 b(set)g(to)f(the)g(full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac) -m(h)630 518 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m +m(h)630 5213 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m (vironmen)m(t)f(exp)s(orted)g(to)h(that)g(command.)630 -628 y(When)g(c)m(hec)m(king)i(mail,)g(this)e(parameter)h(holds)f(the)g -(name)h(of)f(the)h(mail)g(\014le.)150 878 y Fs(3.5)68 -b(Shell)45 b(Expansions)150 1037 y Fu(Expansion)27 b(is)i(p)s(erformed) -d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)s(een)f(split)h(in)m -(to)i Ft(token)p Fu(s.)38 b(There)28 b(are)150 1147 y(sev)m(en)j(kinds) -e(of)i(expansion)f(p)s(erformed:)225 1287 y Fq(\017)60 -b Fu(brace)31 b(expansion)225 1425 y Fq(\017)60 b Fu(tilde)31 -b(expansion)225 1562 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 -b(ariable)31 b(expansion)225 1700 y Fq(\017)60 b Fu(command)30 -b(substitution)225 1837 y Fq(\017)60 b Fu(arithmetic)32 -b(expansion)225 1975 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 -2112 y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 -2281 y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 +5322 y(When)g(c)m(hec)m(king)i(mail,)g(this)e(parameter)h(holds)f(the)g +(name)h(of)f(the)h(mail)g(\014le.)p eop end +%%Page: 22 28 +TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 +y Fs(3.5)68 b(Shell)45 b(Expansions)150 458 y Fu(Expansion)27 +b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b) +s(een)f(split)h(in)m(to)i Ft(token)p Fu(s.)38 b(There)28 +b(are)150 568 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225 +701 y Fq(\017)60 b Fu(brace)31 b(expansion)225 834 y +Fq(\017)60 b Fu(tilde)31 b(expansion)225 967 y Fq(\017)60 +b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225 +1100 y Fq(\017)60 b Fu(command)30 b(substitution)225 +1233 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 +1366 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 1499 +y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 1655 +y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5 -b(ariable)26 b(ex-)150 2391 y(pansion,)j(arithmetic)i(expansion,)f(and) +b(ariable)26 b(ex-)150 1765 y(pansion,)j(arithmetic)i(expansion,)f(and) f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k -(fashion\);)150 2500 y(w)m(ord)d(splitting;)h(and)f(\014lename)h -(expansion.)275 2641 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) +(fashion\);)150 1874 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 2007 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) 47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m(v)-5 -b(ailable:)69 b Fr(pro)s(cess)150 2750 y(substitution)p +b(ailable:)69 b Fr(pro)s(cess)150 2117 y(substitution)p Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g (tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 -2860 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -3001 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +2226 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +2359 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m (haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150 -3110 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +2469 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g (themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275 -3251 y(Only)35 b(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d -(\014lename)g(expansion)g(can)h(c)m(hange)h(the)e(n)m(um)m(b)s(er)150 -3360 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f -(expand)g(a)h(single)g(w)m(ord)f(to)h(a)g(single)g(w)m(ord.)58 -b(The)150 3470 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f -(expansions)g(of)h Ft("$@")e Fu(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f -(P)m(arameters],)150 3580 y(page)e(20\))h(and)d Ft("${)p -Fj(name)p Ft([@]}")e Fu(\(see)32 b(Section)f(6.7)g([Arra)m(ys],)h(page) -f(91\).)275 3720 y(After)41 b(all)i(expansions,)h Ft(quote)29 -b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 -b(al],)47 b(page)42 b(32\))h(is)150 3830 y(p)s(erformed.)150 -4035 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4182 y +2602 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e +(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150 +2711 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g +(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38 +b(The)24 b(only)150 2821 y(exceptions)i(to)f(this)g(are)g(the)g +(expansions)g(of)g Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f +(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 2931 y(page)31 +b(21\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i +Ft(${)p Fj(name)p Ft([*]})f Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g +(page)g(93\).)275 3064 y(After)41 b(all)i(expansions,)h +Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m +(v)-5 b(al],)47 b(page)42 b(33\))h(is)150 3173 y(p)s(erformed.)150 +3369 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3516 y Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h (arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43 -b(This)30 b(mec)m(h-)150 4292 y(anism)35 b(is)h(similar)f(to)h +b(This)30 b(mec)m(h-)150 3626 y(anism)35 b(is)h(similar)f(to)h Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g -(Expansion],)f(page)g(30\),)150 4401 y(but)26 b(the)h(\014lenames)g +(Expansion],)f(page)g(31\),)150 3736 y(but)26 b(the)h(\014lenames)g (generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28 b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150 -4511 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f +3845 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f (either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h -(sequence)150 4620 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i +(sequence)150 3955 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i (braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p -Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4730 y(pre\014xed)28 +Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4064 y(pre\014xed)28 b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g (the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150 -4840 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 4980 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 +4174 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) +m(t.)275 4307 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g -(sorted;)150 5090 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m -(ed.)41 b(F)-8 b(or)31 b(example,)390 5230 y Ft(bash$)46 -b(echo)h(a{d,c,b}e)390 5340 y(ade)g(ace)g(abe)p eop end -%%Page: 22 28 -TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299 -y(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g +(sorted;)150 4416 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m +(ed.)41 b(F)-8 b(or)31 b(example,)390 4549 y Ft(bash$)46 +b(echo)h(a{d,c,b}e)390 4659 y(ade)g(ace)g(abe)275 4792 +y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 -b(either)g(in)m(tegers)150 408 y(or)42 b(single)h(c)m(haracters,)48 +b(either)g(in)m(tegers)150 4902 y(or)42 b(single)h(c)m(haracters,)48 b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) -h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 518 +h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 5011 y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s (er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p -Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 628 y(in)m(tegers)33 +Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 5121 y(in)m(tegers)33 b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g (eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 -b(When)31 b(either)150 737 y Fr(x)43 b Fu(or)36 b Fr(y)44 +b(When)31 b(either)150 5230 y Fr(x)43 b Fu(or)36 b Fr(y)44 b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g (force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150 -847 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h +5340 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h (necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the) -150 956 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g +p eop end +%%Page: 23 29 +TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 +y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g (lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24 -b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 1066 -y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e -Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h -(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 -1176 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s -(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h -(is)f(1)h(or)f(-1)150 1285 y(as)i(appropriate.)275 1425 -y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h -(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150 -1535 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f -(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32 -b(do)s(es)f(not)h(apply)150 1645 y(an)m(y)27 b(syn)m(tactic)i(in)m -(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g -(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)150 1754 -y(T)-8 b(o)37 b(a)m(v)m(oid)g(con\015icts)g(with)f(parameter)h -(expansion,)g(the)g(string)f(`)p Ft(${)p Fu(')g(is)g(not)g(considered)g -(eligible)i(for)150 1864 y(brace)31 b(expansion.)275 -2004 y(A)e(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain) -h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 -2113 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 408 y(default)32 +b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e Fr(x)39 +b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h(same)f(t)m +(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 518 y(is)d(supplied,)g +(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s(et)m(w)m(een)g(eac)m(h) +g(term.)41 b(The)29 b(default)g(incremen)m(t)h(is)f(1)h(or)f(-1)150 +628 y(as)i(appropriate.)275 764 y(Brace)36 b(expansion)g(is)f(p)s +(erformed)f(b)s(efore)h(an)m(y)h(other)g(expansions,)h(and)e(an)m(y)g +(c)m(haracters)i(sp)s(ecial)150 873 y(to)32 b(other)g(expansions)g(are) +g(preserv)m(ed)f(in)h(the)f(result.)45 b(It)32 b(is)g(strictly)g +(textual.)46 b(Bash)32 b(do)s(es)f(not)h(apply)150 983 +y(an)m(y)27 b(syn)m(tactic)i(in)m(terpretation)g(to)f(the)f(con)m(text) +i(of)e(the)g(expansion)g(or)g(the)h(text)g(b)s(et)m(w)m(een)f(the)h +(braces.)275 1119 y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust) +h(con)m(tain)h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 +1228 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h -(formed)150 2223 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 -2363 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) +(formed)150 1338 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 +1474 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f -(considered)g(part)g(of)h(a)g(brace)150 2473 y(expression.)51 +(considered)g(part)g(of)h(a)g(brace)150 1583 y(expression.)51 b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g (expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered) -150 2582 y(eligible)e(for)e(brace)h(expansion.)275 2723 -y(This)f(construct)h(is)g(t)m(ypically)i(used)d(as)h(shorthand)f(when)g -(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)150 -2832 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m(v)m -(e)i(example:)390 2972 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o -(ew,)o(dist)o(,bug)o(s})275 3112 y Fu(or)390 3253 y Ft(chown)g(root)h +150 1693 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g +(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p +Fu('..)275 1829 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h +(shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to) +150 1939 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m +(v)m(e)i(example:)390 2074 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o +(ew,)o(dist)o(,bug)o(s})275 2210 y Fu(or)390 2346 y Ft(chown)g(root)h (/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 -3457 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3604 y +2547 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2694 y Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m (haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) -d(to)j(the)f(\014rst)150 3714 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m +d(to)j(the)f(\014rst)150 2804 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m (haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g -(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3824 y(If)38 +(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 2913 y(If)38 b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h (quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 -3933 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s +3023 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s (ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f -(is)g(the)g(n)m(ull)g(string,)150 4043 y(the)35 b(tilde)g(is)g +(is)g(the)g(n)m(ull)g(string,)150 3132 y(the)35 b(tilde)g(is)g (replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g -Fu(is)h(unset,)g(the)g(home)150 4152 y(directory)e(of)g(the)f(user)g +Fu(is)h(unset,)g(the)g(home)150 3242 y(directory)e(of)g(the)f(user)g (executing)i(the)e(shell)h(is)f(substituted)g(instead.)47 -b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4262 y(is)d(replaced)h(with) +b(Otherwise,)33 b(the)g(tilde-pre\014x)150 3352 y(is)d(replaced)h(with) f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed) -e(login)j(name.)275 4402 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p +e(login)j(name.)275 3487 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5 b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47 -b(If)150 4512 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p +b(If)150 3597 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5 b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f -(substituted.)275 4652 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) +(substituted.)275 3733 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s -(er)d Fr(N)p Fu(,)j(optionally)150 4761 y(pre\014xed)22 +(er)d Fr(N)p Fu(,)j(optionally)150 3843 y(pre\014xed)22 b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d (tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e -(elemen)m(t)j(from)e(the)150 4871 y(directory)36 b(stac)m(k,)i(as)e(it) +(elemen)m(t)j(from)e(the)150 3952 y(directory)36 b(stac)m(k,)i(as)e(it) g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) -150 4981 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g +150 4062 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g (an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m -(k],)150 5090 y(page)c(93\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +(k],)150 4171 y(page)c(95\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f -(leading)h(`)p Ft(+)p Fu(')g(or)150 5200 y(`)p Ft(-)p -Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 5340 y(If)e(the)i(login) +(leading)h(`)p Ft(+)p Fu(')g(or)150 4281 y(`)p Ft(-)p +Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 4417 y(If)e(the)i(login) g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f -(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)p -eop end -%%Page: 23 29 -TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299 -y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m(k)m -(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m(wing) -150 408 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p +(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275 +4553 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m +(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m +(wing)150 4662 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g (also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37 -b(one)150 518 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g +b(one)150 4772 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g (assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150 -628 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 761 +4882 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 5018 y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g -(unquoted)e(tilde-pre\014xes:)150 919 y Ft(~)432 b Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft($HOME)150 1077 y(~/foo)240 -b($HOME/foo)150 1235 y(~fred/foo)630 1345 y Fu(The)30 -b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the) -f(user)g Ft(fred)150 1503 y(~+/foo)192 b($PWD/foo)150 -1661 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 1819 y(~)p Fj(N)384 +(unquoted)e(tilde-pre\014xes:)150 5179 y Ft(~)432 b Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft($HOME)150 5340 y(~/foo)240 +b($HOME/foo)p eop end +%%Page: 24 30 +TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 +y Ft(~fred/foo)630 408 y Fu(The)30 b(sub)s(directory)f +Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the)f(user)g +Ft(fred)150 585 y(~+/foo)192 b($PWD/foo)150 762 y(~-/foo)g +(${OLDPWD-'~-'}/foo)150 939 y(~)p Fj(N)384 b Fu(The)30 +b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p +Ft(dirs)g(+)p Fj(N)p Fu(')150 1115 y Ft(~+)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m -(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 1977 y Ft(~+)p +(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 1292 y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m -(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 2135 -y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g -(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')150 -2332 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 -2479 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d +(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')150 1509 +y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 +1656 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d (parameter)h(expansion,)j(command)d(substitution,)i(or)e(arithmetic)150 -2589 y(expansion.)d(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to) +1765 y(expansion.)d(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to) g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i(whic)m -(h)150 2699 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g +(h)150 1875 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g (v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m(haracters)i -(immediately)150 2808 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g -(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 2942 +(immediately)150 1984 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g +(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 2136 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f(brace)g (is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a) -150 3051 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c +150 2246 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c (not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)150 -3161 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -3295 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +2355 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 +2507 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5 -b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 3404 y(substituted.)43 +b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2617 y(substituted.)43 b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150 -3514 y(P)m(arameters],)e(page)f(18\))h(or)e(an)g(arra)m(y)h(reference)f -(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(91\).)42 -b(The)29 b(braces)150 3624 y(are)j(required)g(when)f +2726 y(P)m(arameters],)e(page)f(19\))h(or)e(an)g(arra)m(y)h(reference)f +(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(93\).)42 +b(The)29 b(braces)150 2836 y(are)j(required)g(when)f Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f -(more)g(than)g(one)g(digit,)i(or)e(when)150 3733 y Fr(parameter)37 +(more)g(than)g(one)g(digit,)i(or)e(when)150 2946 y Fr(parameter)37 b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f (not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 -3867 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 +3097 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d -Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3977 y Fr(nameref)p +Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3207 y Fr(nameref)p Fu(,)i(it)f(in)m(tro)s(duces)f(a)h(lev)m(el)h(of)f(v)-5 b(ariable)37 b(indirection.)59 b(Bash)37 b(uses)f(the)g(v)-5 -b(alue)37 b(of)g(the)f(v)-5 b(ariable)150 4086 y(formed)22 +b(alue)37 b(of)g(the)f(v)-5 b(ariable)150 3317 y(formed)22 b(from)f(the)h(rest)h(of)f Fr(parameter)29 b Fu(as)22 b(the)g(name)h(of)f(the)g(v)-5 b(ariable;)26 b(this)c(v)-5 -b(ariable)23 b(is)f(then)g(expanded)150 4196 y(and)34 +b(ariable)23 b(is)f(then)g(expanded)150 3426 y(and)34 b(that)h(v)-5 b(alue)35 b(is)g(used)f(in)g(the)h(rest)g(of)g(the)g (substitution,)g(rather)g(than)f(the)h(v)-5 b(alue)35 -b(of)g Fr(parameter)150 4305 y Fu(itself.)52 b(This)33 -b(is)g(kno)m(wn)h(as)g Ft(indirect)28 b(expansion)p Fu(.)48 -b(If)33 b Fr(parameter)41 b Fu(is)34 b(a)g(nameref,)h(this)e(expands)g -(to)150 4415 y(the)d(name)g(of)g(the)h(v)-5 b(ariable)30 -b(referenced)g(b)m(y)g Fr(parameter)37 b Fu(instead)31 -b(of)f(p)s(erforming)f(the)h(complete)h(indi-)150 4524 -y(rect)i(expansion.)46 b(The)32 b(exceptions)i(to)f(this)f(are)h(the)f -(expansions)g(of)h($)p Fi({)p Fu(!)p Fr(pre\014x)6 b -Fu(*)p Fi(})33 b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5 -b Fu([@])p Fi(})150 4634 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 -b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m -(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4744 y(in)m(tro)s(duce)i -(indirection.)275 4877 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m -(w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j -(parameter)e(expansion,)150 4987 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 5121 y(When)h(not)h(p)s(erforming)e +b(of)g Fr(parameter)150 3536 y Fu(itself.)74 b(This)41 +b(is)g(kno)m(wn)g(as)g Ft(indirect)28 b(expansion)p Fu(.)71 +b(The)41 b(v)-5 b(alue)42 b(is)f(sub)5 b(ject)41 b(to)h(tilde)g +(expansion,)150 3645 y(parameter)e(expansion,)i(command)d +(substitution,)j(and)d(arithmetic)h(expansion.)68 b(If)39 +b Fr(parameter)47 b Fu(is)150 3755 y(a)40 b(nameref,)h(this)e(expands)g +(to)g(the)h(name)f(of)g(the)h(v)-5 b(ariable)40 b(referenced)f(b)m(y)g +Fr(parameter)46 b Fu(instead)40 b(of)150 3865 y(p)s(erforming)32 +b(the)i(complete)h(indirect)f(expansion.)51 b(The)33 +b(exceptions)i(to)f(this)g(are)g(the)f(expansions)h(of)150 +3974 y($)p Fi({)p Fu(!)p Fr(pre\014x)6 b Fu(*)p Fi(})39 +b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})40 +b Fu(describ)s(ed)d(b)s(elo)m(w.)64 b(The)37 b(exclamation)k(p)s(oin)m +(t)d(m)m(ust)g(immediately)150 4084 y(follo)m(w)32 b(the)e(left)h +(brace)g(in)f(order)g(to)h(in)m(tro)s(duce)f(indirection.)275 +4236 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m(w,)i +Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j +(parameter)e(expansion,)150 4345 y(command)30 b(substitution,)g(and)g +(arithmetic)i(expansion.)275 4497 y(When)h(not)h(p)s(erforming)e (substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m -(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 5230 y(Bash)d(tests)h(for)e(a)i +(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4607 y(Bash)d(tests)h(for)e(a)i (parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33 -b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 5340 +b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 4716 y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31 b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f -(the)h(op)s(erator)g(tests)p eop end -%%Page: 24 30 -TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 -y(for)36 b(b)s(oth)g Fr(parameter)7 b Fu('s)37 b(existence)h(and)e -(that)i(its)f(v)-5 b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h -(is)e(omitted,)k(the)150 408 y(op)s(erator)31 b(tests)g(only)f(for)g -(existence.)150 569 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p -Fj(word)p Ft(})630 679 y Fu(If)g Fr(parameter)37 b Fu(is)30 -b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k -Fu(is)c(substituted.)40 b(Otherwise,)630 788 y(the)31 -b(v)-5 b(alue)30 b(of)h Fr(parameter)37 b Fu(is)31 b(substituted.)150 -948 y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 -1058 y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h -(the)f(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h -Fr(parameter)p Fu(.)630 1167 y(The)c(v)-5 b(alue)32 b(of)f +(the)h(op)s(erator)g(tests)150 4826 y(for)36 b(b)s(oth)g +Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5 +b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k +(the)150 4935 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 +5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p +Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m +(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40 +b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h +Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end +%%Page: 25 31 +TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299 +y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408 +y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f +(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 1277 y(parameters)h(ma)m(y)g(not)f +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 -1437 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 -1547 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h +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 1656 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h +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 1766 y(in)m(teractiv)m(e,)33 b(exits.)42 +(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 1926 y Ft(${)p Fj(parameter)p -Ft(:+)p Fj(word)p Ft(})630 2036 y Fu(If)35 b Fr(parameter)42 +b Fu(is)30 b(substituted.)150 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 2145 y(of)31 b Fr(w)m(ord)i -Fu(is)e(substituted.)150 2305 y Ft(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(})150 2415 y(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 2524 +(otherwise)e(the)h(expansion)630 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 -2634 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 +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 2744 y Fr(parameter)32 +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 2853 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) +(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 2963 y(to)e(the)g(substring)f(of)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 -3072 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) +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 3182 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(89\).)630 3317 y(If)39 +Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h +([Shell)e(Arithmetic],)i(page)f(91\).)630 2661 y(If)39 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f (less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g -(o\013set)630 3426 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h +(o\013set)630 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 3536 +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 -3646 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 +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 3755 y(is)39 b(the)g(c)m(haracters)i(b)s(et) +(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 3865 +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 -3974 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 -4109 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 4219 y(subscripted)29 -b(arra)m(ys:)630 4354 y Ft($)47 b(string=01234567890abcdefgh)630 -4463 y($)g(echo)g(${string:7})630 4573 y(7890abcdefgh)630 -4682 y($)g(echo)g(${string:7:0})630 4902 y($)g(echo)g(${string:7:2})630 -5011 y(78)630 5121 y($)g(echo)g(${string:7:-2})630 5230 -y(7890abcdef)630 5340 y($)g(echo)g(${string:)e(-7})p -eop end -%%Page: 25 31 -TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)630 299 -y Ft(bcdefgh)630 408 y($)47 b(echo)g(${string:)e(-7:0})630 -628 y($)i(echo)g(${string:)e(-7:2})630 737 y(bc)630 847 -y($)i(echo)g(${string:)e(-7:-2})630 956 y(bcdef)630 1066 -y($)i(set)g(--)h(01234567890abcdefgh)630 1176 y($)f(echo)g(${1:7})630 -1285 y(7890abcdefgh)630 1395 y($)g(echo)g(${1:7:0})630 -1614 y($)g(echo)g(${1:7:2})630 1724 y(78)630 1833 y($)g(echo)g -(${1:7:-2})630 1943 y(7890abcdef)630 2052 y($)g(echo)g(${1:)g(-7})630 -2162 y(bcdefgh)630 2271 y($)g(echo)g(${1:)g(-7:0})630 -2491 y($)g(echo)g(${1:)g(-7:2})630 2600 y(bc)630 2710 -y($)g(echo)g(${1:)g(-7:-2})630 2819 y(bcdef)630 2929 -y($)g(array[0]=01234567890abcdef)o(gh)630 3039 y($)g(echo)g -(${array[0]:7})630 3148 y(7890abcdefgh)630 3258 y($)g(echo)g -(${array[0]:7:0})630 3477 y($)g(echo)g(${array[0]:7:2})630 -3587 y(78)630 3696 y($)g(echo)g(${array[0]:7:-2})630 -3806 y(7890abcdef)630 3915 y($)g(echo)g(${array[0]:)e(-7})630 -4025 y(bcdefgh)630 4134 y($)i(echo)g(${array[0]:)e(-7:0})630 -4354 y($)i(echo)g(${array[0]:)e(-7:2})630 4463 y(bc)630 -4573 y($)i(echo)g(${array[0]:)e(-7:-2})630 4682 y(bcdef)630 -5011 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p +3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 +3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f +(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29 +b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630 +3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630 +4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630 +4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573 +y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630 +4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630 +5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630 +5340 y($)i(echo)g(${string:)e(-7:-2})p eop end +%%Page: 26 32 +TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 +y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630 +518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737 +y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630 +1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630 +1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614 +y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630 +1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162 +y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630 +2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630 +2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g +(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2}) +630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630 +3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630 +3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630 +3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630 +4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h -(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 5121 y(A)36 +(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 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 -5230 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 +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 5340 y(expansion)i(error)g(if)h +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.)p eop end -%%Page: 26 32 -TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 -y(The)32 b(follo)m(wing)i(examples)f(illustrate)h(substring)d -(expansion)i(using)f(p)s(ositional)h(param-)630 408 y(eters:)630 -573 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f(7)h(8)f(9)h(0)f(a)h -(b)f(c)g(d)h(e)f(f)h(g)f(h)630 682 y($)g(echo)g(${@:7})630 -792 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h(g)f(h)630 -902 y($)g(echo)g(${@:7:0})630 1121 y($)g(echo)g(${@:7:2})630 -1230 y(7)g(8)630 1340 y($)g(echo)g(${@:7:-2})630 1450 -y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 1559 -y($)g(echo)g(${@:)g(-7:2})630 1669 y(b)g(c)630 1778 y($)g(echo)g -(${@:0})630 1888 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h(9)f(0)h(a)f -(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1998 y($)f(echo)g(${@:0:2})630 -2107 y(./bash)f(1)630 2217 y($)h(echo)g(${@:)g(-7:0})630 -2491 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +(than)f(zero.)630 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 +%%Page: 27 33 +TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299 +y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g +(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 +737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956 +y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h +(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2}) +630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630 +1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p -Ft(*)p Fu(',)h(the)e(result)g(is)630 2600 y(the)j Fr(length)g +Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60 -b(A)630 2710 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h +b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h (relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f -(of)h(the)630 2819 y(sp)s(eci\014ed)38 b(arra)m(y)-8 +(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8 b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 -2929 y(than)30 b(zero.)630 3093 y(These)23 b(examples)i(sho)m(w)e(ho)m +2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m (w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g -(arra)m(ys:)630 3258 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) -f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 3367 -y($)f(echo)g(${array[@]:7})630 3477 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h -(e)f(f)h(g)f(h)630 3587 y($)g(echo)g(${array[@]:7:2})630 -3696 y(7)g(8)630 3806 y($)g(echo)g(${array[@]:)e(-7:2})630 -3915 y(b)i(c)630 4025 y($)g(echo)g(${array[@]:)e(-7:-2})630 -4134 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -4244 y($)g(echo)g(${array[@]:0})630 4354 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 4463 -y($)g(echo)g(${array[@]:0:2})630 4573 y(0)g(1)630 4682 -y($)g(echo)g(${array[@]:)e(-7:0})630 4956 y Fu(Substring)25 +(arra)m(ys:)630 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 b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s -(duces)f(unde\014ned)f(results.)630 5121 y(Substring)32 +(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32 b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g -(parameters)g(are)g(used,)g(in)630 5230 y(whic)m(h)29 +(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29 b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41 b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630 -5340 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h -(the)f(list.)p eop end -%%Page: 27 33 -TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299 -y Ft(${!)p Fj(prefix)p Ft(*})150 408 y(${!)p Fj(prefix)p -Ft(@})630 518 y Fu(Expands)24 b(to)h(the)g(names)g(of)g(v)-5 -b(ariables)26 b(whose)f(names)f(b)s(egin)h(with)f Fr(pre\014x)p -Fu(,)i(separated)f(b)m(y)630 628 y(the)k(\014rst)f(c)m(haracter)j(of)e -(the)g Ft(IFS)f Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 -b(`)p Ft(@)p Fu(')g(is)g(used)f(and)h(the)g(expan-)630 -737 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 +4557 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h +(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150 +4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24 +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 +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 +b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 -847 y(w)m(ord.)150 1066 y Ft(${!)p Fj(name)p Ft([@]})150 -1176 y(${!)p Fj(name)p Ft([*]})630 1285 y Fu(If)26 b -Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 -b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h -(assigned)630 1395 y(in)c Fr(name)p Fu(.)39 b(If)24 b -Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 -b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g -(otherwise.)630 1504 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f -(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d -(k)m(ey)630 1614 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 -1833 y Ft(${#)p Fj(parameter)p Ft(})630 1943 y Fu(The)40 -b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5 -b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630 -2052 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +5340 y(w)m(ord.)p eop end +%%Page: 28 34 +TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299 +y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p +Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v) +-5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices) +g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39 +b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 +b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 +b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39 +b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g +(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847 +y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011 +y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m +(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f +Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i +Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m -(b)s(er)f(of)h(p)s(ositional)630 2162 y(parameters.)i(If)32 +(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m (y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5 -b(alue)630 2271 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i +b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30 -b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 2381 +b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559 y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m (b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630 -2491 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f +1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f (index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630 -2600 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f +1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f (arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630 -2710 y(last)g(elemen)m(t.)150 2929 y Ft(${)p Fj(parameter)p -Ft(#)p Fj(word)p Ft(})150 3039 y(${)p Fj(parameter)p -Ft(##)p Fj(word)p Ft(})630 3148 y Fu(The)g Fr(w)m(ord)k -Fu(is)d(expanded)f(to)i(pro)s(duce)e(a)h(pattern)g(just)f(as)i(in)e -(\014lename)h(expansion)g(\(see)630 3258 y(Section)k(3.5.8)h([Filename) -g(Expansion],)g(page)f(30\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i -(the)e(b)s(e-)630 3367 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 -b(alue)29 b(of)f Fr(parameter)p Fu(,)h(then)f(the)g(result)g(of)h(the)f -(expansion)g(is)630 3477 y(the)36 b(expanded)f(v)-5 b(alue)36 -b(of)g Fr(parameter)43 b Fu(with)35 b(the)h(shortest)g(matc)m(hing)h -(pattern)f(\(the)g(`)p Ft(#)p Fu(')630 3587 y(case\))26 -b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p -Ft(##)p Fu(')g(case\))h(deleted.)39 b(If)24 b Fr(parameter)32 -b Fu(is)25 b(`)p Ft(@)p Fu(')630 3696 y(or)j(`)p Ft(*)p -Fu(',)i(the)e(pattern)h(remo)m(v)-5 b(al)29 b(op)s(eration)g(is)f -(applied)h(to)g(eac)m(h)g(p)s(ositional)g(parameter)g(in)630 -3806 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) -45 b(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 -b(ariable)630 3915 y(subscripted)39 b(with)g(`)p Ft(@)p -Fu(')h(or)g(`)p Ft(*)p Fu(',)j(the)d(pattern)h(remo)m(v)-5 -b(al)41 b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)630 -4025 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h -(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 4244 -y Ft(${)p Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 -4354 y(${)p Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 -4463 y Fu(The)k Fr(w)m(ord)k Fu(is)c(expanded)g(to)h(pro)s(duce)e(a)i -(pattern)f(just)g(as)h(in)f(\014lename)h(expansion.)55 -b(If)630 4573 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s -(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g -Fr(parameter)p Fu(,)630 4682 y(then)c(the)g(result)g(of)h(the)f -(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46 -b Fu(with)39 b(the)h(shortest)630 4792 y(matc)m(hing)31 -b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h -(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630 -4902 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 -b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 5011 y(eac)m(h)38 -b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h -(the)f(resultan)m(t)h(list.)61 b(If)630 5121 y Fr(parameter)38 -b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h -(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 5230 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m -(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g -(is)630 5340 y(the)h(resultan)m(t)g(list.)p eop end -%%Page: 28 34 -TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299 -y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p -Ft(})630 408 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s -(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 -518 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g -(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 -b(alue)39 b(is)630 628 y(replaced)34 b(with)e Fr(string)p -Fu(.)49 b(If)33 b Fr(pattern)g Fu(b)s(egins)g(with)f(`)p -Ft(/)p Fu(',)j(all)f(matc)m(hes)g(of)f Fr(pattern)g Fu(are)h(re-)630 -737 y(placed)28 b(with)f Fr(string)p Fu(.)40 b(Normally)28 -b(only)f(the)h(\014rst)e(matc)m(h)j(is)e(replaced.)40 -b(If)27 b Fr(pattern)g Fu(b)s(egins)630 847 y(with)34 -b(`)p Ft(#)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)f(the)h(b)s(eginning) -e(of)h(the)g(expanded)f(v)-5 b(alue)35 b(of)f Fr(parameter)p -Fu(.)630 956 y(If)g Fr(pattern)g Fu(b)s(egins)g(with)g(`)p -Ft(\045)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)g(the)f(end)g(of)g(the)h -(expanded)e(v)-5 b(alue)35 b(of)630 1066 y Fr(parameter)p -Fu(.)41 b(If)29 b Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of) -e Fr(pattern)h Fu(are)g(deleted)g(and)f(the)g Ft(/)g -Fu(follo)m(wing)630 1176 y Fr(pattern)k Fu(ma)m(y)h(b)s(e)e(omitted.)50 -b(If)33 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f -(description)630 1285 y(of)28 b Ft(shopt)e Fu(in)h(Section)i(4.3.2)g -([The)e(Shopt)g(Builtin],)i(page)g(64\))g(is)e(enabled,)i(the)e(matc)m -(h)i(is)630 1395 y(p)s(erformed)f(without)j(regard)e(to)i(the)f(case)i -(of)e(alphab)s(etic)g(c)m(haracters.)42 b(If)30 b Fr(parameter)37 -b Fu(is)630 1504 y(`)p Ft(@)p Fu(')31 b(or)g(`)p Ft(*)p -Fu(',)g(the)g(substitution)f(op)s(eration)h(is)g(applied)f(to)i(eac)m -(h)g(p)s(ositional)f(parameter)g(in)630 1614 y(turn,)g(and)g(the)h -(expansion)g(is)g(the)g(resultan)m(t)g(list.)45 b(If)32 -b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -1724 y(subscripted)23 b(with)g(`)p Ft(@)p Fu(')i(or)f(`)p -Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)f(applied)g(to)g -(eac)m(h)i(mem)m(b)s(er)630 1833 y(of)31 b(the)f(arra)m(y)h(in)f(turn,) -g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h(list.)150 -1987 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 -2096 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 -2206 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 -2315 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 -2425 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f -(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p -Fu(.)59 b(The)630 2534 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s -(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47 -b(Eac)m(h)630 2644 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 -b(alue)31 b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h -Fr(pattern)p Fu(,)e(and,)g(if)630 2754 y(it)j(matc)m(hes)h(the)g +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 +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) +h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f +(32\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s +(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 +(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 +y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e +(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p +Ft(##)p Fu(')g(case\))630 2819 y(deleted.)49 b(If)32 +b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)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 +(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(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 +y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h +(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630 +3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p +Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p +Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641 +y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h +(pattern)g(and)f(matc)m(hed)i(according)f(to)h(the)630 +3751 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)h(\(see)h(Section)g +(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f(32\).)46 +b(If)32 b(the)630 3861 y(pattern)25 b(matc)m(hes)h(If)f(the)g(pattern)g +(matc)m(hes)i(a)e(trailing)h(p)s(ortion)f(of)g(the)g(expanded)f(v)-5 +b(alue)630 3970 y(of)23 b Fr(parameter)p Fu(,)i(then)e(the)g(result)f +(of)h(the)g(expansion)g(is)g(the)g(v)-5 b(alue)23 b(of)g +Fr(parameter)30 b Fu(with)23 b(the)630 4080 y(shortest)35 +b(matc)m(hing)h(pattern)f(\(the)g(`)p Ft(\045)p Fu(')g(case\))i(or)d +(the)h(longest)i(matc)m(hing)e(pattern)g(\(the)630 4189 +y(`)p Ft(\045\045)p Fu(')f(case\))i(deleted.)54 b(If)34 +b Fr(parameter)42 b Fu(is)35 b(`)p Ft(@)p Fu(')f(or)h(`)p +Ft(*)p Fu(',)h(the)e(pattern)h(remo)m(v)-5 b(al)36 b(op)s(eration)f(is) +630 4299 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630 +4408 y(list.)56 b(If)34 b Fr(parameter)42 b Fu(is)35 +b(an)g(arra)m(y)h(v)-5 b(ariable)36 b(subscripted)e(with)g(`)p +Ft(@)p Fu(')i(or)f(`)p Ft(*)p Fu(',)i(the)e(pattern)630 +4518 y(remo)m(v)-5 b(al)44 b(op)s(eration)g(is)e(applied)h(to)h(eac)m +(h)g(mem)m(b)s(er)e(of)h(the)g(arra)m(y)h(in)e(turn,)j(and)e(the)630 +4628 y(expansion)30 b(is)h(the)f(resultan)m(t)h(list.)150 +4792 y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p +Fj(stri)o(ng)p Ft(})630 4902 y Fu(The)37 b Fr(pattern)g +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(32\).)41 b(If)29 b Fr(pattern)g +Fu(b)s(egins)f(with)630 5340 y(`)p Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g +(of)f Fr(pattern)g Fu(are)h(replaced)f(with)g Fr(string)p +Fu(.)69 b(Normally)41 b(only)f(the)h(\014rst)p eop end +%%Page: 29 35 +TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 +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(65\))h(is)f(enabled,)j(the)d(matc)m(h)g +(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630 +956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b +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 1559 y Ft(${)p +Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1669 y(${)p +Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1778 y(${)p +Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1888 y(${)p +Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1998 y Fu(This)36 +b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m +(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 2107 +y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e +(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630 +2217 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 +b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h +Fr(pattern)p Fu(,)e(and,)g(if)630 2326 y(it)j(matc)m(hes)h(the)g (pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33 -b(pattern)g(should)f(not)h(attempt)630 2863 y(to)f(matc)m(h)g(more)f +b(pattern)g(should)f(not)h(attempt)630 2436 y(to)f(matc)m(h)g(more)f (than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 -2973 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p +2545 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s -(ercase)630 3082 y(letters)e(to)f(lo)m(w)m(ercase.)50 +(ercase)630 2655 y(letters)e(to)f(lo)m(w)m(ercase.)50 b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h (con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 -3192 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 +2765 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m -(h)h(and)f(con)m(v)m(ert)i(only)630 3302 y(the)37 b(\014rst)g(c)m +(h)h(and)f(con)m(v)m(ert)i(only)630 2874 y(the)37 b(\014rst)g(c)m (haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630 -3411 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m +2984 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m (ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37 b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630 -3521 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m +3093 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m (h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630 -3630 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 +3203 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5 -b(ariable)39 b(subscripted)630 3740 y(with)26 b(`)p Ft(@)p +b(ariable)39 b(subscripted)630 3313 y(with)26 b(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s (eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630 -3850 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h -(resultan)m(t)g(list.)150 4003 y Ft(${)p Fj(parameter)p -Ft(@)p Fj(operator)p Ft(})630 4113 y Fu(The)d(expansion)h(is)f(either)h +3422 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h +(resultan)m(t)g(list.)150 3587 y Ft(${)p Fj(parameter)p +Ft(@)p Fj(operator)p Ft(})630 3696 y Fu(The)d(expansion)h(is)f(either)h (a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g -Fr(parameter)35 b Fu(or)29 b(informa-)630 4222 y(tion)e(ab)s(out)f +Fr(parameter)35 b Fu(or)29 b(informa-)630 3806 y(tion)e(ab)s(out)f Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 -b Fr(op)s(erator)630 4332 y Fu(is)j(a)h(single)g(letter:)630 -4485 y Ft(Q)432 b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f +b Fr(op)s(erator)630 3915 y Fu(is)j(a)h(single)g(letter:)630 +4080 y Ft(Q)432 b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f (the)g(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 -b(in)1110 4595 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i -(input.)630 4748 y Ft(E)432 b Fu(The)48 b(expansion)h(is)g(a)g(string)g -(that)h(is)f(the)g(v)-5 b(alue)49 b(of)g Fr(parameter)56 -b Fu(with)1110 4858 y(bac)m(kslash)36 b(escap)s(e)f(sequences)h -(expanded)e(as)h(with)g(the)g Ft($'...)o(')f Fu(quoting)1110 -4967 y(mec)m(hansim.)630 5121 y Ft(P)432 b Fu(The)22 -b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)g(result)g(of)g -(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 5230 y Fr(parameter)31 -b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section) -h(6.9)g([Con)m(trolling)1110 5340 y(the)31 b(Prompt],)f(page)h(94\).)p -eop end -%%Page: 29 35 -TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 -y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form) -g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 408 -y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 -b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 518 -y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 680 y -Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g -(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 -789 y(rameter)7 b Fu('s)31 b(attributes.)630 951 y(If)e +b(in)1110 4189 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i +(input.)630 4354 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h +(that)f(is)h(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 +b Fu(with)27 b(bac)m(k-)1110 4463 y(slash)e(escap)s(e)h(sequences)f +(expanded)g(as)g(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110 +4573 y(anism.)630 4737 y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g +(string)g(that)g(is)g(the)g(result)g(of)g(expanding)f(the)h(v)-5 +b(alue)24 b(of)1110 4847 y Fr(parameter)31 b Fu(as)24 +b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)h(6.9)g +([Con)m(trolling)1110 4956 y(the)31 b(Prompt],)f(page)h(96\).)630 +5121 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g +(form)g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 +5230 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 +b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 5340 +y(its)31 b(attributes)g(and)e(v)-5 b(alue.)p eop end +%%Page: 30 36 +TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 +y Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of) +g(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 +408 y(rameter)7 b Fu('s)31 b(attributes.)630 563 y(If)e Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s -(ositional)f(parameter)630 1060 y(in)24 b(turn,)g(and)f(the)h -(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 -b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -1170 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p -Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m -(b)s(er)e(of)h(the)f(arra)m(y)630 1279 y(in)30 b(turn,)g(and)f(the)i -(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1415 -y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 +(ositional)f(parameter)630 672 y(in)24 b(turn,)g(and)f(the)h(expansion) +g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 b Fr(parameter)31 +b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 782 y(subscripted)24 +b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)h(the)e(op)s(eration)h +(is)g(applied)f(to)h(eac)m(h)h(mem)m(b)s(er)e(of)h(the)f(arra)m(y)630 +892 y(in)30 b(turn,)g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h +(list.)630 1024 y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 b(ject)22 b(to)h(w)m(ord)f(splitting)g(and)g(pathname)g(expansion)630 -1524 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1726 y -Fk(3.5.4)63 b(Command)41 b(Substitution)150 1873 y Fu(Command)f +1133 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1328 y +Fk(3.5.4)63 b(Command)41 b(Substitution)150 1474 y Fu(Command)f (substitution)h(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h -(replace)g(the)g(command)f(itself.)150 1982 y(Command)29 +(replace)g(the)g(command)f(itself.)150 1584 y(Command)29 b(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g(enclosed)h(as)g -(follo)m(ws:)390 2119 y Ft($\()p Fj(command)p Ft(\))150 -2255 y Fu(or)390 2392 y Ft(`)p Fj(command)p Ft(`)150 -2529 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i +(follo)m(ws:)390 1716 y Ft($\()p Fj(command)p Ft(\))150 +1848 y Fu(or)390 1980 y Ft(`)p Fj(command)p Ft(`)150 +2112 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f -(replacing)150 2638 y(the)40 b(command)g(substitution)f(with)h(the)g +(replacing)150 2222 y(the)40 b(command)g(substitution)f(with)h(the)g (standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 -2748 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +2331 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g (not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) -150 2857 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +150 2441 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g (substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g -(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2967 +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2550 y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 -3103 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +2682 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 -3213 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +2792 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 -3323 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +2902 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c -Fu(form,)43 b(all)150 3432 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) +Fu(form,)43 b(all)150 3011 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h -(treated)g(sp)s(ecially)-8 b(.)275 3569 y(Command)22 +(treated)g(sp)s(ecially)-8 b(.)275 3143 y(Command)22 b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) -150 3678 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 -3815 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f +150 3253 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 +3385 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f (quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 -3925 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -4126 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4273 +3494 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +3689 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 3836 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g -(substitution)150 4382 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4519 -y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4655 y Fu(The)33 +(substitution)150 3945 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4077 +y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4209 y Fu(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)f(double) -h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 4765 +h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 4319 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g -(parameter)150 4875 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g +(parameter)150 4428 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g (command)e(substitution,)i(and)e(quote)i(remo)m(v)-5 -b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 4984 +b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 4538 y(the)j(arithmetic)g(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31 b(expansions)g(ma)m(y)g(b)s(e)e(nested.) -275 5121 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e +275 4670 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e (according)i(to)g(the)g(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section) -g(6.5)h([Shell)150 5230 y(Arithmetic],)32 b(page)f(89\).)42 +g(6.5)h([Shell)150 4780 y(Arithmetic],)32 b(page)f(91\).)42 b(If)30 b(the)h(expression)f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g(indicating)h(failure)150 -5340 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)p eop end -%%Page: 30 36 -TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)150 299 -y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 446 -y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g +4889 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s +(ccurs.)150 5083 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 +5230 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g (input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i(using)f(a)g -(\014lename.)150 555 y(It)d(tak)m(es)i(the)f(form)f(of)390 -696 y Ft(<\()p Fj(list)p Ft(\))150 836 y Fu(or)390 976 -y Ft(>\()p Fj(list)p Ft(\))150 1116 y Fu(The)e(pro)s(cess)h +(\014lename.)150 5340 y(It)d(tak)m(es)i(the)f(form)f(of)p +eop end +%%Page: 31 37 +TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)390 299 +y Ft(<\()p Fj(list)p Ft(\))150 447 y Fu(or)390 594 y +Ft(>\()p Fj(list)p Ft(\))150 742 y Fu(The)28 b(pro)s(cess)h Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i (input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 -b(This)150 1226 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h +b(This)150 852 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h (to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h -(expansion.)38 b(If)150 1335 y(the)28 b Ft(>\()p Fj(list)p +(expansion.)38 b(If)150 961 y(the)28 b Ft(>\()p Fj(list)p Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h (pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 -b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1445 y(is)g(used,)g(the) +b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1071 y(is)g(used,)g(the) f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 -b(that)150 1555 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m +b(that)150 1181 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m (een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m -(thesis,)f(otherwise)h(the)f(construct)150 1664 y(w)m(ould)j(b)s(e)g +(thesis,)f(otherwise)h(the)f(construct)150 1290 y(w)m(ould)j(b)s(e)g (in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 -1774 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p +1400 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g -(\014les.)275 1914 y(When)36 b(a)m(v)-5 b(ailable,)40 +(\014les.)275 1548 y(When)36 b(a)m(v)-5 b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i -(with)g(parameter)g(and)150 2024 y(v)-5 b(ariable)31 +(with)g(parameter)g(and)150 1657 y(v)-5 b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 2229 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -2376 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g +150 1870 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 +2017 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g (expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 -2485 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h -(quotes)h(for)f(w)m(ord)g(splitting.)275 2625 y(The)e(shell)g(treats)i +2126 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 2274 y(The)e(shell)g(treats)i (eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e -(splits)g(the)h(results)f(of)h(the)g(other)150 2735 y(expansions)22 +(splits)g(the)h(results)f(of)h(the)g(other)150 2384 y(expansions)22 b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f (terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 -b(alue)150 2845 y(is)36 b(exactly)j Ft()p +b(alue)150 2493 y(is)36 b(exactly)j Ft()p Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 -b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 2954 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 2603 y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g (results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 -3064 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +2712 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 3173 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 +(ords.)150 2822 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f -(the)h(whitespace)f(c)m(haracters)150 3283 y Ft(space)p +(the)h(whitespace)f(c)m(haracters)150 2932 y Ft(space)p Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g (the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) -g(the)150 3393 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +g(the)150 3041 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m -(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3502 +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3151 y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i -(delimits)150 3612 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +(delimits)150 3260 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f -(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3721 y(of)31 +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3370 y(of)31 b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 -3862 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g +3518 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e -(as)i(empt)m(y)f(strings.)150 3971 y(Unquoted)37 b(implicit)i(n)m(ull)f +(as)i(empt)m(y)f(strings.)150 3627 y(Unquoted)37 b(implicit)i(n)m(ull)f (argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f -(that)i(ha)m(v)m(e)150 4081 y(no)32 b(v)-5 b(alues,)33 +(that)i(ha)m(v)m(e)150 3737 y(no)32 b(v)-5 b(alues,)33 b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5 b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150 -4190 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f +3846 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f (passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40 -b(When)150 4300 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) +b(When)150 3956 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h -(the)e(n)m(ull)150 4409 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 +(the)e(n)m(ull)150 4066 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150 -4519 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4659 y(Note)31 +4175 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4323 y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s -(erformed.)150 4864 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 -5011 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i +(erformed.)150 4535 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 +4682 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g -([The)e(Set)h(Builtin],)150 5121 y(page)d(60\),)i(Bash)d(scans)h(eac)m +([The)e(Set)h(Builtin],)150 4792 y(page)d(61\),)i(Bash)d(scans)h(eac)m (h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 -b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 5230 y(app)s(ears,)h +b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 4902 y(app)s(ears,)h (then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g Fr(pattern)p Fu(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h(sorted)150 -5340 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h -(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(31\).)43 -b(If)p eop end -%%Page: 31 37 -TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 -y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and)g(the)h(shell) -f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left) -150 408 y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e -Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w) -m(ord)g(is)g(remo)m(v)m(ed.)150 518 y(If)i(the)g Ft(failglob)e -Fu(shell)i(option)h(is)f(set,)h(and)f(no)g(matc)m(hes)h(are)g(found,)e -(an)h(error)g(message)h(is)f(prin)m(ted)150 628 y(and)e(the)g(command)g -(is)h(not)f(executed.)42 b(If)30 b(the)g(shell)h(option)g -Ft(nocaseglob)c Fu(is)k(enabled,)f(the)h(matc)m(h)g(is)150 -737 y(p)s(erformed)e(without)h(regard)h(to)g(the)f(case)i(of)e(alphab)s -(etic)h(c)m(haracters.)275 876 y(When)23 b(a)h(pattern)f(is)h(used)f -(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p -Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150 -985 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f -(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g -Ft(dotglob)150 1095 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g -(\014lename,)h(the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b) -s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 1205 y(In)30 -b(other)g(cases,)i(the)e(`)p Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h -(treated)g(sp)s(ecially)-8 b(.)275 1343 y(See)28 b(the)g(description)g -(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i -(page)g(64,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h +5011 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h +(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(32\).)43 +b(If)150 5121 y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and) +g(the)h(shell)f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m +(ord)f(is)g(left)150 5230 y(unc)m(hanged.)40 b(If)30 +b(the)g Ft(nullglob)e Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h +(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v)m(ed.)150 +5340 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f +(no)g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f(prin)m +(ted)p eop end +%%Page: 32 38 +TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299 +y(and)30 b(the)g(command)g(is)h(not)f(executed.)42 b(If)30 +b(the)g(shell)h(option)g Ft(nocaseglob)c Fu(is)k(enabled,)f(the)h(matc) +m(h)g(is)150 408 y(p)s(erformed)e(without)h(regard)h(to)g(the)f(case)i +(of)e(alphab)s(etic)h(c)m(haracters.)275 544 y(When)23 +b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h(expansion,)h(the)e(c)m +(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename) +150 654 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s +(e)f(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option) +g Ft(dotglob)150 763 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p +Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e +(matc)m(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d +Fu(is)i(set.)150 873 y(In)i(other)g(cases,)i(the)e(`)p +Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 +b(.)275 1009 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f +(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h +(explicitly)i(b)m(y)e(a)150 1118 y(slash)d(in)f(the)h(pattern,)h(but)e +(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m +(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 1228 y(c)m(haracter)j(as)f +(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e +(Matc)m(hing],)i(page)e(32\).)275 1364 y(See)d(the)g(description)g(of)g +Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g +(65,)g(for)f(a)g(descrip-)150 1473 y(tion)j(of)f(the)h Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p -Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 1592 y(The)j -Ft(GLOBIGNORE)f Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f -(to)i(restrict)g(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 -1701 y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g -(matc)m(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g -(patterns)150 1811 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h -(from)e(the)i(list)f(of)g(matc)m(hes.)59 b(If)36 b(the)g -Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1920 -y(matc)m(hing)i(against)g(the)f(patterns)f(in)h Ft(GLOBIGNORE)d -Fu(is)j(p)s(erformed)e(without)h(regard)h(to)h(case.)66 -b(The)150 2030 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h -Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)e -Fu(is)i(set)i(and)e(not)h(n)m(ull.)72 b(Ho)m(w)m(ev)m(er,)150 -2139 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 1609 y(The)36 +b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used) +g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150 +1719 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac) +m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g +(of)g(the)150 1828 y(patterns)34 b(in)g Ft(GLOBIGNORE)d +Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54 +b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 1938 +y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h +Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.) +150 2047 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h +Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f +Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150 +2157 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h -Ft(dotglob)d Fu(shell)i(option,)150 2249 y(so)j(all)h(other)f +Ft(dotglob)d Fu(shell)i(option,)150 2267 y(so)j(all)h(other)f (\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h -(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p +(ignoring)150 2376 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 +2486 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d +Fu(is)k(unset.)150 2686 y Fk(3.5.8.1)63 b(P)m(attern)40 +b(Matc)m(hing)150 2833 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s (ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g -(c)m(haracters)h(describ)s(ed)150 2928 y(b)s(elo)m(w,)31 +(c)m(haracters)h(describ)s(ed)150 2943 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s -(es)150 3038 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 +(es)150 3052 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m -(hing.)63 b(The)36 b(sp)s(ecial)150 3147 y(pattern)30 +(hing.)63 b(The)36 b(sp)s(ecial)150 3162 y(pattern)30 b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s -(e)d(matc)m(hed)i(literally)-8 b(.)275 3286 y(The)29 +(e)d(matc)m(hed)i(literally)-8 b(.)275 3298 y(The)29 b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m -(wing)h(meanings:)150 3452 y Ft(*)432 b Fu(Matc)m(hes)31 +(wing)h(meanings:)150 3459 y Ft(*)432 b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 -3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h +3568 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h (\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p -Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) +Ft(*)p Fu('s)630 3678 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 -3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +3788 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g -(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150 -4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) -150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g +(matc)m(h)h(only)f(directories)630 3897 y(and)k(sub)s(directories.)150 +4058 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) +150 4219 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g (the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) -i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g +i(separated)e(b)m(y)g(a)630 4328 y(h)m(yphen)k(denotes)i(a)g Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g -(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4438 y(c)m(haracters,)d (inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g -(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42 +(sequence)e(and)f(c)m(haracter)630 4547 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p -Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g +Ft(^)p Fu(')g(then)f(an)m(y)630 4657 y(c)m(haracter)c(not)f(enclosed)g (is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e -(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765 +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4767 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f -(including)g(it)g(as)h(the)630 4875 y(\014rst)25 b(c)m(haracter)i(in)e +(including)g(it)g(as)h(the)630 4876 y(\014rst)25 b(c)m(haracter)i(in)e (the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f -(range)g(expressions)f(is)630 4984 y(determined)h(b)m(y)h(the)g(curren) +(range)g(expressions)f(is)630 4986 y(determined)h(b)m(y)h(the)g(curren) m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g -Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 5094 y Fu(shell)31 +Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 5095 y Fu(shell)31 b(v)-5 b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34 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: 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 +%%Page: 33 39 +TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)630 299 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f (equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxXyYz])p @@ -10409,578 +10495,586 @@ Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h 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 +871 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h (using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p -Fu(,)630 983 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h +Fu(,)630 981 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h (follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f -Fu(standard:)870 1119 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g -(digit)g(graph)g(lower)870 1228 y(print)g(punct)g(space)f(upper)h(word) -190 b(xdigit)630 1364 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h +Fu(standard:)870 1115 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g +(digit)g(graph)g(lower)870 1224 y(print)g(punct)g(space)f(upper)h(word) +190 b(xdigit)630 1358 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h (an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 -b(The)41 b Ft(word)630 1474 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +b(The)41 b Ft(word)630 1468 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Ft(_)p Fu('.)630 1610 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(_)p Fu('.)630 1602 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1720 y(whic)m(h)29 +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1711 y(whic)m(h)29 b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) -m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1829 +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1821 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fr(c)p Fu(.)630 1965 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Fr(c)p Fu(.)630 1955 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fr(sym)m(b)s(ol)p Fu(.)275 2129 y(If)29 b(the)g Ft(extglob)f +Fr(sym)m(b)s(ol)p Fu(.)275 2113 y(If)29 b(the)g Ft(extglob)f Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e -Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2239 +Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2222 y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j -Fu(is)d(a)g(list)g(of)150 2348 y(one)d(or)f(more)h(patterns)f +Fu(is)d(a)g(list)g(of)150 2332 y(one)d(or)f(more)h(patterns)f (separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -2458 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -2622 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2731 y Fu(Matc)m(hes)h +2442 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +2600 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2709 y Fu(Matc)m(hes)h (zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 -2894 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3003 y Fu(Matc)m(hes)h +2867 y Ft(*\()p Fj(pattern-list)p Ft(\))630 2977 y Fu(Matc)m(hes)h (zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) -150 3166 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3275 +150 3135 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3245 y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m -(en)i(patterns.)150 3437 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 3547 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 3709 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3819 +(en)i(patterns.)150 3403 y Ft(@\()p Fj(pattern-list)p +Ft(\))630 3513 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) +150 3671 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3780 y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)150 4021 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 -b(al)150 4168 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f -(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p -Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 -4278 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m -(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4523 y Fs(3.6)68 -b(Redirections)150 4682 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h +(patterns.)275 3939 y(Complicated)41 b(extended)f(pattern)g(matc)m +(hing)h(against)h(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d +(when)150 4048 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f +(the)g(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42 +b(Using)29 b(separate)150 4158 y(matc)m(hes)38 b(against)g(shorter)e +(strings,)i(or)f(using)f(arra)m(ys)h(of)g(strings)f(instead)h(of)g(a)g +(single)g(long)h(string,)150 4267 y(ma)m(y)31 b(b)s(e)f(faster.)150 +4465 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150 +4612 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f(unquoted)f +(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p Ft(\\)p +Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 +4722 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m +(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4961 y Fs(3.6)68 +b(Redirections)150 5121 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h (its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k -Fu(using)c(a)i(sp)s(ecial)f(no-)150 4792 y(tation)d(in)m(terpreted)f(b) +Fu(using)c(a)i(sp)s(ecial)f(no-)150 5230 y(tation)d(in)m(terpreted)f(b) m(y)f(the)h(shell.)40 b(Redirection)27 b(allo)m(ws)h(commands')f -(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4902 +(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 5340 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f(to)h(di\013eren)m(t)f (\014les,)h(and)f(can)g(c)m(hange)h(the)g(\014les)f(the)g(command)g -(reads)150 5011 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 -b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g -(in)g(the)h(curren)m(t)150 5121 y(shell)e(execution)h(en)m(vironmen)m -(t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g -(precede)h(or)f(app)s(ear)150 5230 y(an)m(ywhere)30 b(within)f(a)h -(simple)f(command)h(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 -b(Redirections)30 b(are)g(pro)s(cessed)150 5340 y(in)g(the)h(order)f -(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)p eop -end -%%Page: 33 39 -TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 -y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h -(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e) -150 408 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f -Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k -(for)c(eac)m(h)i(redirection)f(op)s(erator)150 518 y(except)30 -b Ft(>)p Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s -(cate)h(a)e(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i -(it)f(to)150 628 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p -Fu(.)45 b(If)31 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b) -m(y)g Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5 +(reads)p eop end +%%Page: 34 40 +TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 +y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b) +s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g(in)g(the)h(curren)m(t) +150 408 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37 +b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g(precede)h(or)f +(app)s(ear)150 518 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h +(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 b(Redirections)30 +b(are)g(pro)s(cessed)150 628 y(in)g(the)h(order)f(they)g(app)s(ear,)g +(from)g(left)h(to)g(righ)m(t.)275 758 y(Eac)m(h)45 b(redirection)h +(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h(a)h(\014le)f(descriptor)f +(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 868 y(preceded)41 +b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f Fi({)p Fr(v)-5 +b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k(for)c(eac)m(h)i +(redirection)f(op)s(erator)150 977 y(except)30 b Ft(>)p +Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s(cate)h(a)e +(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i(it)f(to)150 +1087 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)45 b(If)31 +b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b)m(y)g +Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5 b(alue)32 b(of)g Fr(v)-5 b(arname)36 b Fu(de\014nes)31 -b(the)h(\014le)150 737 y(descriptor)e(to)h(close.)275 -877 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g +b(the)h(\014le)150 1196 y(descriptor)i(to)g(close.)52 +b(If)34 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})34 b Fu(is)g(supplied,)g +(the)g(redirection)g(p)s(ersists)f(b)s(ey)m(ond)g(the)h(scop)s(e)g(of) +150 1306 y(the)d(command,)f(allo)m(wing)i(the)f(shell)f(programmer)g +(to)h(manage)h(the)e(\014le)h(descriptor)f(himself.)275 +1437 y(In)d(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g (descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g -(c)m(har-)150 986 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g +(c)m(har-)150 1546 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g (is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g -(standard)f(input)f(\(\014le)150 1096 y(descriptor)33 +(standard)f(input)f(\(\014le)150 1656 y(descriptor)33 b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f (redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection) -g(refers)150 1205 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 1345 y(The)h(w)m(ord)h(follo)m(wing)i(the)f +g(refers)150 1765 y(to)e(the)g(standard)e(output)h(\(\014le)h +(descriptor)f(1\).)275 1896 y(The)h(w)m(ord)h(follo)m(wing)i(the)f (redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f -(unless)e(other-)150 1455 y(wise)21 b(noted,)i(is)e(sub)5 +(unless)e(other-)150 2005 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter) -e(expansion,)i(command)150 1564 y(substitution,)31 b(arithmetic)h +e(expansion,)i(command)150 2115 y(substitution,)31 b(arithmetic)h (expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g -(and)f(w)m(ord)h(splitting.)150 1674 y(If)f(it)h(expands)e(to)i(more)g +(and)f(w)m(ord)h(splitting.)150 2225 y(If)f(it)h(expands)e(to)i(more)g (than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275 -1813 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g +2355 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g (signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390 -1953 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2092 y +2485 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2616 y Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f (1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) -150 2202 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 -2341 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2481 y Fu(directs)28 +150 2725 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 +2856 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2986 y Fu(directs)28 b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m -(y)150 2590 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g +(y)150 3096 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g (standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p -Fu(.)275 2730 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s +Fu(.)275 3226 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s (ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e -(describ)s(ed)150 2839 y(in)38 b(the)h(follo)m(wing)h(table.)66 +(describ)s(ed)150 3336 y(in)38 b(the)h(follo)m(wing)h(table.)66 b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f -(running)f(pro)m(vides)h(these)150 2949 y(sp)s(ecial)27 +(running)f(pro)m(vides)h(these)150 3446 y(sp)s(ecial)27 b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m (ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150 -3059 y(describ)s(ed)j(b)s(elo)m(w.)150 3225 y Ft(/dev/fd/)p -Fj(fd)630 3335 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 +3555 y(describ)s(ed)j(b)s(elo)m(w.)150 3707 y Ft(/dev/fd/)p +Fj(fd)630 3816 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)150 -3499 y Ft(/dev/stdin)630 3609 y Fu(File)i(descriptor)e(0)h(is)f -(duplicated.)150 3773 y Ft(/dev/stdout)630 3883 y Fu(File)i(descriptor) -e(1)h(is)f(duplicated.)150 4047 y Ft(/dev/stderr)630 -4157 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 -4321 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4431 +3968 y Ft(/dev/stdin)630 4077 y Fu(File)i(descriptor)e(0)h(is)f +(duplicated.)150 4228 y Ft(/dev/stdout)630 4338 y Fu(File)i(descriptor) +e(1)h(is)f(duplicated.)150 4489 y Ft(/dev/stderr)630 +4599 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 +4750 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4860 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In) m(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s -(ort)630 4540 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f +(ort)630 4969 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f (attempts)h(to)f(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m -(et.)150 4705 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 -4814 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 +(et.)150 5121 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 +5230 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fr(p)s(ort)j -Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 4924 y(n)m(um)m(b)s(er)23 +Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 5340 y(n)m(um)m(b)s(er)23 b(or)h(service)h(name,)h(Bash)e(attempts)h(to)g(op)s(en)f(the)g -(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)275 5091 y(A)30 -b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g(the)f -(redirection)h(to)g(fail.)275 5230 y(Redirections)f(using)e(\014le)i -(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f(with)h -(care,)h(as)g(they)f(ma)m(y)150 5340 y(con\015ict)i(with)f(\014le)h -(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 -b(.)p eop end -%%Page: 34 40 -TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 -y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 446 y Fu(Redirection)35 -b(of)f(input)f(causes)i(the)f(\014le)g(whose)g(name)g(results)g(from)g -(the)g(expansion)g(of)g Fr(w)m(ord)k Fu(to)d(b)s(e)150 -555 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h(descriptor)f -Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i(descriptor)f -(0\))h(if)f Ft(n)g Fu(is)h(not)150 665 y(sp)s(eci\014ed.)275 -805 y(The)c(general)j(format)e(for)h(redirecting)g(input)e(is:)390 -944 y Ft([)p Fj(n)p Ft(]<)p Fj(word)150 1149 y Fk(3.6.2)63 -b(Redirecting)40 b(Output)150 1296 y Fu(Redirection)31 -b(of)g(output)f(causes)h(the)f(\014le)h(whose)f(name)g(results)h(from)e -(the)i(expansion)f(of)h Fr(w)m(ord)i Fu(to)f(b)s(e)150 -1405 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h(descriptor)f -Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h(descriptor)f -(1\))h(if)g Fr(n)e Fu(is)i(not)150 1515 y(sp)s(eci\014ed.)40 -b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g(it)g(is)f(created;)i -(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f(to)h(zero)g(size.) -275 1654 y(The)e(general)j(format)e(for)h(redirecting)g(output)f(is:) -390 1794 y Ft([)p Fj(n)p Ft(]>[|])p Fj(word)275 1934 -y Fu(If)g(the)h(redirection)g(op)s(erator)g(is)g(`)p -Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g(the)g -Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2043 y(enabled,)h(the)g +(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)p eop end +%%Page: 35 41 +TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)275 299 +y(A)30 b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g +(the)f(redirection)h(to)g(fail.)275 439 y(Redirections)f(using)e +(\014le)i(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f +(with)h(care,)h(as)g(they)f(ma)m(y)150 548 y(con\015ict)i(with)f +(\014le)h(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 +b(.)150 753 y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 +900 y Fu(Redirection)35 b(of)f(input)f(causes)i(the)f(\014le)g(whose)g +(name)g(results)g(from)g(the)g(expansion)g(of)g Fr(w)m(ord)k +Fu(to)d(b)s(e)150 1010 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h +(descriptor)f Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i +(descriptor)f(0\))h(if)f Ft(n)g Fu(is)h(not)150 1119 +y(sp)s(eci\014ed.)275 1259 y(The)c(general)j(format)e(for)h +(redirecting)g(input)e(is:)390 1399 y Ft([)p Fj(n)p Ft(]<)p +Fj(word)150 1604 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150 +1751 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose) +f(name)g(results)h(from)e(the)i(expansion)f(of)h Fr(w)m(ord)i +Fu(to)f(b)s(e)150 1861 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h +(descriptor)f Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h +(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 1970 +y(sp)s(eci\014ed.)40 b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g +(it)g(is)f(created;)i(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f +(to)h(zero)g(size.)275 2110 y(The)e(general)j(format)e(for)h +(redirecting)g(output)f(is:)390 2250 y Ft([)p Fj(n)p +Ft(]>[|])p Fj(word)275 2390 y Fu(If)g(the)h(redirection)g(op)s(erator)g +(is)g(`)p Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g +(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2500 y(enabled,)h(the)g (redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g (results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150 -2153 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 +2609 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 -2262 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e +2719 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e Fu(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g -(ev)m(en)h(if)e(the)h(\014le)150 2372 y(named)30 b(b)m(y)g -Fr(w)m(ord)k Fu(exists.)150 2576 y Fk(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)150 2723 y Fu(Redirection)23 b(of)e(output)h(in)f +(ev)m(en)h(if)e(the)h(\014le)150 2829 y(named)30 b(b)m(y)g +Fr(w)m(ord)k Fu(exists.)150 3033 y Fk(3.6.3)63 b(App)s(ending)42 +b(Redirected)e(Output)150 3180 y Fu(Redirection)23 b(of)e(output)h(in)f (this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f -(from)g(the)h(expansion)g(of)150 2833 y Fr(w)m(ord)28 +(from)g(the)h(expansion)g(of)150 3290 y Fr(w)m(ord)28 b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g (descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g -(descriptor)150 2942 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s +(descriptor)150 3399 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s (eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g -(is)f(created.)275 3082 y(The)f(general)j(format)e(for)h(app)s(ending)e -(output)h(is:)390 3222 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 -3426 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g -(Standard)g(Error)150 3573 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s +(is)f(created.)275 3539 y(The)f(general)j(format)e(for)h(app)s(ending)e +(output)h(is:)390 3679 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 +3884 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g +(Standard)g(Error)150 4031 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s (oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f -(the)g(standard)f(error)150 3683 y(output)d(\(\014le)h(descriptor)f +(the)g(standard)f(error)150 4141 y(output)d(\(\014le)h(descriptor)f (2\))h(to)g(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is) -f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 3822 y(There)f(are)i(t)m +f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 4281 y(There)f(are)i(t)m (w)m(o)h(formats)e(for)h(redirecting)g(standard)e(output)h(and)g -(standard)f(error:)390 3962 y Ft(&>)p Fj(word)150 4101 -y Fu(and)390 4241 y Ft(>&)p Fj(word)150 4381 y Fu(Of)h(the)g(t)m(w)m(o) +(standard)f(error:)390 4421 y Ft(&>)p Fj(word)150 4561 +y Fu(and)390 4701 y Ft(>&)p Fj(word)150 4841 y Fu(Of)h(the)g(t)m(w)m(o) i(forms,)e(the)h(\014rst)e(is)i(preferred.)39 b(This)30 b(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 b(to)390 -4520 y Ft(>)p Fj(word)46 b Ft(2>&1)275 4660 y Fu(When)41 +4981 y Ft(>)p Fj(word)46 b Ft(2>&1)275 5121 y Fu(When)41 b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand) f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p Ft(-)p Fu('.)75 -b(If)41 b(it)h(do)s(es,)150 4769 y(other)27 b(redirection)g(op)s +b(If)41 b(it)h(do)s(es,)150 5230 y(other)27 b(redirection)g(op)s (erators)f(apply)h(\(see)g(Duplicating)h(File)f(Descriptors)h(b)s(elo)m -(w\))f(for)f(compatibilit)m(y)150 4879 y(reasons.)150 -5083 y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g -(Standard)g(Error)150 5230 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s -(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f -(the)g(standard)f(error)150 5340 y(output)d(\(\014le)h(descriptor)f -(2\))h(to)g(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g -(is)h(the)f(expansion)h(of)f Fr(w)m(ord)p Fu(.)p eop +(w\))f(for)f(compatibilit)m(y)150 5340 y(reasons.)p eop end -%%Page: 35 41 -TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)275 299 -y(The)29 b(format)i(for)f(app)s(ending)f(standard)h(output)g(and)f -(standard)h(error)g(is:)390 442 y Ft(&>>)p Fj(word)150 -585 y Fu(This)g(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 -b(to)390 728 y Ft(>>)p Fj(word)46 b Ft(2>&1)275 871 y -Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g(b)s(elo)m(w\).)150 -1079 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 1226 -y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g(shell) -h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m(til)h(a)g -(line)150 1336 y(con)m(taining)h(only)e Fr(w)m(ord)k +%%Page: 36 42 +TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 +y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g(Standard)g +(Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g +(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g +(standard)f(error)150 555 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g +(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g(is)h(the)f +(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 691 y(The)f(format)i(for)f(app) +s(ending)f(standard)h(output)g(and)f(standard)h(error)g(is:)390 +828 y Ft(&>>)p Fj(word)150 964 y Fu(This)g(is)g(seman)m(tically)j +(equiv)-5 b(alen)m(t)32 b(to)390 1100 y Ft(>>)p Fj(word)46 +b Ft(2>&1)275 1236 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g +(b)s(elo)m(w\).)150 1436 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 +1583 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g +(shell)h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m +(til)h(a)g(line)150 1693 y(con)m(taining)h(only)e Fr(w)m(ord)k Fu(\(with)c(no)g(trailing)h(blanks\))f(is)g(seen.)40 b(All)27 b(of)f(the)g(lines)h(read)f(up)f(to)i(that)g(p)s(oin)m(t)150 -1445 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) +1803 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\))g(for)h -(a)f(command.)275 1589 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f -(is:)390 1732 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p -Fj(word)772 1841 y(here-document)390 1951 y(delimiter)275 -2094 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h +(a)f(command.)275 1939 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f +(is:)390 2075 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p +Fj(word)772 2184 y(here-document)390 2294 y(delimiter)275 +2430 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h (command)f(substitution,)h(arithmetic)g(expansion,)g(or)150 -2204 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i +2540 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i Fr(w)m(ord)p Fu(.)39 b(If)25 b(an)m(y)i(part)e(of)h Fr(w)m(ord)j Fu(is)d(quoted,)i(the)e Fr(delimiter)33 b Fu(is)26 b(the)150 -2313 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f +2649 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f Fr(w)m(ord)p Fu(,)g(and)f(the)h(lines)g(in)g(the)g(here-do)s(cumen)m(t) -g(are)g(not)g(expanded.)47 b(If)150 2423 y Fr(w)m(ord)26 +g(are)g(not)g(expanded.)47 b(If)150 2759 y Fr(w)m(ord)26 b Fu(is)c(unquoted,)h(all)g(lines)g(of)g(the)f(here-do)s(cumen)m(t)g (are)h(sub)5 b(jected)22 b(to)h(parameter)g(expansion,)h(com-)150 -2532 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f +2868 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f (c)m(haracter)i(sequence)f Ft(\\newline)d Fu(is)j(ignored,)150 -2642 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g +2978 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g (the)g(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft($)p -Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 2785 y(If)21 b(the)i(redirection)g +Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 3114 y(If)21 b(the)i(redirection)g (op)s(erator)g(is)f(`)p Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g (c)m(haracters)h(are)e(stripp)s(ed)f(from)h(input)150 -2895 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g +3224 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f -(within)f(shell)i(scripts)e(to)150 3004 y(b)s(e)e(inden)m(ted)g(in)g(a) -h(natural)f(fashion.)150 3212 y Fk(3.6.7)63 b(Here)41 -b(Strings)150 3359 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s -(cumen)m(ts,)f(the)g(format)h(is:)390 3502 y Ft([)p Fj(n)p -Ft(]<<<)46 b Fj(word)275 3645 y Fu(The)21 b Fr(w)m(ord)k -Fu(undergo)s(es)c(brace)h(expansion,)i(tilde)e(expansion,)i(parameter)e -(and)f(v)-5 b(ariable)23 b(expansion,)150 3755 y(command)j -(substitution,)g(arithmetic)i(expansion,)f(and)e(quote)i(remo)m(v)-5 -b(al.)40 b(P)m(athname)27 b(expansion)f(and)150 3865 -y(w)m(ord)32 b(splitting)h(are)g(not)g(p)s(erformed.)46 -b(The)32 b(result)g(is)h(supplied)e(as)i(a)f(single)i(string,)f(with)f -(a)h(newline)150 3974 y(app)s(ended,)c(to)i(the)g(command)f(on)g(its)h -(standard)e(input)h(\(or)g(\014le)h(descriptor)f Fr(n)g -Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\).)150 4182 y Fk(3.6.8)63 -b(Duplicating)41 b(File)g(Descriptors)150 4329 y Fu(The)30 -b(redirection)h(op)s(erator)390 4472 y Ft([)p Fj(n)p -Ft(]<&)p Fj(word)150 4615 y Fu(is)k(used)e(to)j(duplicate)f(input)f -(\014le)g(descriptors.)53 b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one) -g(or)g(more)g(digits,)h(the)f(\014le)150 4725 y(descriptor)e(denoted)h -(b)m(y)f Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g -(\014le)f(descriptor.)50 b(If)33 b(the)h(digits)g(in)f -Fr(w)m(ord)150 4835 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f -(descriptor)g(op)s(en)g(for)g(input,)g(a)h(redirection)g(error)f(o)s -(ccurs.)40 b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 -4944 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g -Fr(n)f Fu(is)g(closed.)43 b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s -(eci\014ed,)f(the)h(standard)f(input)g(\(\014le)h(descriptor)f(0\))150 -5054 y(is)g(used.)275 5197 y(The)f(op)s(erator)390 5340 -y Ft([)p Fj(n)p Ft(]>&)p Fj(word)p eop end -%%Page: 36 42 -TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 -y(is)40 b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h -(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f -(standard)150 408 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f -(used.)39 b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 -b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 -518 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 -b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 b(to)f(`)p -Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g Fu(is)g(closed.)150 -628 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i(and) -e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g -(digits)h(or)f(`)p Ft(-)p Fu(',)150 737 y(the)d(standard)e(output)h -(and)g(standard)f(error)h(are)h(redirected)g(as)g(describ)s(ed)e -(previously)-8 b(.)150 938 y Fk(3.6.9)63 b(Mo)m(ving)41 -b(File)h(Descriptors)150 1085 y Fu(The)30 b(redirection)h(op)s(erator) -390 1220 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 -1356 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k -Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f -(input)f(\(\014le)j(descriptor)e(0\))150 1465 y(if)f -Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33 -b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fr(n)p Fu(.)275 1601 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 1736 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p -Ft(-)150 1872 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +(within)f(shell)i(scripts)e(to)150 3333 y(b)s(e)e(inden)m(ted)g(in)g(a) +h(natural)f(fashion.)150 3534 y Fk(3.6.7)63 b(Here)41 +b(Strings)150 3681 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s +(cumen)m(ts,)f(the)g(format)h(is:)390 3817 y Ft([)p Fj(n)p +Ft(]<<<)46 b Fj(word)275 3953 y Fu(The)29 b Fr(w)m(ord)k +Fu(undergo)s(es)c(tilde)i(expansion,)f(parameter)h(and)e(v)-5 +b(ariable)31 b(expansion,)f(command)g(sub-)150 4063 y(stitution,)25 +b(arithmetic)f(expansion,)h(and)d(quote)h(remo)m(v)-5 +b(al.)40 b(P)m(athname)23 b(expansion)g(and)f(w)m(ord)g(splitting)150 +4172 y(are)35 b(not)g(p)s(erformed.)51 b(The)34 b(result)h(is)g +(supplied)e(as)i(a)f(single)i(string,)f(with)g(a)g(newline)f(app)s +(ended,)g(to)150 4282 y(the)d(command)f(on)g(its)h(standard)e(input)h +(\(or)g(\014le)h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)h(sp)s +(eci\014ed\).)150 4483 y Fk(3.6.8)63 b(Duplicating)41 +b(File)g(Descriptors)150 4630 y Fu(The)30 b(redirection)h(op)s(erator) +390 4766 y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 4902 y +Fu(is)k(used)e(to)j(duplicate)f(input)f(\014le)g(descriptors.)53 +b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one)g(or)g(more)g(digits,)h +(the)f(\014le)150 5011 y(descriptor)e(denoted)h(b)m(y)f +Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g(\014le)f +(descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fr(w)m(ord)150 +5121 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f(descriptor)g(op)s(en)g +(for)g(input,)g(a)h(redirection)g(error)f(o)s(ccurs.)40 +b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 5230 y(to)31 +b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g Fr(n)f Fu(is)g(closed.)43 +b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s(eci\014ed,)f(the)h(standard)f +(input)g(\(\014le)h(descriptor)f(0\))150 5340 y(is)g(used.)p +eop end +%%Page: 37 43 +TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 +y(The)29 b(op)s(erator)390 432 y Ft([)p Fj(n)p Ft(]>&)p +Fj(word)150 565 y Fu(is)40 b(used)g(similarly)h(to)g(duplicate)f +(output)g(\014le)h(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s +(eci\014ed,)i(the)f(standard)150 674 y(output)30 b(\(\014le)g +(descriptor)g(1\))h(is)f(used.)39 b(If)30 b(the)g(digits)h(in)e +Fr(w)m(ord)34 b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g +(op)s(en)150 784 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s +(ccurs.)55 b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 +b(to)f(`)p Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g +Fu(is)g(closed.)150 894 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e +Fr(n)f Fu(is)h(omitted,)i(and)e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand) +f(to)i(one)f(or)g(more)g(digits)h(or)f(`)p Ft(-)p Fu(',)150 +1003 y(the)d(standard)e(output)h(and)g(standard)f(error)h(are)h +(redirected)g(as)g(describ)s(ed)e(previously)-8 b(.)150 +1199 y Fk(3.6.9)63 b(Mo)m(ving)41 b(File)h(Descriptors)150 +1346 y Fu(The)30 b(redirection)h(op)s(erator)390 1479 +y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 1612 y Fu(mo)m(v)m(es)i +(the)f(\014le)g(descriptor)f Fr(digit)k Fu(to)d(\014le)g(descriptor)g +Fr(n)p Fu(,)f(or)h(the)g(standard)f(input)f(\(\014le)j(descriptor)e +(0\))150 1722 y(if)f Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 +b Fr(digit)33 b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h +Fr(n)p Fu(.)275 1855 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 1988 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p +Ft(-)150 2121 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g (standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -1982 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 -2182 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g -(Reading)e(and)h(W)-10 b(riting)150 2329 y Fu(The)30 -b(redirection)h(op)s(erator)390 2464 y Ft([)p Fj(n)p -Ft(]<>)p Fj(word)150 2600 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) +2230 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 +2426 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g +(Reading)e(and)h(W)-10 b(riting)150 2573 y Fu(The)30 +b(redirection)h(op)s(erator)390 2706 y Ft([)p Fj(n)p +Ft(]<>)p Fj(word)150 2839 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f -(for)g(b)s(oth)h(reading)g(and)150 2710 y(writing)33 +(for)g(b)s(oth)h(reading)g(and)150 2949 y(writing)33 b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h (descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2819 y(exist,)e(it)g(is)g -(created.)150 3062 y Fs(3.7)68 b(Executing)46 b(Commands)150 -3286 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -3433 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 3058 y(exist,)e(it)g(is)g +(created.)150 3296 y Fs(3.7)68 b(Executing)46 b(Commands)150 +3519 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 +3666 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g (shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150 -3542 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 3678 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h +3775 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) +199 3908 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h (mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g -(preceding)f(the)330 3788 y(command)30 b(name\))h(and)f(redirections)h +(preceding)f(the)330 4018 y(command)30 b(name\))h(and)f(redirections)h (are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 -3923 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 +4151 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f -(\(see)h(Sec-)330 4032 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g -(21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)330 4142 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f +(\(see)h(Sec-)330 4260 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g +(22\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h +(the)e(\014rst)330 4370 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f (the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g -(are)g(the)h(argu-)330 4251 y(men)m(ts.)199 4386 y(3.)61 +(are)g(the)h(argu-)330 4479 y(men)m(ts.)199 4612 y(3.)61 b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m -(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(32\).)199 -4521 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p +(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(33\).)199 +4745 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) -e(tilde)i(expansion,)g(parameter)330 4631 y(expansion,)49 +e(tilde)i(expansion,)g(parameter)330 4855 y(expansion,)49 b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 -b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 4741 y(b)s(eing)30 -b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4902 y(If)32 +b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 4964 y(b)s(eing)30 +b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 5121 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) -150 5011 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 +150 5230 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h -(command)g(and)150 5121 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h +(command)g(and)150 5340 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h (shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) -m(ts)i(attempts)f(to)h(assign)150 5230 y(a)j(v)-5 b(alue)39 -b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j -(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 -5340 y(status.)p eop end -%%Page: 37 43 -TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 -y(If)33 b(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s -(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 -408 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f -(causes)h(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275 -548 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g -(expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m -(w.)150 658 y(Otherwise,)39 b(the)e(command)g(exits.)62 -b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f -(substitu-)150 767 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command)f -(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution) -150 877 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f -(substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150 -987 y(zero.)150 1191 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h -(Execution)150 1338 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h -(in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g -(and)f(an)150 1448 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g -(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 1587 y(1.)61 -b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e -(shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists) -330 1697 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f -(function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h -(3.3)h([Shell)330 1807 y(F)-8 b(unctions],)31 b(page)h(17.)199 -1944 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e -(function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h -(of)g(shell)330 2053 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g -(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 2190 y(3.)61 -b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g -(builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330 -2300 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d -Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m -(y)g(that)330 2410 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to) -f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e -(to)330 2519 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f -Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g -Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 2629 y(Builtins],)37 -b(page)f(42\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h -(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330 -2738 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39 -b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m -(hes)330 2848 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e -Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f -(exists,)330 2958 y(it)32 b(is)f(in)m(v)m(ok)m(ed)i(with)e(the)h -(original)g(command)f(and)g(the)h(original)g(command's)f(argumen)m(ts)h -(as)g(its)330 3067 y(argumen)m(ts,)h(and)e(the)i(function's)e(exit)i -(status)g(b)s(ecomes)f(the)g(exit)h(status)f(of)h(the)f(shell.)46 -b(If)31 b(that)330 3177 y(function)g(is)g(not)g(de\014ned,)f(the)i -(shell)f(prin)m(ts)f(an)h(error)g(message)h(and)f(returns)e(an)i(exit)h -(status)g(of)330 3286 y(127.)199 3423 y(4.)61 b(If)33 -b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g(the)h(command)f(name)g -(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the)330 3533 -y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g(separate)h -(execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 b(0)330 -3643 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h +m(ts)i(attempts)f(to)h(assign)p eop end +%%Page: 38 44 +TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 +y(a)39 b(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 +b(an)c(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)h(with)g(a)f +(non-zero)150 408 y(status.)275 538 y(If)33 b(no)g(command)g(name)h +(results,)g(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f +(a\013ect)i(the)f(curren)m(t)150 648 y(shell)d(en)m(vironmen)m(t.)41 +b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g +(with)f(a)h(non-zero)g(status.)275 778 y(If)26 b(there)i(is)f(a)h +(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e +(as)g(describ)s(ed)f(b)s(elo)m(w.)150 887 y(Otherwise,)39 +b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f +(con)m(tained)h(a)g(command)f(substitu-)150 997 y(tion,)i(the)d(exit)h +(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h +(last)g(command)f(substitution)150 1107 y(p)s(erformed.)55 +b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e +(command)h(exits)g(with)f(a)h(status)g(of)150 1216 y(zero.)150 +1406 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150 +1553 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m +(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150 +1663 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g +(actions)h(are)f(tak)m(en.)199 1793 y(1.)61 b(If)24 b(the)g(command)g +(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo) +s(cate)h(it.)39 b(If)24 b(there)g(exists)330 1902 y(a)h(shell)g +(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m +(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330 +2012 y(F)-8 b(unctions],)31 b(page)h(17.)199 2142 y(2.)61 +b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e +(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330 +2251 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) +f(is)g(in)m(v)m(ok)m(ed.)199 2381 y(3.)61 b(If)40 b(the)g(name)h(is)f +(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m +(tains)h(no)g(slashes,)i(Bash)330 2491 y(searc)m(hes)c(eac)m(h)g +(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g +(an)f(executable)h(\014le)f(b)m(y)g(that)330 2600 y(name.)56 +b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full) +f(pathnames)g(of)h(executable)h(\014les)e(to)330 2710 +y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g +(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell) +330 2819 y(Builtins],)37 b(page)f(43\).)55 b(A)35 b(full)g(searc)m(h)g +(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h +(if)g(the)330 2929 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f +(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g +(shell)g(searc)m(hes)330 3039 y(for)e(a)h(de\014ned)e(shell)h(function) +h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23 +b(that)h(function)f(exists,)330 3148 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i +(in)e(a)h(separate)h(execution)f(en)m(vironmen)m(t)g(with)f(the)h +(original)h(command)e(and)g(the)330 3258 y(original)26 +b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h(and)e(the)h +(function's)f(exit)i(status)f(b)s(ecomes)330 3367 y(the)j(exit)g +(status)g(of)f(that)h(subshell.)39 b(If)27 b(that)h(function)f(is)h +(not)g(de\014ned,)f(the)g(shell)h(prin)m(ts)f(an)g(error)330 +3477 y(message)k(and)f(returns)f(an)i(exit)g(status)g(of)f(127.)199 +3607 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g +(the)h(command)f(name)g(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the) +330 3716 y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g +(separate)h(execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 +b(0)330 3826 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h (remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)h(set)g(to)g(the) -330 3752 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 3889 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +330 3936 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 4065 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g (the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h -(\014le)g(is)g(not)330 3999 y(a)d(directory)-8 b(,)34 +(\014le)g(is)g(not)330 4175 y(a)d(directory)-8 b(,)34 b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -4109 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(40.)199 -4246 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +4285 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(41.)199 +4415 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f -(to)330 4355 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -4560 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -4707 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) +(to)330 4524 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +4714 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 +4861 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 -4847 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +4991 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f (shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g -(redirections)h(supplied)e(to)330 4956 y(the)g Ft(exec)e -Fu(builtin)225 5093 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) +(redirections)h(supplied)e(to)330 5101 y(the)g Ft(exec)e +Fu(builtin)225 5230 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) -330 5203 y(in)m(v)m(o)s(cation)225 5340 y Fq(\017)60 -b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f -Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)p -eop end -%%Page: 38 44 -TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)225 299 -y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f -Ft(trap)225 435 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g -(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f -Ft(set)f Fu(or)i(inherited)f(from)g(the)330 545 y(shell's)i(paren)m(t)f -(in)g(the)h(en)m(vironmen)m(t)225 682 y Fq(\017)60 b +330 5340 y(in)m(v)m(o)s(cation)p eop end +%%Page: 39 45 +TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)225 299 +y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h +(set)g(b)m(y)f Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f +(paren)m(t)225 434 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m +(y)f Ft(trap)225 570 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h +(are)g(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f +Ft(set)f Fu(or)i(inherited)f(from)g(the)330 680 y(shell's)i(paren)m(t)f +(in)g(the)h(en)m(vironmen)m(t)225 815 y Fq(\017)60 b Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e (inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 -791 y(en)m(vironmen)m(t)225 928 y Fq(\017)60 b Fu(options)33 +925 y(en)m(vironmen)m(t)225 1061 y Fq(\017)60 b Fu(options)33 b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) -g(with)g(command-line)g(argumen)m(ts\))h(or)330 1037 -y(b)m(y)c Ft(set)225 1174 y Fq(\017)60 b Fu(options)31 +g(with)g(command-line)g(argumen)m(ts\))h(or)330 1170 +y(b)m(y)c Ft(set)225 1306 y Fq(\017)60 b Fu(options)31 b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e -(Shopt)g(Builtin],)h(page)g(64\))225 1310 y Fq(\017)60 +(Shopt)g(Builtin],)h(page)g(65\))225 1441 y Fq(\017)60 b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f -Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(90\))225 -1447 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(92\))225 +1577 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f -(\(see)i(Section)g(3.2.3)g([Lists],)330 1556 y(page)31 +(\(see)i(Section)g(3.2.3)g([Lists],)330 1687 y(page)31 b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Ft($PPID)275 1722 y Fu(When)k(a)g(simple)h(command)f +b(alue)31 b(of)f Ft($PPID)275 1849 y Fu(When)k(a)g(simple)h(command)f (other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f -(executed,)i(it)f(is)150 1832 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(executed,)i(it)f(is)150 1959 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g (separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) -f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 1941 y(noted,)31 +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 2068 y(noted,)31 b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -2080 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +2205 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e (an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m -(y)g(redirections)g(to)330 2189 y(the)g(command)225 2326 +(y)g(redirections)g(to)330 2315 y(the)g(command)225 2450 y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -2462 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -2599 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 +2586 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +2722 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 -b(ariables)32 b(exp)s(orted)g(for)g(the)330 2709 y(command,)e(passed)g +b(ariables)32 b(exp)s(orted)g(for)g(the)330 2831 y(command,)e(passed)g (in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m -(vironmen)m(t],)e(page)g(38\))225 2845 y Fq(\017)60 b +(vironmen)m(t],)e(page)g(39\))225 2967 y Fq(\017)60 b Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g -(and)330 2955 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 3120 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g +(and)330 3076 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) +275 3239 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g (en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 -3230 y(en)m(vironmen)m(t.)275 3368 y(Command)35 b(substitution,)j +3349 y(en)m(vironmen)m(t.)275 3485 y(Command)35 b(substitution,)j (commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m -(hronous)g(com-)150 3478 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i +(hronous)g(com-)150 3595 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i (subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g -(shell)g(en)m(vironmen)m(t,)150 3588 y(except)i(that)g(traps)f(caugh)m +(shell)g(en)m(vironmen)m(t,)150 3705 y(except)i(that)g(traps)f(caugh)m (t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 -3697 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +3814 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g -(of)h(a)f(pip)s(eline)g(are)h(also)150 3807 y(executed)41 +(of)h(a)f(pip)s(eline)g(are)h(also)150 3924 y(executed)41 b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 -3916 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -4055 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) +4033 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +4170 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e -Fu(option)150 4165 y(from)23 b(the)i(paren)m(t)f(shell.)38 +Fu(option)150 4280 y(from)23 b(the)i(paren)m(t)f(shell.)38 b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f -Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4303 +Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4416 y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c -(default)g(standard)f(input)150 4413 y(for)35 b(the)g(command)g(is)g +(default)g(standard)f(input)150 4526 y(for)35 b(the)g(command)g(is)g (the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 -b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4522 +b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4636 y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s -(di\014ed)g(b)m(y)g(redirections.)150 4726 y Fk(3.7.4)63 -b(En)m(vironmen)m(t)150 4873 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m +(di\014ed)g(b)m(y)g(redirections.)150 4837 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)150 4984 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m (ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h (the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 -4982 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g -Ft(name=value)p Fu(.)275 5121 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) +5094 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g +Ft(name=value)p Fu(.)275 5230 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 -b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5230 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5340 y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f -(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 -5340 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s +(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)p +eop end +%%Page: 40 46 +TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)150 299 +y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s (cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m -(t.)39 b(The)p eop end -%%Page: 39 45 -TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 -y Ft(export)35 b Fu(and)i(`)p Ft(declare)29 b(-x)p Fu(')36 -b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g(to)h(b)s(e)e -(added)h(to)h(and)150 408 y(deleted)21 b(from)f(the)h(en)m(vironmen)m -(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g -(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 518 -y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m +(t.)39 b(The)150 408 y Ft(export)c Fu(and)i(`)p Ft(declare)29 +b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g +(to)h(b)s(e)e(added)h(to)h(and)150 518 y(deleted)21 b(from)f(the)h(en)m +(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g +(in)f(the)g(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 +628 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m (vironmen)m(t,)g(replacing)h(the)e(old.)44 b(The)31 b(en)m(vironmen)m -(t)h(inherited)150 628 y(b)m(y)f(an)m(y)g(executed)h(command)f +(t)h(inherited)150 737 y(b)m(y)f(an)m(y)g(executed)h(command)f (consists)g(of)g(the)g(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f -(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 737 y(mo)s(di\014ed)26 +(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 847 y(mo)s(di\014ed)26 b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f (the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g -(plus)150 847 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d -Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 991 +(plus)150 956 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d +Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 1090 y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g (function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150 -1100 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +1199 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h (as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150 -1210 y(page)g(18.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +1309 y(page)g(19.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g (a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h -(command.)275 1354 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g -(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(60\),)h(then)e(all)g -(parameter)150 1464 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(command.)275 1442 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(61\),)h(then)e(all)g +(parameter)150 1552 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m (vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f -(precede)g(the)150 1573 y(command)g(name.)275 1717 y(When)h(Bash)h(in)m +(precede)g(the)150 1661 y(command)g(name.)275 1795 y(When)h(Bash)h(in)m (v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5 b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g -(pathname)150 1827 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g -(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2035 y Fk(3.7.5)63 -b(Exit)40 b(Status)150 2182 y Fu(The)26 b(exit)h(status)f(of)g(an)g +(pathname)150 1904 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2101 y Fk(3.7.5)63 +b(Exit)40 b(Status)150 2248 y Fu(The)26 b(exit)h(status)f(of)g(an)g (executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h -(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2292 +(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2357 y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g (b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s -(elo)m(w,)h(the)150 2401 y(shell)i(ma)m(y)g(use)f(v)-5 +(elo)m(w,)h(the)150 2467 y(shell)i(ma)m(y)g(use)f(v)-5 b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54 b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150 -2511 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 +2577 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150 -2621 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) -f(failure)h(mo)s(des.)275 2765 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s +2686 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) +f(failure)h(mo)s(des.)275 2819 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s (oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h -(status)f(has)f(succeeded.)150 2874 y(A)e(non-zero)h(exit)g(status)g +(status)f(has)f(succeeded.)150 2929 y(A)e(non-zero)h(exit)g(status)g (indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m -(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 2984 y(there)34 +(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 3039 y(there)34 b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f (and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 -b(arious)150 3093 y(failure)38 b(mo)s(des.)62 b(When)37 +b(arious)150 3148 y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e(a)h(fatal)h(signal)g(whose)e(n)m(um)m -(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3203 y(uses)30 +(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3258 y(uses)30 b(the)g(v)-5 b(alue)31 b(128)p Ft(+)p Fr(N)42 b Fu(as)30 -b(the)h(exit)g(status.)275 3347 y(If)k(a)h(command)g(is)g(not)g(found,) +b(the)h(exit)g(status.)275 3391 y(If)k(a)h(command)g(is)g(not)g(found,) g(the)g(c)m(hild)h(pro)s(cess)e(created)i(to)g(execute)g(it)g(returns)d -(a)j(status)f(of)150 3457 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) +(a)j(status)f(of)150 3501 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) f(but)h(is)g(not)h(executable,)h(the)f(return)e(status)i(is)f(126.)275 -3600 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f +3634 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f (during)g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150 -3710 y(is)c(greater)i(than)e(zero.)275 3854 y(The)38 +3743 y(is)c(greater)i(than)e(zero.)275 3877 y(The)38 b(exit)h(status)g(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h -(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 3964 -y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g(list) +(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 3986 +y(ditional)i(Constructs],)h(page)f(11\))g(and)e(some)i(of)f(the)g(list) g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150 -4073 y(page)31 b(9\).)275 4217 y(All)40 b(of)g(the)h(Bash)f(builtins)f +4096 y(page)31 b(9\).)275 4229 y(All)40 b(of)g(the)h(Bash)f(builtins)f (return)g(an)h(exit)h(status)g(of)f(zero)h(if)f(they)g(succeed)g(and)g -(a)g(non-zero)150 4327 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m +(a)g(non-zero)150 4339 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m (y)g(b)s(e)f(used)g(b)m(y)g(the)h(conditional)h(and)e(list)h -(constructs.)50 b(All)35 b(builtins)150 4436 y(return)e(an)i(exit)g +(constructs.)50 b(All)35 b(builtins)150 4448 y(return)e(an)i(exit)g (status)g(of)f(2)h(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in) -m(v)-5 b(alid)35 b(options)g(or)f(missing)150 4546 y(argumen)m(ts.)150 +m(v)-5 b(alid)35 b(options)g(or)f(missing)150 4558 y(argumen)m(ts.)150 4755 y Fk(3.7.6)63 b(Signals)150 4902 y Fu(When)36 b(Bash)g(is)h(in)m (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 @@ -10991,12 +11085,12 @@ h(that)h(the)f Ft(wait)150 5121 y Fu(builtin)24 b(is)h(in)m Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s (ops.)150 5230 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h -(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 5340 y(page)f(100\),)h +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 5340 y(page)f(102\),)h (Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h Ft(SIGTSTP)p Fu(.)p eop end -%%Page: 40 46 -TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299 +%%Page: 41 47 +TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 y(Non-builtin)31 b(commands)g(started)g(b)m(y)g(Bash)h(ha)m(v)m(e)g (signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31 b(inherited)150 408 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m(t.) @@ -11017,11 +11111,11 @@ g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 1211 y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h (from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e Fu(builtin)h(\(see)150 1320 y(Section)c(7.2)g([Job)e(Con)m(trol)i -(Builtins],)g(page)g(101\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i +(Builtins],)g(page)g(103\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i Ft(SIGHUP)c Fu(using)i Ft(disown)150 1430 y(-h)p Fu(.)275 1575 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f (set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -1684 y(Builtin],)31 b(page)g(64\),)h(Bash)f(sends)e(a)i +1684 y(Builtin],)31 b(page)g(65\),)h(Bash)f(sends)e(a)i Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) e(shell)g(exits.)275 1829 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g (command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) @@ -11039,7 +11133,7 @@ f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h (\014le)g(is)f(used)g(as)h(the)g(\014rst)150 2792 y(non-option)c (argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 -2902 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(82\),)i +2902 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(84\),)i (Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 3012 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 @@ -11069,7 +11163,7 @@ m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h (that)f(the)150 4757 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g Ft(hash)f Fu(in)h(Section)h(4.1)150 4866 y([Bourne)30 -b(Shell)h(Builtins],)g(page)g(42\))h(are)e(retained)h(b)m(y)f(the)h(c)m +b(Shell)h(Builtins],)g(page)g(43\))h(are)e(retained)h(b)m(y)f(the)h(c)m (hild.)275 5011 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g (a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) 150 5121 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h @@ -11080,9 +11174,9 @@ b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p Fu(,)e(P)m(erl,)150 5340 y(or)g(some)h(other)g(in)m(terpreter)g(and)e (write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h (language.)p eop end -%%Page: 41 47 -TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 +%%Page: 42 48 +TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)275 299 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m(terpreter)g(consist)g(of)g(a) g(single)h(optional)f(argumen)m(t)h(follo)m(wing)g(the)150 408 y(in)m(terpreter)33 b(name)h(on)f(the)g(\014rst)f(line)i(of)f(the)g @@ -11099,8 +11193,8 @@ Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h (script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091 y(under)j(another)h(shell.)p eop end -%%Page: 42 48 -TeXDict begin 42 47 bop 3659 -116 a Fu(42)150 299 y Fp(4)80 +%%Page: 43 49 +TeXDict begin 43 48 bop 3659 -116 a Fu(43)150 299 y Fp(4)80 b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 @@ -11119,39 +11213,40 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 1521 y(page)37 b(101\),)i(the)d(directory)g(stac)m(k)h +(Builtins],)150 1521 y(page)37 b(103\),)i(the)d(directory)g(stac)m(k)h (\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e -(93\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h -([Bash)f(History)g(Builtins],)h(page)g(137\),)h(and)d(the)h +(95\),)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(140\),)h(and)d(the)h (programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f -(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(131\).)275 +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(133\).)275 1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g -(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)29 -b(`)p Ft(-)p Fu(')g(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f(the)g -(end)g(of)g(the)h(options.)40 b(The)29 b Ft(:)p Fu(,)g -Ft(true)p Fu(,)g Ft(false)p Fu(,)f(and)h Ft(test)f Fu(builtins)150 -2215 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p -Ft(--)p Fu(')e(sp)s(ecially)-8 b(.)54 b(The)34 b Ft(exit)p -Fu(,)h Ft(logout)p Fu(,)f Ft(return)p Fu(,)g Ft(break)p -Fu(,)150 2325 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e -Ft(shift)f Fu(builtins)h(accept)i(and)e(pro)s(cess)g(argumen)m(ts)h(b)s -(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2434 -y(requiring)41 b(`)p Ft(--)p Fu('.)74 b(Other)41 b(builtins)g(that)h -(accept)h(argumen)m(ts)e(but)g(are)h(not)g(sp)s(eci\014ed)f(as)g -(accepting)150 2544 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s -(eginning)e(with)h(`)p Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25 -b(options)g(and)e(require)h(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150 -2653 y(this)30 b(in)m(terpretation.)150 2880 y Fs(4.1)68 -b(Bourne)45 b(Shell)g(Builtins)150 3040 y Fu(The)22 b(follo)m(wing)j -(shell)d(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g -(Shell.)38 b(These)22 b(commands)150 3149 y(are)31 b(implemen)m(ted)g -(as)f(sp)s(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 -3295 y Ft(:)h Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p -Fj(arguments)p Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g -(expanding)f Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f -(redirections.)76 b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 +(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)42 +b(`)p Ft(-)p Fu(')g(accepts)h(`)p Ft(--)p Fu(')f(to)h(signify)f(the)g +(end)f(of)h(the)g(options.)76 b(The)41 b Ft(:)p Fu(,)k +Ft(true)p Fu(,)f Ft(false)p Fu(,)g(and)d Ft(test)p Fu(/)p +Ft([)150 2215 y Fu(builtins)32 b(do)g(not)h(accept)h(options)f(and)f +(do)g(not)h(treat)g(`)p Ft(--)p Fu(')g(sp)s(ecially)-8 +b(.)48 b(The)32 b Ft(exit)p Fu(,)g Ft(logout)p Fu(,)f +Ft(return)p Fu(,)150 2325 y Ft(break)p Fu(,)38 b Ft(continue)p +Fu(,)f Ft(let)p Fu(,)i(and)d Ft(shift)g Fu(builtins)h(accept)i(and)e +(pro)s(cess)g(argumen)m(ts)h(b)s(eginning)e(with)150 +2434 y(`)p Ft(-)p Fu(')h(without)f(requiring)g(`)p Ft(--)p +Fu('.)59 b(Other)36 b(builtins)g(that)h(accept)h(argumen)m(ts)f(but)f +(are)h(not)g(sp)s(eci\014ed)f(as)150 2544 y(accepting)28 +b(options)f(in)m(terpret)g(argumen)m(ts)g(b)s(eginning)e(with)i(`)p +Ft(-)p Fu(')f(as)h(in)m(v)-5 b(alid)27 b(options)g(and)f(require)g(`)p +Ft(--)p Fu(')150 2653 y(to)31 b(prev)m(en)m(t)g(this)f(in)m +(terpretation.)150 2880 y Fs(4.1)68 b(Bourne)45 b(Shell)g(Builtins)150 +3040 y Fu(The)22 b(follo)m(wing)j(shell)d(builtin)h(commands)f(are)h +(inherited)g(from)f(the)h(Bourne)g(Shell.)38 b(These)22 +b(commands)150 3149 y(are)31 b(implemen)m(ted)g(as)f(sp)s(eci\014ed)g +(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 3295 y Ft(:)h +Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p Fj(arguments)p +Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g(expanding)f +Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f(redirections.)76 +b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h @@ -11182,9 +11277,9 @@ b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s (e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71 b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32 b(to)f Ft(source)p Fu(.)p eop end -%%Page: 43 49 -TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(43)150 299 y Ft(break)870 +%%Page: 44 50 +TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(44)150 299 y Ft(break)870 428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e @@ -11257,9 +11352,9 @@ b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f (or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h (zero.)p eop end -%%Page: 44 50 -TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f -(Builtin)h(Commands)2079 b(44)150 299 y Ft(exec)870 430 +%%Page: 45 51 +TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f +(Builtin)h(Commands)2079 b(45)150 299 y Ft(exec)870 430 y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i @@ -11275,24 +11370,26 @@ Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f (executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d (exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h (is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40 -b(An)630 1329 y(in)m(teractiv)m(e)d(shell)c(returns)g(failure)h(if)f -(the)h(\014le)g(cannot)g(b)s(e)f(executed.)52 b(If)33 -b(no)h Fr(command)630 1439 y Fu(is)27 b(sp)s(eci\014ed,)g(redirections) -h(ma)m(y)f(b)s(e)g(used)f(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g -(en)m(vironmen)m(t.)40 b(If)630 1548 y(there)34 b(are)h(no)f -(redirection)h(errors,)g(the)f(return)f(status)i(is)f(zero;)j -(otherwise)e(the)f(return)630 1658 y(status)d(is)f(non-zero.)150 -1811 y Ft(exit)870 1943 y(exit)47 b([)p Fj(n)p Ft(])630 -2074 y Fu(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g -Fr(n)f Fu(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30 -b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 y(exit)c(status)g(is)g(that)g -(of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 -b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 2293 y(b)s(efore)j(the)h -(shell)f(terminates.)150 2447 y Ft(export)870 2578 y(export)46 -b([-fn])g([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(]])630 -2710 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to) -i(c)m(hild)f(pro)s(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 -b(If)39 b(the)630 2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h +b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g +(the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32 +b(subshell)f(exits)630 1439 y(unconditionally)j(if)g +Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s +(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548 +y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m +(t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630 +1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e +(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943 +y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h +(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m +(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 +y(exit)c(status)g(is)g(that)g(of)g(the)g(last)g(command)f(executed.)41 +b(An)m(y)26 b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 +2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447 +y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p +Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40 +b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s +(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 b(If)39 b(the)630 +2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f (the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m @@ -11338,9 +11435,9 @@ b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m (shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop end -%%Page: 45 51 -TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y(When)41 +%%Page: 46 52 +TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the) @@ -11393,9 +11490,9 @@ b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f (eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477 -y(prin)m(ted.)k(If)30 b(m)m(ultiple)i Fr(name)k Fu(argumen)m(ts)31 -b(are)g(supplied)f(with)g Ft(-t)g Fu(the)h Fr(name)36 -b Fu(is)31 b(prin)m(ted)630 3587 y(b)s(efore)e(the)i(hashed)e(full)g +y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29 +b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34 +b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g (pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s (e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b) s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m @@ -11421,9 +11518,9 @@ b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630 5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h Fr(name)j Fu(refers)38 b(to)p eop end -%%Page: 46 52 -TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(a)37 +%%Page: 47 53 +TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(a)37 b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h @@ -11455,9 +11552,9 @@ b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630 1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630 2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f -(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)28 -b(trap)f(handler.)39 b(if)28 b Ft(return)e Fu(is)h(executed)i(during)d -(a)i Ft(DEBUG)f Fu(trap,)h(the)g(last)g(command)630 2297 +(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27 +b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d +(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297 y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e (executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25 @@ -11499,16 +11596,16 @@ Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s (elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630 -5087 y(Expressions],)39 b(page)g(87.)64 b Ft(test)37 +5087 y(Expressions],)39 b(page)g(89.)64 b Ft(test)37 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h (accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630 5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p Fu(.)p eop end -%%Page: 47 53 -TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(Expressions)23 +%%Page: 48 54 +TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s (erators,)g(listed)f(in)f(decreasing)630 408 y(order)30 b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33 @@ -11529,15 +11626,15 @@ b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630 1704 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 1853 y(0)h(argumen)m(ts)1110 1963 y(The)f(expression)g(is)g(false.)630 -2112 y(1)h(argumen)m(t)1110 2222 y(The)f(expression)g(is)g(true)h(if)f -(and)g(only)g(if)h(the)f(argumen)m(t)h(is)f(not)h(n)m(ull.)630 -2371 y(2)g(argumen)m(ts)1110 2481 y(If)f(the)h(\014rst)f(argumen)m(t)h +2112 y(1)h(argumen)m(t)1110 2222 y(The)f(expression)g(is)g(true)h(if,)f +(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630 +2371 y(2)h(argumen)m(ts)1110 2481 y(If)f(the)h(\014rst)f(argumen)m(t)h (is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f (only)h(if)g(the)1110 2590 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) 1110 2700 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f ([Bash)g(Conditional)g(Expres-)1110 2809 y(sions],)34 -b(page)f(87\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e +b(page)f(89\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e (test)j(is)f(true.)47 b(If)1110 2919 y(the)33 b(\014rst)g(argumen)m(t)h (is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g (expression)f(is)1110 3029 y(false.)630 3178 y(3)e(argumen)m(ts)1110 @@ -11545,7 +11642,7 @@ b(page)f(87\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e (order)g(listed.)84 b(If)44 b(the)1110 3397 y(second)f(argumen)m(t)g (is)g(one)g(of)g(the)g(binary)f(conditional)i(op)s(erators)f(\(see)1110 3507 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e -(87\),)k(the)43 b(result)1110 3616 y(of)h(the)h(expression)f(is)g(the)g +(89\),)k(the)43 b(result)1110 3616 y(of)h(the)h(expression)f(is)g(the)g (result)g(of)h(the)f(binary)g(test)h(using)e(the)i(\014rst)1110 3726 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44 b(The)31 b(`)p Ft(-a)p Fu(')h(and)g(`)p Ft(-o)p Fu(')f(op)s(erators)i @@ -11570,9 +11667,9 @@ b(according)h(to)e(prece-)1110 4971 y(dence)e(using)e(the)i(rules)f b(aluated)45 b(according)f(to)f(precedence)1110 5340 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)p eop end -%%Page: 48 54 -TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(When)40 +%%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(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g (lexicographically)630 408 y(using)30 b(ASCI)s(I)f(ordering.)150 @@ -11618,7 +11715,7 @@ b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37 b(Refer)22 b(to)h(the)g(description)f(of)630 3004 y(the)i Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i (Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3114 -y(page)33 b(64\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g +y(page)33 b(65\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3224 y(command)h Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g @@ -11659,9 +11756,9 @@ b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 5340 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s (er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f (mo)s(de)p eop end -%%Page: 49 55 -TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(mask)29 +%%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(mask)29 b(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 b(omitted,)j(the)630 408 y(curren)m(t)39 b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m @@ -11717,7 +11814,7 @@ b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 b(no)h Fr(v)-5 b(alue)630 3724 y Fu(is)37 b(giv)m(en,)j(the)d(name)g (and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3833 y(Section)31 -b(6.6)h([Aliases],)g(page)f(90.)150 3984 y Ft(bind)870 +b(6.6)h([Aliases],)g(page)f(92.)150 3984 y Ft(bind)870 4114 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 4224 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 @@ -11727,19 +11824,19 @@ Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 870 4662 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj (keyseq:readline-command)630 4792 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h -(Editing],)j(page)e(104\))g(k)m(ey)630 4902 y(and)36 +(Editing],)j(page)e(106\))g(k)m(ey)630 4902 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g(to)h(a)f (Readline)g(function)f(or)h(macro,)630 5011 y(or)44 b(set)h(a)g (Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t) f(is)g(a)h(command)f(as)g(it)630 5121 y(w)m(ould)e(app)s(ear)f(in)h(a)h (Readline)g(initialization)i(\014le)d(\(see)h(Section)g(8.3)g -([Readline)g(Init)630 5230 y(File],)c(page)d(107\),)j(but)c(eac)m(h)h +([Readline)g(Init)630 5230 y(File],)c(page)d(109\),)j(but)c(eac)m(h)h (binding)f(or)g(command)h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate) 630 5340 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft ("\\C-x\\C-r":re-read-init-f)o(ile)p Fu('.)p eop end -%%Page: 50 56 -TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(Options,)30 +%%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(Options,)30 b(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 454 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)m(y)f(the)g @@ -11802,9 +11899,9 @@ Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 b(This)35 b(is)i(useful)630 5340 y(when)29 b(de\014ning)h(a)g(shell)h(function)f (with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g(retaining)p eop end -%%Page: 51 57 -TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(the)34 +%%Page: 52 58 +TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y(the)34 b(functionalit)m(y)h(of)f(the)f(builtin)g(within)g(the)h(function.)50 b(The)33 b(return)g(status)h(is)f(non-)630 408 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)g(command.)150 @@ -11879,10 +11976,10 @@ y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g 5340 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using) p eop end -%%Page: 52 58 -TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y Ft(shopt)24 -b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f(Builtin],)k(page)e(64\),) +%%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(shopt)24 +b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f(Builtin],)k(page)e(65\),) i(the)d(source)h(\014le)f(name)h(and)630 408 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41 @@ -11897,14 +11994,14 @@ b(with)f(the)g(sp)s(ec-)630 1007 y(i\014ed)j(attributes)h(or)f(to)h (giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1167 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra) m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110 -1277 y(page)31 b(91\).)630 1437 y Ft(-A)384 b Fu(Eac)m(h)24 +1277 y(page)31 b(93\).)630 1437 y Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110 -1547 y(page)31 b(91\).)630 1707 y Ft(-f)384 b Fu(Use)31 +1547 y(page)31 b(93\).)630 1707 y Ft(-f)384 b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 1867 y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f (in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110 -1976 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(89\))h +1976 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(91\))h (is)f(p)s(erformed)e(when)h(the)1110 2086 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2246 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 @@ -11959,14 +12056,14 @@ g(assignmen)m(ts.)630 5230 y(The)35 b(return)f(status)i(is)g(zero)g (an)f(attempt)630 5340 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g (using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h (assign)p eop end -%%Page: 53 59 -TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(a)42 +%%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(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 b(alue)42 b(to)h(an)630 408 y(arra)m(y)30 b(v)-5 b(ariable)30 b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g -(\(see)h(Section)f(6.7)630 518 y([Arra)m(ys],)47 b(page)c(91\),)48 +(\(see)h(Section)f(6.7)630 518 y([Arra)m(ys],)47 b(page)c(93\),)48 b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 628 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g @@ -12016,9 +12113,9 @@ b(is)g(the)g(hex-)1110 5048 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 5206 y Ft(enable)870 5340 y(enable)46 b([-a])h([-dnps])f([-f)g Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])p eop end -%%Page: 54 60 -TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(Enable)36 +%%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(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 408 y(command)e(whic)m(h)g (has)g(the)g(same)h(name)f(as)h(a)f(shell)h(builtin)e(to)i(b)s(e)f @@ -12049,7 +12146,7 @@ b Ft(-s)g Fu(option)630 1912 y(restricts)j Ft(enable)d Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 2022 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i -(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(70\).)630 +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(71\).)630 2158 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g (error)630 2267 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g @@ -12074,7 +12171,7 @@ b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 b(Eac)m(h)630 4248 y Fr(expression)31 b Fu(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f (in)f(Section)i(6.5)g([Shell)630 4358 y(Arithmetic],)51 -b(page)46 b(89.)87 b(If)45 b(the)g(last)h Fr(expression)g +b(page)46 b(91.)87 b(If)45 b(the)g(last)h Fr(expression)g Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 4468 y(otherwise)31 b(0)g(is)f(returned.)150 4630 y Ft(local)870 4766 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p @@ -12091,72 +12188,74 @@ b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f (shell)630 5340 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f (function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 b(shell)34 b(options)p eop end -%%Page: 55 61 -TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(c)m(hanged)32 +%%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(c)m(hanged)32 b(using)e(the)i Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g (restored)h(to)g(their)f(original)630 408 y(v)-5 b(alues)25 b(when)e(the)i(function)f(returns.)37 b(The)24 b(return)f(status)i(is)f (zero)i(unless)d Ft(local)g Fu(is)i(used)630 518 y(outside)k(a)f (function,)h(an)f(in)m(v)-5 b(alid)29 b Fr(name)k Fu(is)28 b(supplied,)g(or)g Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5 -b(ariable.)150 681 y Ft(logout)870 817 y(logout)46 b([)p -Fj(n)p Ft(])630 953 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i +b(ariable.)150 674 y Ft(logout)870 807 y(logout)46 b([)p +Fj(n)p Ft(])630 940 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i (status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 -1116 y Ft(mapfile)870 1252 y(mapfile)46 b([-d)h Fj(delim)p +1096 y Ft(mapfile)870 1229 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g -Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 1362 +Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 1338 y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 1498 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e +Fj(array)p Ft(])630 1471 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e (input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 -b Fr(arra)m(y)p Fu(,)i(or)630 1607 y(from)28 b(\014le)h(descriptor)f +b Fr(arra)m(y)p Fu(,)i(or)630 1581 y(from)28 b(\014le)h(descriptor)f Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 -1717 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 +1690 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 -1880 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f +1846 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110 -1989 y(rather)30 b(than)g(newline.)630 2152 y Ft(-n)384 -b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41 -b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630 -2315 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39 -b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f -(is)g(0.)630 2477 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g -Fr(coun)m(t)j Fu(lines)e(read.)630 2640 y Ft(-t)384 b -Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g -(newline\))f(from)g(eac)m(h)i(line)f(read.)630 2803 y -Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f -Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630 -2966 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33 b Fr(callbac)m(k)39 -b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p Fu(P)f(lines)h(are)g(read.)45 -b(The)31 b Ft(-c)g Fu(op-)1110 3075 y(tion)g(sp)s(eci\014es)f -Fr(quan)m(tum)p Fu(.)630 3238 y Ft(-c)384 b Fu(Sp)s(ecify)30 -b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m -(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 3401 y(If)36 -b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p -Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36 -b Fr(callbac)m(k)44 b Fu(is)630 3510 y(ev)-5 b(aluated,)30 -b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g -(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 3620 y(the)39 -b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e -(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b -Fu(is)630 3729 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g -(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 -3866 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g +1956 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 +2066 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m +(haracter.)630 2222 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 2378 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 +2534 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j +Fu(lines)e(read.)630 2690 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 2846 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 3002 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 +3112 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 3268 +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 3424 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 3533 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 +3643 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 3753 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 +3885 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 -b(assigning)630 3975 y(to)31 b(it.)630 4111 y Ft(mapfile)41 +b(assigning)630 3995 y(to)31 b(it.)630 4128 y Ft(mapfile)41 b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 -4221 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 +4237 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 -4384 y Ft(printf)870 4520 y(printf)46 b([-v)h Fj(var)p -Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4656 +4394 y Ft(printf)870 4526 y(printf)46 b([-v)h Fj(var)p +Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4659 y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) -630 4765 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g +630 4769 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g (the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 -b(ariable)39 b Fr(v)-5 b(ar)630 4875 y Fu(rather)30 b(than)g(b)s(eing)g +b(ariable)39 b Fr(v)-5 b(ar)630 4878 y Fu(rather)30 b(than)g(b)s(eing)g (prin)m(ted)g(to)h(the)g(standard)e(output.)630 5011 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 @@ -12167,16 +12266,16 @@ g(the)g(standard)f(output,)i(and)f(format)630 5340 y(sp)s (eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)p eop end -%%Page: 56 62 -TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(In)24 +%%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(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 408 y(extensions:)630 596 y Ft(\045b)384 b Fu(Causes)38 b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g (in)f(the)h(cor-)1110 706 y(resp)s(onding)31 b Fr(argumen)m(t)j Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j -Fu(\(see)h(Section)g(4.2)1110 816 y([Bash)e(Builtins],)g(page)g(49\).) +Fu(\(see)h(Section)g(4.2)1110 816 y([Bash)e(Builtins],)g(page)g(50\).) 630 1003 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j Fu(in)d(a)i(format)1110 1113 y(that)e(can)g(b)s(e)e(reused)h(as)h @@ -12218,7 +12317,7 @@ b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i (\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3657 y(plied)34 b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m (to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630 -3767 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(30,)j +3767 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(31,)j (and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630 3876 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the) g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 @@ -12233,7 +12332,7 @@ b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f (the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4424 y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed) g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630 -4534 y(Splitting],)38 b(page)f(30\).)60 b(The)35 b(bac)m(kslash)i(c)m +4534 y(Splitting],)38 b(page)f(31\).)60 b(The)35 b(bac)m(kslash)i(c)m (haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m (e)h(an)m(y)630 4643 y(sp)s(ecial)i(meaning)g(for)f(the)g(next)h(c)m (haracter)h(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)69 @@ -12249,221 +12348,226 @@ b(\014le)f(descriptor)g(is)g(supplied)e(as)j(the)630 5191 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h (supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)p eop end -%%Page: 57 63 -TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-a)30 +%%Page: 58 64 +TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-a)30 b Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m (tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110 408 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34 b Fu(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 -667 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f +671 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 -777 y(rather)30 b(than)g(newline.)630 927 y Ft(-e)384 -b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50 -b(page)45 b(104\))i(is)1110 1036 y(used)37 b(to)i(obtain)g(the)f(line.) -65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 -1146 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j -(editing)e(settings.)630 1295 y Ft(-i)f Fj(text)162 b -Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j -Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 1405 y(editing)31 -b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 1554 -y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f -Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110 -1664 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f(honors)g(a)h -(delimiter)g(if)f(few)m(er)h(than)1110 1773 y Fr(nc)m(hars)d -Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630 -1923 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j -(reading)e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than) -1110 2032 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g -(unless)f(EOF)h(is)g(encoun)m(tered)g(or)1110 2142 y -Ft(read)f Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m -(tered)g(in)f(the)g(input)g(are)1110 2252 y(not)g(treated)h(sp)s -(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m -(til)i Fr(nc)m(hars)1110 2361 y Fu(c)m(haracters)26 b(are)f(read.)38 -b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e -Ft(IFS)p Fu(;)1110 2471 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 +781 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h +Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110 +891 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)630 +1044 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f +(Line)h(Editing],)50 b(page)45 b(106\))i(is)1110 1154 +y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39 +b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 +1263 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k +(editing)d(settings,)j(but)c(uses)1110 1373 y(Readline's)31 +b(default)g(\014lename)f(completion.)630 1526 y Ft(-i)g +Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g +(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 +1636 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 +1789 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j +(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m +(aiting)1110 1899 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f +(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 2008 +y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g +(delimiter.)630 2162 y Ft(-N)g Fj(nchars)66 b Ft(read)39 +b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h +Fu(c)m(haracters)f(rather)d(than)1110 2271 y(w)m(aiting)32 +b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun) +m(tered)g(or)1110 2381 y Ft(read)f Fu(times)i(out.)43 +b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g +(are)1110 2491 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause) +g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110 +2600 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24 +b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e +Ft(IFS)p Fu(;)1110 2710 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read) -1110 2580 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g -(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2730 y +1110 2819 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g +(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2973 y Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) -1110 2839 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m -(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 2949 y(from)30 -b(a)h(terminal.)630 3098 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f +1110 3082 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m +(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 3192 y(from)30 +b(a)h(terminal.)630 3345 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f (giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h -(c)m(haracter.)1110 3208 y(The)30 b(bac)m(kslash)i(is)f(considered)g +(c)m(haracter.)1110 3455 y(The)30 b(bac)m(kslash)i(is)f(considered)g (to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 -3318 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i -(a)g(line)f(con)m(tin)m(uation.)630 3467 y Ft(-s)384 +3565 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i +(a)g(line)f(con)m(tin)m(uation.)630 3718 y Ft(-s)384 b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f -(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 3577 -y(ec)m(ho)s(ed.)630 3726 y Ft(-t)i Fj(timeout)1110 3836 +(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 3828 +y(ec)m(ho)s(ed.)630 3981 y Ft(-t)i Fj(timeout)1110 4091 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i -(if)g(a)g(complete)h(line)f(of)1110 3945 y(input)26 b(\(or)h(a)g(sp)s +(if)g(a)g(complete)h(line)f(of)1110 4200 y(input)26 b(\(or)h(a)g(sp)s (eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g -(within)f Fr(time-)1110 4055 y(out)37 b Fu(seconds.)53 +(within)f Fr(time-)1110 4310 y(out)37 b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d -(with)h(a)h(fractional)1110 4164 y(p)s(ortion)29 b(follo)m(wing)h(the)f +(with)h(a)h(fractional)1110 4419 y(p)s(ortion)29 b(follo)m(wing)h(the)f (decimal)h(p)s(oin)m(t.)40 b(This)29 b(option)g(is)g(only)g(e\013ectiv) -m(e)j(if)1110 4274 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h +m(e)j(if)1110 4529 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h (terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110 -4384 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g +4639 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g (\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110 -4493 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in) +4748 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in) m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p -Fu(.)1110 4603 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e +Fu(.)1110 4858 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 -4712 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g +4967 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g (input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110 -4822 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 -b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 4932 -y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5081 +5077 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 +b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 5187 +y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5340 y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h -Fr(fd)p Fu(.)150 5230 y Ft(readarray)870 5340 y(readarray)45 -b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h -Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])f([-t])h([-u)g -Fj(fd)p Ft(])p eop end -%%Page: 58 64 -TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(58)1061 299 y -Ft([-C)47 b Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 433 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e -(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 -b Fr(arra)m(y)p Fu(,)i(or)630 543 y(from)30 b(\014le)g(descriptor)h -Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 -677 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 836 -y Ft(source)870 971 y(source)46 b Fj(filename)630 1105 -y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)150 1264 -y Ft(type)870 1398 y(type)47 b([-afptP])e([)p Fj(name)i -Ft(...)o(])630 1533 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p -Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) -g(used)f(as)i(a)f(command)630 1642 y(name.)630 1777 y(If)g(the)g -Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g -(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p -Fu(',)630 1886 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p -Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h -Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 -1996 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g -(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h -Fr(name)40 b Fu(is)35 b(not)630 2105 y(found,)29 b(then)h(nothing)h(is) -f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 -2240 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h -Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g -(that)h(w)m(ould)630 2349 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g +Fr(fd)p Fu(.)p eop end +%%Page: 59 65 +TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(59)150 299 y Ft(readarray)870 +408 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p +Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])f([-t])h([-u)g +Fj(fd)p Ft(])1061 518 y([-C)g Fj(callback)p Ft(])e([-c)i +Fj(quantum)p Ft(])f([)p Fj(array)p Ft(])630 650 y Fu(Read)38 +b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j(the)e(indexed)g +(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p Fu(,)i(or)630 +760 y(from)30 b(\014le)g(descriptor)h Fr(fd)i Fu(if)d(the)h +Ft(-u)e Fu(option)i(is)g(supplied.)630 892 y(A)f(synon)m(ym)g(for)g +Ft(mapfile)p Fu(.)150 1047 y Ft(source)870 1179 y(source)46 +b Fj(filename)630 1312 y Fu(A)30 b(synon)m(ym)g(for)g +Ft(.)g Fu(\(see)i(Section)f(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g +(43\).)150 1467 y Ft(type)870 1599 y(type)47 b([-afptP])e([)p +Fj(name)i Ft(...)o(])630 1731 y Fu(F)-8 b(or)42 b(eac)m(h)g +Fr(name)p Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m +(terpreted)g(if)g(used)f(as)i(a)f(command)630 1841 y(name.)630 +1973 y(If)g(the)g Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c +Fu(prin)m(ts)h(a)h(single)g(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p +Ft(alias)p Fu(',)630 2083 y(`)p Ft(function)p Fu(',)32 +b(`)p Ft(builtin)p Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p +Ft(keyword)p Fu(',)f(if)h Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e +(function,)630 2192 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h +(reserv)m(ed)g(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 +b(If)34 b(the)h Fr(name)40 b Fu(is)35 b(not)630 2302 +y(found,)29 b(then)h(nothing)h(is)f(prin)m(ted,)g(and)g +Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 2434 +y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h Ft(type)e +Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g(that)h(w) +m(ould)630 2544 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 -2484 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g +2676 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g (eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h -(return)630 2593 y(`)p Ft(file)p Fu('.)630 2728 y(If)f(a)g(command)g +(return)630 2785 y(`)p Ft(file)p Fu('.)630 2918 y(If)f(a)g(command)g (is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f -(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 2837 +(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 3027 y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g -Ft($PATH)p Fu(.)630 2971 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g +Ft($PATH)p Fu(.)630 3160 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g (used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m -(tain)i(an)d(executable)630 3081 y(named)32 b Fr(\014le)p +(tain)i(an)d(executable)630 3269 y(named)32 b Fr(\014le)p Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f -(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3191 y(not)d(also)g -(used.)630 3325 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e +(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3379 y(not)d(also)g +(used.)630 3511 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j -(functions,)f(as)g(with)630 3435 y(the)h Ft(command)d -Fu(builtin.)630 3569 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h +(functions,)f(as)g(with)630 3621 y(the)h Ft(command)d +Fu(builtin.)630 3753 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h (of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h -(not)630 3678 y(found.)150 3838 y Ft(typeset)870 3972 +(not)630 3862 y(found.)150 4017 y Ft(typeset)870 4150 y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 4106 y Fu(The)31 +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4282 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i -(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4216 +(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4391 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150 -4375 y Ft(ulimit)870 4509 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c -([)p Fj(limit)p Ft(])630 4644 y(ulimit)25 b Fu(pro)m(vides)h(con)m +4546 y Ft(ulimit)870 4679 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c +([)p Fj(limit)p Ft(])630 4811 y(ulimit)25 b Fu(pro)m(vides)h(con)m (trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 -b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4753 +b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4921 y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630 -4863 y(as)i(follo)m(ws:)630 5022 y Ft(-S)384 b Fu(Change)30 +5030 y(as)i(follo)m(ws:)630 5185 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h -(resource.)630 5181 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) -g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630 -5340 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s -(orted.)p eop end -%%Page: 59 65 -TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y Ft(-b)384 -b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e(size.)630 -462 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)g(\014les)f -(created.)630 625 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a) -g(pro)s(cess's)f(data)h(segmen)m(t.)630 788 y Ft(-e)384 -b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p -Ft(")p Fu(nice)p Ft(")p Fu(\).)630 951 y Ft(-f)384 b -Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g -(shell)h(and)f(its)h(c)m(hildren.)630 1114 y Ft(-i)384 +(resource.)630 5340 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) +g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)p +eop end +%%Page: 60 66 +TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-a)384 +b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630 +454 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e +(size.)630 610 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core) +g(\014les)f(created.)630 765 y Ft(-d)384 b Fu(The)30 +b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630 +921 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y) +f(\()p Ft(")p Fu(nice)p Ft(")p Fu(\).)630 1076 y Ft(-f)384 +b Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the) +g(shell)h(and)f(its)h(c)m(hildren.)630 1232 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e -(signals.)630 1277 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s +(signals.)630 1387 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s (er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630 -1440 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s -(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1603 +1543 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s +(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1698 y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g -(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1713 -y(limit\).)630 1876 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s +(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1808 +y(limit\).)630 1963 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s (er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110 -1985 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) -630 2149 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 -2312 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m -(ytes)g(in)f(POSIX)f(message)j(queues.)630 2475 y Ft(-r)384 +2073 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) +630 2228 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 +2384 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m +(ytes)g(in)f(POSIX)f(message)j(queues.)630 2539 y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 -b(.)630 2638 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) -630 2801 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g -(time)h(in)f(seconds.)630 2964 y Ft(-u)384 b Fu(The)30 +b(.)630 2695 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) +630 2850 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g +(time)h(in)f(seconds.)630 3005 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 -b(ailable)33 b(to)e(a)f(single)i(user.)630 3127 y Ft(-v)384 +b(ailable)33 b(to)e(a)f(single)i(user.)630 3161 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5 -b(ailable)44 b(to)e(the)g(shell,)1110 3236 y(and,)30 +b(ailable)44 b(to)e(the)g(shell,)1110 3271 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 -3399 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(\014le)f(lo)s(c)m(ks.)630 3562 y Ft(-P)384 b Fu(The)30 +3426 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)630 3581 y Ft(-P)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 -3726 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(threads.)630 3889 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h +3737 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(threads.)630 3892 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f -(v)-5 b(alue)37 b(of)g(the)630 3998 y(sp)s(eci\014ed)c(resource.)51 +(v)-5 b(alue)37 b(of)g(the)630 4002 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e -Fu(stand)630 4108 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g +Fu(stand)630 4112 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g (curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8 -b(.)48 b(A)630 4217 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) +b(.)48 b(A)630 4221 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g -(limit)630 4327 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 +(limit)630 4331 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43 -b(the)d(curren)m(t)630 4437 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) +b(the)d(curren)m(t)630 4440 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f -(the)h Ft(-H)f Fu(option)630 4546 y(is)h(supplied.)39 +(the)h Ft(-H)f Fu(option)630 4550 y(is)h(supplied.)39 b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630 -4656 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 +4660 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46 -b(V)-8 b(alues)630 4765 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e +b(V)-8 b(alues)630 4769 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e (except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h -Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4875 y(units)h(of)g(512-b)m(yte)j +Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4879 y(units)h(of)g(512-b)m(yte)j (blo)s(c)m(ks;)e Ft(-P)p Fu(,)f Ft(-T)p Fu(,)h Ft(-b)p Fu(,)f Ft(-k)p Fu(,)g Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)h(are)f -(unscaled)g(v)-5 b(alues;)630 4984 y(and,)31 b(when)f(in)g +(unscaled)g(v)-5 b(alues;)630 4988 y(and,)31 b(when)f(in)g Fm(posix)g Fu(Mo)s(de)h(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s -(de],)h(page)h(96\),)h Ft(-c)630 5094 y Fu(and)d Ft(-f)p +(de],)h(page)h(98\),)h Ft(-c)630 5098 y Fu(and)d Ft(-f)p Fu(,)g(whic)m(h)g(are)h(in)f(512-b)m(yte)i(incremen)m(ts.)630 5230 y(The)i(return)g(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630 5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)p eop end -%%Page: 60 66 -TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(60)150 299 y Ft(unalias)870 +%%Page: 61 67 +TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(61)150 299 y Ft(unalias)870 428 y(unalias)46 b([-a])g([)p Fj(name)h Ft(...)g(])630 558 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71 b(If)40 b Ft(-a)f Fu(is)h(supplied,)h (all)g(aliases)h(are)630 668 y(remo)m(v)m(ed.)g(Aliases)31 -b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(90.)150 +b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(92.)150 898 y Fs(4.3)68 b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 1118 y Fk(4.3.1)63 b(The)41 b(Set)g(Builtin)150 1265 y Fu(This)35 b(builtin)h(is)g(so)g(complicated)i(that)f(it)f(deserv)m @@ -12524,12 +12628,12 @@ Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) 5011 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g (and)f(eac)m(h)h(subshell)f(en-)1110 5121 y(vironmen)m(t)j(separately)i (\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 -5230 y(vironmen)m(t],)i(page)f(37\),)i(and)d(ma)m(y)h(cause)f +5230 y(vironmen)m(t],)i(page)f(38\),)i(and)d(ma)m(y)h(cause)f (subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 5340 y(cuting)d(all)g (the)g(commands)f(in)g(the)g(subshell.)p eop end -%%Page: 61 67 -TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y(If)41 +%%Page: 62 68 +TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y(If)41 b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f (a)g(con)m(text)1110 408 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g (ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 @@ -12552,7 +12656,7 @@ Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g 1737 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f (those)i(that)f(precede)g(the)1110 1847 y(command)30 b(name.)630 1998 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g -(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(100\).)41 +(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(102\).)41 b(All)1110 2107 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s (cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110 2217 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m @@ -12568,7 +12672,7 @@ Fu(.)1110 3258 y Ft(braceexpand)1590 3367 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 3518 y Ft(emacs)240 b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g (Chapter)e(8)1590 3628 y([Command)33 b(Line)g(Editing],)h(page)h -(104\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in) +(106\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in) m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3888 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110 4039 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110 @@ -12577,14 +12681,14 @@ Fu(.)1110 4450 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p Fu(.)1110 4600 y Ft(histexpand)1590 4710 y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 4861 y Ft(history)144 b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) -1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(137.)60 +1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(140.)60 b(This)36 b(option)h(is)f(on)1590 5080 y(b)m(y)30 b(default)h(in)f(in)m (teractiv)m(e)j(shells.)1110 5230 y Ft(ignoreeof)1590 5340 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) e(reading)i(EOF.)p eop end -%%Page: 62 68 -TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y +%%Page: 63 69 +TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110 457 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110 615 y Ft(noclobber)1590 725 y Fu(Same)f(as)h Ft(-C)p @@ -12605,7 +12709,7 @@ b(of)1590 2101 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h (vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590 2588 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2698 y(dard)32 -b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(96\).) +b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(98\).) 1590 2807 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m (v)m(e)g(as)g(a)f(strict)h(su-)1590 2917 y(p)s(erset)30 b(of)h(that)f(standard.)1110 3075 y Ft(privileged)1590 @@ -12640,9 +12744,9 @@ b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 5340 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g (error)g(when)f(p)s(erforming)g(parameter)i(expansion.)p eop end -%%Page: 63 69 -TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y(An)28 +%%Page: 64 70 +TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e(standard)g (error,)h(and)f(a)h(non-)1110 408 y(in)m(teractiv)m(e)k(shell)e(will)g (exit.)630 568 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i @@ -12658,7 +12762,7 @@ b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h (command)g(and)f(its)i(expanded)1110 1275 y(argumen)m(ts.)630 1435 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h (expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 1544 -y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m +y(Expansion],)30 b(page)h(22\).)42 b(This)30 b(option)h(is)f(on)g(b)m (y)h(default.)630 1704 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 @@ -12670,7 +12774,7 @@ b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) (in)g(suc)m(h)g(cases.)630 2351 y Ft(-H)384 b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h (Section)h(9.3)f([History)g(In-)1110 2461 y(teraction],)g(page)d -(139\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(142\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m (teractiv)m(e)1110 2570 y(shells.)630 2730 y Ft(-P)384 b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g (when)f(p)s(erforming)g(commands)1110 2839 y(suc)m(h)29 @@ -12699,510 +12803,538 @@ b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 64 70 -TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-)432 +%%Page: 65 71 +TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33 b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e (p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630 -801 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p +784 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40 -b(The)27 b(options)h(can)630 910 y(also)36 b(b)s(e)f(used)f(up)s(on)g +b(The)27 b(options)h(can)630 893 y(also)36 b(b)s(e)f(used)f(up)s(on)g (in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 -1020 y(found)29 b(in)h Ft($-)p Fu(.)630 1161 y(The)43 +1003 y(found)29 b(in)h Ft($-)p Fu(.)630 1136 y(The)43 b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g -(parameters)g(and)f(are)h(assigned,)j(in)630 1271 y(order,)30 +(parameters)g(and)f(are)h(assigned,)j(in)630 1245 y(order,)30 b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f -Fu(is)g(set)h(to)g(N.)630 1412 y(The)f(return)f(status)i(is)f(alw)m(a)m +Fu(is)g(set)h(to)g(N.)630 1378 y(The)f(return)f(status)i(is)f(alw)m(a)m (ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 1625 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 -1772 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h +(supplied.)150 1574 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 +1721 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h (additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 -1952 y Ft(shopt)870 2093 y(shopt)46 b([-pqsu])g([-o])h([)p -Fj(optname)e Ft(...])630 2234 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 +1877 y Ft(shopt)870 2010 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)e Ft(...])630 2142 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s -(eha)m(vior.)55 b(The)34 b(settings)630 2344 y(can)24 +(eha)m(vior.)55 b(The)34 b(settings)630 2252 y(can)24 b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 -b(with)630 2453 y(the)k Ft(-o)f Fu(option)i(to)f(the)g +b(with)630 2362 y(the)k Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)630 2563 y(page)i(60\).)45 b(With)32 b(no)f(options,)h(or)g +(Builtin],)630 2471 y(page)i(61\).)45 b(With)32 b(no)f(options,)h(or)g (with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g -(options)630 2673 y(is)j(displa)m(y)m(ed,)h(with)f(an)f(indication)i -(of)e(whether)g(or)h(not)g(eac)m(h)h(is)e(set.)57 b(The)35 -b Ft(-p)g Fu(option)630 2782 y(causes)i(output)e(to)i(b)s(e)e(displa)m -(y)m(ed)i(in)f(a)g(form)g(that)h(ma)m(y)f(b)s(e)g(reused)f(as)h(input.) -57 b(Other)630 2892 y(options)31 b(ha)m(v)m(e)g(the)g(follo)m(wing)h -(meanings:)630 3065 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f -Fr(optname)p Fu(.)630 3238 y Ft(-u)384 b Fu(Disable)31 -b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3411 y +(options)630 2581 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 2690 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 2800 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 2910 y(follo)m(wing)h +(meanings:)630 3066 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f +Fr(optname)p Fu(.)630 3222 y Ft(-u)384 b Fu(Disable)31 +b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3378 y Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e -(status)i(indicates)h(whether)e(the)1110 3520 y Fr(optname)37 +(status)i(indicates)h(whether)e(the)1110 3487 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110 -3630 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f -(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3740 -y(zero)i(otherwise.)630 3913 y Ft(-o)384 b Fu(Restricts)22 +3597 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 3706 +y(zero)i(otherwise.)630 3862 y Ft(-o)384 b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110 -4022 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g -([The)e(Set)g(Builtin],)i(page)f(60\).)630 4195 y(If)e(either)i +3972 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g +([The)e(Set)g(Builtin],)i(page)f(61\).)630 4128 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 -4305 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m -(ely)-8 b(.)630 4446 y(Unless)30 b(otherwise)h(noted,)g(the)g +4238 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m +(ely)-8 b(.)630 4370 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 -b(b)m(y)e(default.)630 4587 y(The)d(return)f(status)i(when)f(listing)h +b(b)m(y)e(default.)630 4503 y(The)d(return)f(status)i(when)f(listing)h (options)g(is)f(zero)i(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g -(non-)630 4697 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f +(non-)630 4613 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f (unsetting)g(options,)i(the)e(return)f(status)h(is)g(zero)630 -4806 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 4948 y(The)f(list)h(of)f -Ft(shopt)f Fu(options)i(is:)630 5121 y Ft(autocd)192 +4722 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 4855 y(The)f(list)h(of)f +Ft(shopt)f Fu(options)i(is:)630 5011 y Ft(assoc_expand_once)1110 +5121 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 +5230 y(subscripts)f(during)h(arithmetic)i(expression)f(ev)-5 +b(aluation)37 b(and)e(while)h(exe-)1110 5340 y(cuting)31 +b(builtins)f(that)h(can)f(p)s(erform)f(v)-5 b(ariable)31 +b(assignmen)m(ts.)p eop end +%%Page: 66 72 +TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h -(a)f(directory)h(is)f(executed)1110 5230 y(as)j(if)f(it)h(w)m(ere)f -(the)h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 -b(This)29 b(option)g(is)h(only)1110 5340 y(used)g(b)m(y)g(in)m -(teractiv)m(e)j(shells.)p eop end -%%Page: 65 71 -TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(cdable_vars)1110 -408 y Fu(If)34 b(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f -Ft(cd)f Fu(builtin)h(command)f(that)i(is)f(not)1110 518 -y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v) --5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 628 -y(the)g(directory)f(to)i(c)m(hange)f(to.)630 792 y Ft(cdspell)144 -b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g -(directory)h(comp)s(onen)m(t)f(in)g(a)h Ft(cd)1110 902 -y Fu(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 -b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 -1011 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the) +h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29 +b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j +(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i +(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i +(is)f(not)1110 902 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h +(name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 +b(is)1110 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630 +1176 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g +(sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h +Ft(cd)1110 1285 y Fu(command)i(will)h(b)s(e)f(corrected.)43 +b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 +1395 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 -b(If)42 b(a)1110 1121 y(correction)25 b(is)e(found,)g(the)h(corrected)g -(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1230 +b(If)42 b(a)1110 1504 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1614 y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m -(teractiv)m(e)k(shells.)630 1395 y Ft(checkhash)1110 -1504 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 1614 +(teractiv)m(e)k(shells.)630 1778 y Ft(checkhash)1110 +1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 1998 y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 -b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 1724 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2107 y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -1888 y Ft(checkjobs)1110 1998 y Fu(If)d(set,)i(Bash)e(lists)h(the)g +2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g (status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) -1110 2107 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 +1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 -2217 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h -(exit)g(is)g(attempted)h(without)e(an)1110 2326 y(in)m(terv)m(ening)d -(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(100\).)40 -b(The)1110 2436 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h -(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2600 y Ft(checkwinsize)1110 -2710 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j -(after)f(eac)m(h)g(command)f(and,)j(if)1110 2819 y(necessary)-8 -b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Ft(LINES)e -Fu(and)g Ft(COLUMNS)p Fu(.)630 2984 y Ft(cmdhist)144 +2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d +(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(102\).)40 +b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110 +3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h +(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203 +y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62 +b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f +Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)630 3477 y Ft(cmdhist)144 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f -(of)g(a)h(m)m(ultiple-line)g(command)1110 3093 y(in)c(the)g(same)g +(of)g(a)h(m)m(ultiple-line)g(command)1110 3587 y(in)c(the)g(same)g (history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g -(re-editing)g(of)f(m)m(ulti-line)1110 3203 y(commands.)630 -3367 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect) -1110 3477 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h -(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3587 +(re-editing)g(of)f(m)m(ulti-line)1110 3696 y(commands.)79 +b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g +(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h +(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110 +3915 y(F)-8 b(acilities],)34 b(page)d(140\).)630 4080 +y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha) +m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect)1110 +4189 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h +(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 4299 y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e -(comparison)g(when)f(using)1110 3696 y(the)31 b Ft([[)e +(comparison)g(when)f(using)1110 4408 y(the)31 b Ft([[)e Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110 -3806 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e -(strcmp\(3\);)i(bash-4.1)g(and)1110 3915 y(later)e(use)f(the)h(curren)m +4518 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e +(strcmp\(3\);)i(bash-4.1)g(and)1110 4628 y(later)e(use)f(the)h(curren)m (t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630 -4080 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +4792 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s (eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect) -1110 4189 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 4299 +1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011 y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s (erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110 -4408 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 +5121 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110 -4518 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h -(terminates)g(due)e(to)i(an)1110 4628 y(in)m(terrupt.)630 -4792 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect) -1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011 -y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s -(erators)f(\(see)i(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 -5121 y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.) -64 b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 5230 y(later)24 -b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i -(the)e(in)m(terrupt;)i(previous)1110 5340 y(v)m(ersions)31 -b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)p +5230 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h +(terminates)g(due)e(to)i(an)1110 5340 y(in)m(terrupt.)p eop end -%%Page: 66 72 -TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(compat41)96 -b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g Fm(posix)g Fu(mo)s(de,)i -(treats)f(a)g(single)h(quote)f(in)f(a)h(double-)1110 -408 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s(ecial)f(c)m -(haracter.)90 b(The)45 b(single)1110 518 y(quotes)34 -b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e(and)g(the)h -(c)m(haracters)h(b)s(et)m(w)m(een)1110 628 y(the)40 b(single)g(quotes)g -(are)g(considered)g(quoted.)69 b(This)38 b(is)i(the)g(b)s(eha)m(vior)g -(of)1110 737 y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 +%%Page: 67 73 +TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(compat40)96 +b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i +(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110 +408 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f +(using)h(the)g Ft([[)g Fu(conditional)1110 518 y(command's)28 +b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s(erators)f(\(see)i +(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 628 +y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)64 +b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 737 y(later)24 +b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i +(the)e(in)m(terrupt;)i(previous)1110 847 y(v)m(ersions)31 +b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)630 +1003 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g +Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in)f(a)h +(double-)1110 1113 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s +(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 1223 +y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e +(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 1332 +y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69 +b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 1442 +y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 -847 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 -998 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s +1551 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 +1708 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s (cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 -1107 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 -b(al.)630 1258 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g +1817 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 +b(al.)630 1974 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g (not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f -(made)1110 1367 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i -(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 1477 +(made)1110 2084 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i +(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 2193 y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g -(non-fatal)i(errors)d(that)i(cause)1110 1587 y(the)28 +(non-fatal)i(errors)d(that)i(cause)1110 2303 y(the)28 b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f -(is)h(to)g(mak)m(e)g(them)1110 1696 y(fatal)42 b(errors)e(that)i(cause) +(is)h(to)g(mak)m(e)g(them)1110 2412 y(fatal)42 b(errors)e(that)i(cause) f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110 -1806 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g +2522 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g (executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110 -1915 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g -(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2066 -y Ft(complete_fullquote)1110 2176 y Fu(If)i(set,)g(Bash)h(quotes)f(all) -h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110 -2285 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43 -b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 2395 -y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g(sign)g(from)f -(the)h(set)g(of)f(c)m(haracters)1110 2504 y(that)f(will)g(b)s(e)f -(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i(metac)m(har-) -1110 2614 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 -b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.) -1110 2724 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 -b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 -2833 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) -g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 2943 +2632 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g +(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2788 +y Ft(compat44)96 b Fu(If)33 b(set,)i(Bash)f(sa)m(v)m(es)h(the)e(p)s +(ositional)i(parameters)f(to)g(BASH)p 3264 2788 28 4 +v 40 w(AR)m(GV)h(and)1110 2898 y(BASH)p 1367 2898 V 40 +w(AR)m(GC)k(b)s(efore)e(they)i(are)f(used,)i(regardless)e(of)g(whether) +g(or)g(not)1110 3007 y(extended)30 b(debugging)h(mo)s(de)f(is)g +(enabled.)630 3164 y Ft(complete_fullquote)1110 3273 +y Fu(If)h(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e +(\014lenames)g(and)g(direc-)1110 3383 y(tory)g(names)f(when)g(p)s +(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m +(es)1110 3493 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g +(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3602 +y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f +(these)i(metac)m(har-)1110 3712 y(acters)29 b(app)s(ear)e(in)g(shell)h +(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e +(completed.)1110 3821 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v) +-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 +3931 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) +g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 4041 y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 -3052 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f -(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 3162 +4150 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4260 y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g -(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 3271 y(through)30 -b(4.2.)630 3422 y Ft(direxpand)1110 3532 y Fu(If)k(set,)i(Bash)f +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4369 y(through)30 +b(4.2.)630 4526 y Ft(direxpand)1110 4635 y Fu(If)k(set,)i(Bash)f (replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g -(ex-)1110 3641 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 3751 +(ex-)1110 4745 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4855 y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 -b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 3861 +b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4964 y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 -4011 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s +5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s (elling)g(correction)g(on)g(directory)g(names)f(during)1110 -4121 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g -(initially)h(supplied)e(do)s(es)h(not)1110 4230 y(exist.)630 -4381 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g -(\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 b(in)27 -b(the)h(results)g(of)1110 4491 y(\014lename)j(expansion.)630 -4641 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m -(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) -1110 4751 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) -h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 -4861 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Ft(exec)f Fu(fails.)630 5011 y Ft(expand_aliases)1110 -5121 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) -s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 5230 y(tion)38 -b(6.6)h([Aliases],)j(page)d(90.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 5340 y(in)m(teractiv)m(e)33 -b(shells.)p eop end -%%Page: 67 73 -TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(extdebug)96 +5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g +(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p +eop end +%%Page: 68 74 +TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(dotglob)144 +b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f +(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f +(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p +Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518 +y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f +Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b +Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will) +f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp) +s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f +Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33 +b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630 +1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g +(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-) +1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(92.)64 +b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110 +1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96 b Fu(If)36 b(set)h(at)h(shell)f(in)m(v)m(o)s(cation,)j(arrange)d(to)h -(execute)g(the)f(debugger)f(pro\014le)1110 408 y(b)s(efore)f(the)h +(execute)g(the)f(debugger)f(pro\014le)1110 1669 y(b)s(efore)f(the)h (shell)f(starts,)j(iden)m(tical)f(to)f(the)g Ft(--debugger)c -Fu(option.)56 b(If)35 b(set)1110 518 y(after)25 b(in)m(v)m(o)s(cation,) -j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g(debuggers)f(is)h -(enabled:)1159 652 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g -Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -762 y(Builtins],)29 b(page)g(49\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 871 y(b)s(er)h(corresp)s -(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) -1290 981 y(men)m(t.)1159 1115 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 1224 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 1358 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m -(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 1468 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h -(subroutine)e(\(a)i(shell)g(function)f(or)1290 1577 y(a)h(shell)g +Fu(option.)56 b(If)35 b(set)1110 1778 y(after)25 b(in)m(v)m(o)s +(cation,)j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g +(debuggers)f(is)h(enabled:)1159 1915 y(1.)61 b(The)37 +b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i +(Section)f(4.2)h([Bash)1290 2025 y(Builtins],)29 b(page)g(50\))g +(displa)m(ys)f(the)g(source)h(\014le)f(name)g(and)f(line)h(n)m(um-)1290 +2134 y(b)s(er)h(corresp)s(onding)g(to)i(eac)m(h)g(function)f(name)g +(supplied)f(as)i(an)f(argu-)1290 2244 y(men)m(t.)1159 +2381 y(2.)61 b(If)20 b(the)h(command)g(run)e(b)m(y)i(the)f +Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 b(alue,)1290 +2491 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g(not)i +(executed.)1159 2628 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m(y)i +(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 +b(of)f(2,)1290 2737 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h +(subroutine)e(\(a)i(shell)g(function)f(or)1290 2847 y(a)h(shell)g (script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f -Fu(builtins\),)i(the)g(shell)1290 1687 y(sim)m(ulates)d(a)g(call)h(to)f -Ft(return)p Fu(.)1159 1821 y(4.)61 b Ft(BASH_ARGC)34 +Fu(builtins\),)i(the)g(shell)1290 2956 y(sim)m(ulates)d(a)g(call)h(to)f +Ft(return)p Fu(.)1159 3093 y(4.)61 b Ft(BASH_ARGC)34 b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 1931 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(71\).)1159 2064 y(5.)61 +g(their)1290 3203 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g +(V)-8 b(ariables],)32 b(page)f(72\).)1159 3340 y(5.)61 b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 -b(substitution,)63 b(shell)1290 2174 y(functions,)32 +b(substitution,)63 b(shell)1290 3450 y(functions,)32 b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f -Fj(command)e Ft(\))j Fu(inherit)h(the)1290 2284 y Ft(DEBUG)d -Fu(and)h Ft(RETURN)e Fu(traps.)1159 2418 y(6.)61 b(Error)41 +Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3559 y Ft(DEBUG)d +Fu(and)h Ft(RETURN)e Fu(traps.)1159 3696 y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f -(func-)1290 2527 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i +(func-)1290 3806 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i (with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g -Ft(ERR)1290 2637 y Fu(trap.)630 2795 y Ft(extglob)144 +Ft(ERR)1290 3915 y Fu(trap.)630 4080 y Ft(extglob)144 b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 2905 y(Section)j(3.5.8.1)i -([P)m(attern)f(Matc)m(hing],)g(page)f(31\))h(are)f(enabled.)630 -3063 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4189 y(Section)j(3.5.8.1)i +([P)m(attern)f(Matc)m(hing],)g(page)f(32\))h(are)f(enabled.)630 +4354 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e -Fu(quoting)k(is)e(p)s(erformed)f(within)1110 3173 y Ft(${)p +Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4463 y Ft(${)p Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f -(quotes.)55 b(This)33 b(option)1110 3282 y(is)d(enabled)h(b)m(y)f -(default.)630 3440 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d +(quotes.)55 b(This)33 b(option)1110 4573 y(is)d(enabled)h(b)m(y)f +(default.)630 4737 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d (whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g -(ex-)1110 3550 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 -3708 y Ft(force_fignore)1110 3818 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(ex-)1110 4847 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +5011 y Ft(force_fignore)1110 5121 y Fu(If)43 b(set,)k(the)d(su\016xes)f (sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 -b(ariable)44 b(cause)1110 3927 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +b(ariable)44 b(cause)1110 5230 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h (when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110 -4037 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g -(completions.)62 b(See)37 b(Section)h(5.2)1110 4147 y([Bash)24 -b(V)-8 b(ariables],)27 b(page)e(71,)h(for)d(a)h(description)g(of)g -Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 4256 y(is)30 -b(enabled)h(b)m(y)f(default.)630 4415 y Ft(globasciiranges)1110 -4524 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) -m(hing)h(brac)m(k)m(et)h(expres-)1110 4634 y(sions)28 -b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e -(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 4743 y(in)i(the)g(traditional)i -(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44 -b(That)31 b(is,)1110 4853 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) -h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 -4963 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p +5340 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g +(completions.)62 b(See)37 b(Section)h(5.2)p eop end +%%Page: 69 75 +TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y([Bash)24 +b(V)-8 b(ariables],)27 b(page)e(72,)h(for)d(a)h(description)g(of)g +Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 408 y(is)30 +b(enabled)h(b)m(y)f(default.)630 603 y Ft(globasciiranges)1110 +713 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)m +(hing)h(brac)m(k)m(et)h(expres-)1110 822 y(sions)28 b(\(see)h(Section)h +(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e(32\))g(b)s(eha)m(v)m(e) +g(as)g(if)1110 932 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p) +s(erforming)g(comparisons.)44 b(That)31 b(is,)1110 1042 +y(the)d(curren)m(t)g(lo)s(cale's)i(collating)h(sequence)d(is)h(not)f +(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 1151 y(`)p +Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m -(w)m(er-)1110 5072 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i -(together.)630 5230 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) +(w)m(er-)1110 1261 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i +(together.)630 1456 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m -(text)j(will)1110 5340 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) -f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)p -eop end -%%Page: 68 74 -TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(the)30 -b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p Ft(/)p -Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -408 y(matc)m(h.)630 568 y Ft(gnu_errfmt)1110 677 y Fu(If)35 -b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fm(gnu)g Fu(error)1110 787 y(message)c(format.)630 -946 y Ft(histappend)1110 1056 y Fu(If)c(set,)j(the)e(history)g(list)g +(text)j(will)1110 1565 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) +f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)1110 +1675 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p +Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 +1784 y(matc)m(h.)630 1979 y Ft(gnu_errfmt)1110 2089 y +Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g +(standard)f Fm(gnu)g Fu(error)1110 2198 y(message)c(format.)630 +2393 y Ft(histappend)1110 2503 y Fu(If)c(set,)j(the)e(history)g(list)g (is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 1166 y(the)d Ft(HISTFILE)d Fu(v)-5 +b(alue)29 b(of)1110 2612 y(the)d Ft(HISTFILE)d Fu(v)-5 b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 1275 y(the)31 b(\014le.)630 1435 y Ft(histreedit)1110 -1544 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(erwriting)1110 2722 y(the)31 b(\014le.)630 2917 y Ft(histreedit)1110 +3026 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g (user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -1654 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -1813 y Ft(histverify)1110 1923 y Fu(If)35 b(set,)i(and)e(Readline)h(is) +3136 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +3331 y Ft(histverify)1110 3440 y Fu(If)35 b(set,)i(and)e(Readline)h(is) f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -2032 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 2142 y(resulting)i(line)f(is)h +3550 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 3660 y(resulting)i(line)f(is)h (loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 2252 y(further)29 b(mo)s(di\014cation.)630 2411 -y Ft(hostcomplete)1110 2521 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f +1110 3769 y(further)29 b(mo)s(di\014cation.)630 3964 +y Ft(hostcomplete)1110 4074 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f (b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -2630 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 2740 y(pleted)g(\(see)h +4183 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4293 y(pleted)g(\(see)h (Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(124\).)1110 2849 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 3009 y Ft(huponexit)1110 3118 y Fu(If)i(set,)i(Bash)f(will)h(send)d +(126\).)1110 4402 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) +630 4597 y Ft(huponexit)1110 4707 y Fu(If)i(set,)i(Bash)f(will)h(send)d Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 3228 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(39\).)630 3387 y Ft(inherit_errexit)1110 3497 +1110 4816 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(40\).)630 5011 y Ft(inherit_errexit)1110 5121 y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 -b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 3606 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230 y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m -(vironmen)m(t.)46 b(This)32 b(op-)1110 3716 y(tion)f(is)f(enabled)h -(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 3875 -y Ft(interactive_comments)1110 3985 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s +(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y Ft +(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s (eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) -f(all)i(remain-)1110 4095 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g (to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 -4204 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -4364 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f (not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 -4473 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m -(kground)g(in)g(the)g(curren)m(t)g(shell)1110 4583 y(en)m(vironmen)m -(t.)630 4742 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.) +630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -4852 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s -(edded)g(newlines)h(rather)g(than)f(using)1110 4961 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 5121 y Ft(login_shell)1110 -5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f -(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 -5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(82\).)41 -b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p -eop end -%%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(mailwarn)96 -b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m -(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408 -y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the) -c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g -Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 -693 y Ft(no_empty_cmd_completion)1110 803 y Fu(If)g(set,)g(and)g +1255 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 1365 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110 +1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g +(v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110 +1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g +(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5 +b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48 +b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y +Ft(login_shell)1110 2102 y Fu(The)k(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 +2212 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(84\).)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 +2361 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 2471 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 +2580 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 +2730 y Ft(no_empty_cmd_completion)1110 2839 y Fu(If)g(set,)g(and)g (Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e -(searc)m(h)1110 913 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f +(searc)m(h)1110 2949 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f (completions)j(when)d(completion)i(is)f(attempted)h(on)1110 -1022 y(an)k(empt)m(y)h(line.)630 1198 y Ft(nocaseglob)1110 -1307 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h -(case-insensitiv)m(e)j(fashion)c(when)1110 1417 y(p)s(erforming)29 -b(\014lename)i(expansion.)630 1592 y Ft(nocasematch)1110 -1702 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h -(case-insensitiv)m(e)i(fashion)d(when)1110 1811 y(p)s(erforming)31 +3059 y(an)k(empt)m(y)h(line.)630 3208 y Ft(nocaseglob)1110 +3318 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 3427 y(p)s(erforming)29 +b(\014lename)i(expansion.)630 3577 y Ft(nocasematch)1110 +3686 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 3796 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h -Ft([[)g Fu(conditional)h(com-)1110 1921 y(mands,)d(when)g(p)s +Ft([[)g Fu(conditional)h(com-)1110 3905 y(mands,)d(when)g(p)s (erforming)g(pattern)h(substitution)g(w)m(ord)g(expansions,)g(or)1110 -2030 y(when)g(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of) -h(programmable)f(com-)1110 2140 y(pletion.)630 2315 y +4015 y(when)g(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of) +h(programmable)f(com-)1110 4125 y(pletion.)630 4274 y Ft(nullglob)96 b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g (patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 -2425 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.) -630 2600 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g +4384 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.) +630 4533 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g (completion)g(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 -2710 y(grammable)45 b(Completion],)k(page)c(129\))h(are)f(enabled.)82 -b(This)44 b(option)h(is)1110 2819 y(enabled)30 b(b)m(y)h(default.)630 -2995 y Ft(promptvars)1110 3104 y Fu(If)50 b(set,)56 b(prompt)49 +4643 y(grammable)45 b(Completion],)k(page)c(131\))h(are)f(enabled.)82 +b(This)44 b(option)h(is)1110 4752 y(enabled)30 b(b)m(y)h(default.)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 -3214 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) -m(v)-5 b(al)35 b(after)f(b)s(eing)1110 3324 y(expanded)53 +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 3433 y(Prompt],)30 b(page)h(94\).)42 -b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 -3608 y Ft(restricted_shell)1110 3718 y Fu(The)40 b(shell)h(sets)g(this) -g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) -1110 3828 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e -(95\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 -3937 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f -(the)h(startup)g(\014les)f(are)i(executed,)1110 4047 -y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h -(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 4156 -y(stricted.)630 4332 y Ft(shift_verbose)1110 4441 y Fu(If)g(this)g(is)g -(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) -i(when)d(the)1110 4551 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m -(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 4726 y -Ft(sourcepath)1110 4836 y Fu(If)22 b(set,)j(the)e Ft(source)e -Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e -Fu(to)j(\014nd)d(the)h(directory)1110 4945 y(con)m(taining)29 -b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 -b(This)27 b(option)h(is)f(enabled)1110 5055 y(b)m(y)j(default.)630 -5230 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e +(trolling)g(the)1110 5340 y(Prompt],)30 b(page)h(96\).)42 +b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)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 +(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)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e(97\).)56 +b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 628 y(b)s(e)c(c)m +(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f(the)h(startup)g +(\014les)f(are)i(executed,)1110 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)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 +1604 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 1714 y(b)m(y)j(default.) +630 1873 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 5340 y(fault.)p eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y(The)27 -b(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i(if)e(all)i -Fr(optnames)i Fu(are)d(enabled,)g(non-)630 408 y(zero)40 -b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e -(return)f(status)h(is)g(zero)630 518 y(unless)30 b(an)g -Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.) -150 759 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 918 +(de-)1110 1983 y(fault.)630 2142 y(The)c(return)f(status)i(when)f +(listing)h(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i +Fu(are)d(enabled,)g(non-)630 2252 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 2361 y(unless)30 b(an)g Fr(optname)36 +b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150 +2602 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 2761 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g -(as)h Fl(sp)-5 b(e-)150 1028 y(cial)p Fu(.)47 b(When)33 +(as)h Fl(sp)-5 b(e-)150 2871 y(cial)p Fu(.)47 b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s (ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -1137 y(commands)e(in)g(three)h(resp)s(ects:)199 1272 +2980 y(commands)e(in)g(three)h(resp)s(ects:)199 3115 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h -(functions)f(during)f(command)h(lo)s(okup.)199 1406 y(2.)61 +(functions)f(during)f(command)h(lo)s(okup.)199 3249 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h -(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 1541 +(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 3384 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 -1650 y(after)i(the)f(command)h(completes.)275 1810 y(When)36 +3494 y(after)i(the)f(command)h(completes.)275 3653 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f (builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 -1919 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 +3763 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 2029 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(96.)275 -2164 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 -2298 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 2408 y(shift)g(trap)h(unset)p +(Section)h(6.11)150 3872 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(98.)275 +4007 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 +4141 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f +(readonly)f(return)h(set)390 4251 y(shift)g(trap)h(unset)p eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 3659 -116 a Fu(71)150 299 y Fp(5)80 -b(Shell)53 b(V)-13 b(ariables)150 539 y Fu(This)21 b(c)m(hapter)i +%%Page: 72 78 +TeXDict begin 72 77 bop 3659 -116 a Fu(72)150 299 y Fp(5)80 +b(Shell)53 b(V)-13 b(ariables)150 522 y Fu(This)21 b(c)m(hapter)i (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) 37 b(Bash)23 b(automatically)h(assigns)f(default)150 -648 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 -b(ariables.)150 892 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1051 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +631 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 867 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1027 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g -(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1161 y(assigns)f(a)f +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1136 y(assigns)f(a)f (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1323 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g +1291 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Ft(cd)f Fu(builtin)630 1433 y(command.)150 1594 y Ft(HOME)288 +Ft(cd)f Fu(builtin)630 1401 y(command.)150 1556 y Ft(HOME)288 b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 -1704 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +1665 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f -(3.5.2)h([Tilde)630 1813 y(Expansion],)30 b(page)h(22\).)150 -1975 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(3.5.2)h([Tilde)630 1775 y(Expansion],)30 b(page)h(23\).)150 +1930 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e -(as)i(part)630 2084 y(of)31 b(expansion.)150 2246 y Ft(MAIL)288 +(as)i(part)630 2039 y(of)31 b(expansion.)150 2194 y Ft(MAIL)288 b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f -(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2355 +(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2304 y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) -630 2465 y(\014le)f(or)h(Maildir-format)g(directory)-8 -b(.)150 2626 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f +630 2413 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2568 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f (\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m -(ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g +(ks)g(for)f(new)630 2678 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g (can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f -(new)h(mail)630 2845 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m +(new)h(mail)630 2787 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m (y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i -(`)p Ft(?)p Fu('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g +(`)p Ft(?)p Fu('.)630 2897 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g (message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m -(t)630 3064 y(mail)f(\014le.)150 3226 y Ft(OPTARG)192 +(t)630 3006 y(mail)f(\014le.)150 3161 y Ft(OPTARG)192 b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g (pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150 -3387 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g +3316 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f -Fu(builtin.)150 3548 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f +Fu(builtin.)150 3471 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3658 y(zero-length)e(\(n)m(ull\))g(directory)f +(commands.)45 b(A)630 3581 y(zero-length)e(\(n)m(ull\))g(directory)f (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f -(curren)m(t)630 3768 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(curren)m(t)630 3690 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f (directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g -(colons,)g(or)f(as)g(an)630 3877 y(initial)f(or)e(trailing)h(colon.)150 -4039 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 +(colons,)g(or)f(as)g(an)630 3800 y(initial)f(or)e(trailing)h(colon.)150 +3955 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 -b Fu('.)56 b(See)36 b(Section)g(6.9)630 4148 y([Con)m(trolling)42 -b(the)e(Prompt],)j(page)e(94,)j(for)c(the)g(complete)i(list)f(of)f -(escap)s(e)h(sequences)630 4258 y(that)31 b(are)g(expanded)e(b)s(efore) -h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4419 y Ft(PS2)336 -b Fu(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 -b(default)i(v)-5 b(alue)31 b(is)f(`)p Ft(>)g Fu('.)150 -4663 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4822 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 4064 y([Con)m(trolling)42 +b(the)e(Prompt],)j(page)e(96,)j(for)c(the)g(complete)i(list)f(of)f +(escap)s(e)h(sequences)630 4174 y(that)31 b(are)g(expanded)e(b)s(efore) +h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4329 y Ft(PS2)336 +b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28 +b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40 +b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4438 y(same)j(w)m(a)m(y)g +(as)g Ft(PS1)e Fu(b)s(efore)h(b)s(eing)g(displa)m(y)m(ed.)150 +4674 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4834 y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4932 y(sp)s(ecially)-8 b(.)275 5068 y(A)24 +(them)150 4943 y(sp)s(ecially)-8 b(.)275 5076 y(A)24 b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f (in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 -b(for)f(con)m(trolling)150 5178 y(the)31 b(job)f(con)m(trol)h +b(for)f(con)m(trolling)150 5185 y(the)31 b(job)f(con)m(trol)h (facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 -b(ariables],)32 b(page)g(103\).)150 5340 y Ft(BASH)288 +b(ariables],)32 b(page)g(105\).)150 5340 y Ft(BASH)288 b Fu(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) g(instance)h(of)g(Bash.)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Ft(BASHOPTS)96 +%%Page: 73 79 +TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(BASHOPTS)96 b Fu(A)31 b(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630 408 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g Ft(shopt)f Fu(builtin)g(command)h(\(see)g -(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(64\).)60 +(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(65\).)60 b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 @@ -13210,747 +13342,790 @@ b(ariable)36 b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630 737 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g (will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630 847 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8 -b(.)150 1029 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f +b(.)150 1011 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f (ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 -b(di\013ers)h(from)g Ft($$)630 1139 y Fu(under)31 b(certain)j +b(di\013ers)h(from)g Ft($$)630 1121 y Fu(under)31 b(certain)j (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) -g(Bash)g(to)h(b)s(e)630 1249 y(re-initialized.)150 1431 -y Ft(BASH_ALIASES)630 1541 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d -(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1650 y(of)c(aliases)h(as)f(main)m(tained)g(b)m -(y)g(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f -([Bourne)g(Shell)630 1760 y(Builtins],)31 b(page)g(42\).)42 -b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the) -g(alias)h(list;)h(ho)m(w-)630 1870 y(ev)m(er,)k(unsetting)f(arra)m(y)g -(elemen)m(ts)g(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b) -s(e)f(remo)m(v)m(ed)630 1979 y(from)25 b(the)h(alias)h(list.)40 -b(If)25 b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s -(ecial)g(prop)s(erties,)g(ev)m(en)630 2089 y(if)k(it)h(is)g(subsequen)m -(tly)f(reset.)150 2271 y Ft(BASH_ARGC)630 2381 y Fu(An)39 -b(arra)m(y)g(v)-5 b(ariable)40 b(whose)f(v)-5 b(alues)39 -b(are)h(the)f(n)m(um)m(b)s(er)f(of)h(parameters)g(in)g(eac)m(h)h(frame) -630 2491 y(of)i(the)g(curren)m(t)g(bash)f(execution)i(call)g(stac)m(k.) -76 b(The)42 b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 -2600 y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f +g(Bash)g(to)h(b)s(e)630 1230 y(re-initialized.)57 b(Assignmen)m(ts)35 +b(to)h Ft(BASHPID)d Fu(ha)m(v)m(e)j(no)f(e\013ect.)56 +b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 1340 y(loses)31 +b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 1504 y Ft(BASH_ALIASES)630 +1614 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5 +b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m +(ternal)h(list)630 1724 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g +(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g +(Shell)630 1833 y(Builtins],)31 b(page)g(43\).)42 b(Elemen)m(ts)31 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h +(ho)m(w-)630 1943 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g +(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m +(v)m(ed)630 2052 y(from)25 b(the)h(alias)h(list.)40 b(If)25 +b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s(ecial)g +(prop)s(erties,)g(ev)m(en)630 2162 y(if)k(it)h(is)g(subsequen)m(tly)f +(reset.)150 2326 y Ft(BASH_ARGC)630 2436 y Fu(An)39 b(arra)m(y)g(v)-5 +b(ariable)40 b(whose)f(v)-5 b(alues)39 b(are)h(the)f(n)m(um)m(b)s(er)f +(of)h(parameters)g(in)g(eac)m(h)h(frame)630 2545 y(of)i(the)g(curren)m +(t)g(bash)f(execution)i(call)g(stac)m(k.)76 b(The)42 +b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 2655 +y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f (executed)h(with)e Ft(.)h Fu(or)g Ft(source)p Fu(\))f(is)h(at)630 -2710 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 +2765 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h -(parameters)630 2819 y(passed)44 b(is)h(pushed)e(on)m(to)j +(parameters)630 2874 y(passed)44 b(is)h(pushed)e(on)m(to)j Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e -Fu(only)i(when)e(in)630 2929 y(extended)34 b(debugging)f(mo)s(de)g -(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(64,)g(for) -630 3039 y(a)c(description)f(of)h(the)f Ft(extdebug)e -Fu(option)j(to)g(the)g Ft(shopt)e Fu(builtin\).)150 3221 -y Ft(BASH_ARGV)630 3331 y Fu(An)24 b(arra)m(y)g(v)-5 -b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h(parameters)f(in)g(the)g -(curren)m(t)g(bash)g(execution)630 3440 y(call)35 b(stac)m(k.)53 -b(The)34 b(\014nal)g(parameter)g(of)g(the)g(last)h(subroutine)e(call)i -(is)f(at)h(the)f(top)h(of)f(the)630 3550 y(stac)m(k;)28 -b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i(call)f(is)f(at)h -(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 3660 -y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m -(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 3769 -y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g -(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 3879 y(Shopt)g(Builtin],) -h(page)g(64,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d -Fu(option)j(to)g(the)f Ft(shopt)630 3988 y Fu(builtin\).)150 -4171 y Ft(BASH_CMDS)630 4281 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f -(v)-5 b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(hash)630 4390 y(table)c(of)g(commands)f(as)g(main)m -(tained)h(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h -([Bourne)630 4500 y(Shell)42 b(Builtins],)k(page)d(42\).)77 -b(Elemen)m(ts)43 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the) -i(hash)630 4609 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g -(elemen)m(ts)i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 -4719 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f -(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its) -630 4829 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 5011 y Ft(BASH_COMMAND)630 -5121 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e -(ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 -5230 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g -(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 -5340 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)p +Fu(only)i(when)e(in)630 2984 y(extended)34 b(debugging)f(mo)s(de)g +(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(65,)g(for) +630 3093 y(a)e(description)g(of)f(the)h Ft(extdebug)d +Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33 +b Ft(extdebug)630 3203 y Fu(after)d(the)f(shell)g(has)g(started)h(to)g +(execute)g(a)g(script)f(ma)m(y)g(result)g(in)g(inconsisten)m(t)h(v)-5 +b(alues.)150 3367 y Ft(BASH_ARGV)630 3477 y Fu(An)24 +b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h +(parameters)f(in)g(the)g(curren)m(t)g(bash)g(execution)630 +3587 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g +(the)g(last)h(subroutine)e(call)i(is)f(at)h(the)f(top)h(of)f(the)630 +3696 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i +(call)f(is)f(at)h(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 +3806 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f +(on)m(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 +3915 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g +(debugging)g(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 +4025 y(Shopt)g(Builtin],)h(page)g(65,)g(for)g(a)f(description)h(of)f +(the)h Ft(extdebug)d Fu(option)j(to)g(the)f Ft(shopt)630 +4134 y Fu(builtin\).)51 b(Setting)35 b Ft(extdebug)c +Fu(after)k(the)f(shell)g(has)f(started)i(to)f(execute)h(a)g(script)e +(ma)m(y)630 4244 y(result)d(in)g(inconsisten)m(t)i(v)-5 +b(alues.)150 4408 y Ft(BASH_ARGV0)630 4518 y Fu(When)31 +b(referenced,)g(this)g(v)-5 b(ariable)32 b(expands)e(to)h(the)h(name)f +(of)g(the)g(shell)g(or)g(shell)g(script)630 4628 y(\(iden)m(tical)42 +b(to)e Ft($0)p Fu(;)j(See)d(Section)g(3.4.2)i([Sp)s(ecial)e(P)m +(arameters],)j(page)d(21,)j(for)c(the)h(de-)630 4737 +y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45 +b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5 +b(alue)630 4847 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g +Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h +(its)f(sp)s(ecial)630 4956 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 5121 y Ft(BASH_CMDS)630 +5230 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 b(ariable)35 +b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m(ternal)h +(hash)630 5340 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g +(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)p eop end -%%Page: 73 79 -TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(BASH_COMPAT)630 -408 y Fu(The)33 b(v)-5 b(alue)34 b(is)f(used)g(to)h(set)f(the)h -(shell's)g(compatibilit)m(y)h(lev)m(el.)51 b(See)34 b(Section)g(4.3.2)h -([The)630 518 y(Shopt)40 b(Builtin],)45 b(page)c(64,)k(for)c(a)g -(description)g(of)g(the)g(v)-5 b(arious)41 b(compatibilit)m(y)i(lev)m -(els)630 628 y(and)31 b(their)g(e\013ects.)45 b(The)31 -b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)h(decimal)g(n)m(um)m(b)s(er)e -(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)630 737 y(\(e.g.,)39 -b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f(compatibilit)m(y)k -(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d Fu(is)630 847 -y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d -(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 -956 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 +%%Page: 74 80 +TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(Shell)42 +b(Builtins],)k(page)d(43\).)77 b(Elemen)m(ts)43 b(added)e(to)i(this)f +(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630 408 y(table;)k(ho)m(w)m(ev) +m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts)i(curren)m(tly)d(do)s(es)h +(not)g(cause)g(command)630 518 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed) +i(from)e(the)h(hash)f(table.)58 b(If)36 b Ft(BASH_CMDS)d +Fu(is)j(unset,)h(it)f(loses)h(its)630 628 y(sp)s(ecial)31 +b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.) +150 792 y Ft(BASH_COMMAND)630 902 y Fu(The)39 b(command)h(curren)m(tly) +g(b)s(eing)f(executed)i(or)e(ab)s(out)h(to)g(b)s(e)f(executed,)44 +b(unless)39 b(the)630 1011 y(shell)g(is)g(executing)g(a)g(command)g(as) +g(the)f(result)h(of)g(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the) +630 1121 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.) +150 1285 y Ft(BASH_COMPAT)630 1395 y Fu(The)i(v)-5 b(alue)34 +b(is)f(used)g(to)h(set)f(the)h(shell's)g(compatibilit)m(y)h(lev)m(el.) +51 b(See)34 b(Section)g(4.3.2)h([The)630 1504 y(Shopt)40 +b(Builtin],)45 b(page)c(65,)k(for)c(a)g(description)g(of)g(the)g(v)-5 +b(arious)41 b(compatibilit)m(y)i(lev)m(els)630 1614 y(and)31 +b(their)g(e\013ects.)45 b(The)31 b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a) +h(decimal)g(n)m(um)m(b)s(er)e(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger) +630 1724 y(\(e.g.,)39 b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f +(compatibilit)m(y)k(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d +Fu(is)630 1833 y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j +(the)d(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 +1943 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e(v)-5 b(alue)41 -b(that)h(is)e(not)h(one)g(of)630 1066 y(the)f(v)-5 b(alid)40 +b(that)h(is)e(not)h(one)g(of)630 2052 y(the)f(v)-5 b(alid)40 b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g(prin)m(ts)f(an)h(error) -f(message)i(and)f(sets)g(the)630 1176 y(compatibilit)m(y)23 +f(message)i(and)f(sets)g(the)630 2162 y(compatibilit)m(y)23 b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g(curren)m(t)g(v)m(ersion.) -38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 1285 +38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 2271 y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g(compatibilit)m(y)i(options) e(accepted)h(b)m(y)f(the)g Ft(shopt)e Fu(builtin)630 -1395 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h +2381 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d(42)i(are)g(v)-5 -b(alid)21 b(v)-5 b(alues\).)630 1504 y(The)30 b(curren)m(t)g(v)m +b(alid)21 b(v)-5 b(alues\).)630 2491 y(The)30 b(curren)m(t)g(v)m (ersion)h(is)f(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150 -1655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 +2655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e -(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 1765 +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 2765 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g -(to)h(read)f(b)s(efore)g(executing)i(the)630 1874 y(script.)41 -b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(84.)150 -2025 y Ft(BASH_EXECUTION_STRING)630 2134 y Fu(The)f(command)g(argumen)m +(to)h(read)f(b)s(efore)g(executing)i(the)630 2874 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(86.)150 +3039 y Ft(BASH_EXECUTION_STRING)630 3148 y Fu(The)f(command)g(argumen)m (t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 -2285 y Ft(BASH_LINENO)630 2395 y Fu(An)62 b(arra)m(y)i(v)-5 +3313 y Ft(BASH_LINENO)630 3422 y Fu(An)62 b(arra)m(y)i(v)-5 b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s -(ers)f(in)g(source)h(\014les)630 2504 y(where)46 b(eac)m(h)i(corresp)s +(ers)f(in)g(source)h(\014les)630 3532 y(where)46 b(eac)m(h)i(corresp)s (onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 -b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 2614 y(LINENO[$i]})39 +b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 3641 y(LINENO[$i]})39 b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g -(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 2724 y(where)d +(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 3751 y(where)d Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft (${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 -2833 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 +3861 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)150 2984 y Ft(BASH_LOADABLES_PATH)630 3093 y Fu(A)39 +(er.)150 4025 y Ft(BASH_LOADABLES_PATH)630 4134 y Fu(A)39 b(colon-separated)i(list)f(of)f(directories)h(in)f(whic)m(h)g(the)g -(shell)h(lo)s(oks)f(for)g(dynamically)630 3203 y(loadable)32 +(shell)h(lo)s(oks)f(for)g(dynamically)630 4244 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e -Fu(command.)150 3354 y Ft(BASH_REMATCH)630 3463 y Fu(An)43 +Fu(command.)150 4408 y Ft(BASH_REMATCH)630 4518 y Fu(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h (assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630 -3573 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h +4628 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h (Section)g(3.2.4.2)i([Conditional)e(Constructs],)630 -3682 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +4737 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 -3792 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +4847 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g -(the)g(string)630 3902 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m +(the)g(string)630 4956 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m (thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31 -b(is)g(read-only)-8 b(.)150 4052 y Ft(BASH_SOURCE)630 -4162 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) +b(is)g(read-only)-8 b(.)150 5121 y Ft(BASH_SOURCE)630 +5230 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 -4271 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h +5340 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 -b(The)630 4381 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c -Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 -b Fu(and)630 4491 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 -4641 y(BASH_SUBSHELL)630 4751 y Fu(Incremen)m(ted)24 -b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m -(vironmen)m(t)i(when)f(the)h(shell)630 4861 y(b)s(egins)30 -b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 b(The)30 -b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 5011 y Ft(BASH_VERSINFO)630 -5121 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 -b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(91\))h(whose)f(mem)m(b) -s(ers)630 5230 y(hold)c(v)m(ersion)h(information)f(for)g(this)g -(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 -b(assigned)h(to)g(the)630 5340 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g -(follo)m(ws:)p eop end -%%Page: 74 80 -TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y Ft(BASH_VERSINFO[0]) -1110 408 y Fu(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e -(\(the)i Fr(release)5 b Fu(\).)630 578 y Ft(BASH_VERSINFO[1])1110 -687 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(v)m(ersion)p Fu(\).)630 857 y Ft(BASH_VERSINFO[2])1110 -966 y Fu(The)f(patc)m(h)h(lev)m(el.)630 1136 y Ft(BASH_VERSINFO[3])1110 -1245 y Fu(The)f(build)f(v)m(ersion.)630 1415 y Ft(BASH_VERSINFO[4])1110 -1524 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7 -b Fu(\).)630 1694 y Ft(BASH_VERSINFO[5])1110 1803 y Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 1973 y -Ft(BASH_VERSION)630 2082 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h -(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 2252 y -Ft(BASH_XTRACEFD)630 2361 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +b(The)p eop end +%%Page: 75 81 +TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(75)630 299 y(shell)26 +b(function)g Ft(${FUNCNAME[$i]})c Fu(is)k(de\014ned)f(in)g(the)h +(\014le)h Ft(${BASH_SOURCE[$i]})21 b Fu(and)630 408 y(called)32 +b(from)d Ft(${BASH_SOURCE[$i+1]})150 573 y(BASH_SUBSHELL)630 +682 y Fu(Incremen)m(ted)24 b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell) +d(or)i(subshell)e(en)m(vironmen)m(t)i(when)f(the)h(shell)630 +792 y(b)s(egins)30 b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 +b(The)30 b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 956 +y Ft(BASH_VERSINFO)630 1066 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 +b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(93\))h +(whose)f(mem)m(b)s(ers)630 1176 y(hold)c(v)m(ersion)h(information)f +(for)g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 +b(alues)32 b(assigned)h(to)g(the)630 1285 y(arra)m(y)e(mem)m(b)s(ers)e +(are)i(as)g(follo)m(ws:)630 1450 y Ft(BASH_VERSINFO[0])1110 +1559 y Fu(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(release)5 b Fu(\).)630 1724 y Ft(BASH_VERSINFO[1])1110 +1833 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(v)m(ersion)p Fu(\).)630 1998 y Ft(BASH_VERSINFO[2])1110 +2107 y Fu(The)f(patc)m(h)h(lev)m(el.)630 2271 y Ft(BASH_VERSINFO[3]) +1110 2381 y Fu(The)f(build)f(v)m(ersion.)630 2545 y Ft +(BASH_VERSINFO[4])1110 2655 y Fu(The)h(release)i(status)e(\(e.g.,)j +Fr(b)s(eta1)7 b Fu(\).)630 2819 y Ft(BASH_VERSINFO[5])1110 +2929 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p +Fu(.)150 3093 y Ft(BASH_VERSION)630 3203 y Fu(The)g(v)m(ersion)h(n)m +(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 +3367 y Ft(BASH_XTRACEFD)630 3477 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i (corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g -(Bash)g(will)g(write)g(the)630 2471 y(trace)37 b(output)f(generated)h +(Bash)g(will)g(write)g(the)630 3587 y(trace)37 b(output)f(generated)h (when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f -(\014le)h(descriptor.)58 b(This)630 2580 y(allo)m(ws)29 +(\014le)h(descriptor.)58 b(This)630 3696 y(allo)m(ws)29 b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f -(error)f(messages.)41 b(The)630 2690 y(\014le)31 b(descriptor)f(is)h +(error)f(messages.)41 b(The)630 3806 y(\014le)31 b(descriptor)f(is)h (closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g -(new)f(v)-5 b(alue.)630 2800 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 +(new)f(v)-5 b(alue.)630 3915 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f -(trace)630 2909 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g +(trace)630 4025 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g (standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c -Fu(to)630 3019 y(2)39 b(\(the)h(standard)e(error)g(\014le)h +Fu(to)630 4134 y(2)39 b(\(the)h(standard)e(error)g(\014le)h (descriptor\))h(and)e(then)h(unsetting)g(it)g(will)g(result)g(in)g(the) -630 3128 y(standard)30 b(error)g(b)s(eing)f(closed.)150 -3298 y Ft(CHILD_MAX)630 3407 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h +630 4244 y(standard)30 b(error)g(b)s(eing)f(closed.)150 +4408 y Ft(CHILD_MAX)630 4518 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h (exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) -h(remem)m(b)s(er.)55 b(Bash)630 3517 y(will)37 b(not)g(allo)m(w)i(this) +h(remem)m(b)s(er.)55 b(Bash)630 4628 y(will)37 b(not)g(allo)m(w)i(this) e(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g -Fm(posix)p Fu(-mandated)f(minim)m(um,)630 3626 y(and)30 +Fm(posix)p Fu(-mandated)f(minim)m(um,)630 4737 y(and)30 b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h (8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630 -3736 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) -150 3905 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h +4847 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) +150 5011 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d -(when)h(prin)m(ting)630 4015 y(selection)39 b(lists.)63 +(when)h(prin)m(ting)630 5121 y(selection)39 b(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 4125 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4234 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4403 y -Ft(COMP_CWORD)630 4513 y Fu(An)38 b(index)g(in)m(to)h -Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 4623 y(sition.)72 b(This)40 -b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h -(functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 -4732 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 4842 y(page)31 b(129\).)150 -5011 y Ft(COMP_LINE)630 5121 y Fu(The)38 b(curren)m(t)h(command)f -(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 -b(ailable)41 b(only)d(in)h(shell)f(functions)630 5230 -y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h -(programmable)f(completion)i(facilities)g(\(see)630 5340 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(129\).)p -eop end -%%Page: 75 81 -TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(COMP_POINT)630 -408 y Fu(The)25 b(index)g(of)h(the)g(curren)m(t)f(cursor)g(p)s(osition) -h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)g(the)h(curren)m(t)630 -518 y(command.)40 b(If)27 b(the)h(curren)m(t)g(cursor)g(p)s(osition)g -(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g(command,)630 -628 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31 -b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 b(This)29 -b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 737 -y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g(in)m -(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 847 y(completion)c -(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g(Completion],)h -(page)f(129\).)150 1011 y Ft(COMP_TYPE)630 1121 y Fu(Set)c(to)h(an)f -(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s -(e)f(of)g(completion)h(attempted)g(that)630 1230 y(caused)e(a)h -(completion)h(function)e(to)h(b)s(e)f(called:)40 b Fr(T)-8 -b(AB)p Fu(,)27 b(for)g(normal)f(completion,)j(`)p Ft(?)p -Fu(',)e(for)630 1340 y(listing)35 b(completions)h(after)f(successiv)m -(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d -(partial)630 1450 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p -Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo) -s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 1559 -y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 -b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g -(external)630 1669 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g -(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 -1778 y([Programmable)e(Completion],)h(page)f(129\).)150 -1943 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +Fu(option)j(is)f(enabled)h(\(see)630 5230 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 5340 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)p eop end +%%Page: 76 82 +TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(COMP_CWORD)630 +408 y Fu(An)38 b(index)g(in)m(to)h Ft(${COMP_WORDS})c +Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e(curren)m(t)g(cursor)g(p)s +(o-)630 518 y(sition.)72 b(This)40 b(v)-5 b(ariable)41 +b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h(functions)f(in)m(v)m +(ok)m(ed)i(b)m(y)e(the)h(pro-)630 628 y(grammable)36 +b(completion)g(facilities)i(\(see)e(Section)g(8.6)g([Programmable)g +(Completion],)630 737 y(page)31 b(131\).)150 883 y Ft(COMP_LINE)630 +993 y Fu(The)38 b(curren)m(t)h(command)f(line.)66 b(This)37 +b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 b(ailable)41 b(only)d(in)h(shell)f +(functions)630 1103 y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h +(b)m(y)f(the)h(programmable)f(completion)i(facilities)g(\(see)630 +1212 y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(131\).)150 +1358 y Ft(COMP_POINT)630 1468 y Fu(The)25 b(index)g(of)h(the)g(curren)m +(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) +g(the)h(curren)m(t)630 1577 y(command.)40 b(If)27 b(the)h(curren)m(t)g +(cursor)g(p)s(osition)g(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g +(command,)630 1687 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 +b(ariable)31 b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 +b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 +1797 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g +(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 1906 +y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g +(Completion],)h(page)f(131\).)150 2052 y Ft(COMP_TYPE)630 +2162 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 +b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h +(attempted)g(that)630 2271 y(caused)e(a)h(completion)h(function)e(to)h +(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f +(completion,)j(`)p Ft(?)p Fu(',)e(for)630 2381 y(listing)35 +b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p +Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 +2491 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g +(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h +(`)p Ft(\045)p Fu(',)h(for)630 2600 y(men)m(u)i(completion.)41 +b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28 +b(only)f(in)f(shell)g(functions)g(and)g(external)630 +2710 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h +(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +2819 y([Programmable)e(Completion],)h(page)f(131\).)150 +2966 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i (of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e -(curren)m(t)g(completion)630 2052 y(function.)150 2217 -y Ft(COMP_WORDBREAKS)630 2326 y Fu(The)f(set)i(of)e(c)m(haracters)j +(curren)m(t)g(completion)630 3075 y(function.)150 3221 +y Ft(COMP_WORDBREAKS)630 3331 y Fu(The)f(set)i(of)e(c)m(haracters)j (that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g -(when)630 2436 y(p)s(erforming)i(w)m(ord)h(completion.)51 +(when)630 3440 y(p)s(erforming)i(w)m(ord)h(completion.)51 b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 2545 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 2710 y Ft(COMP_WORDS)630 -2819 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) +(sp)s(ecial)630 3550 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 3696 y Ft(COMP_WORDS)630 +3806 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 -2929 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) +3915 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)630 -3039 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 +4025 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 -b(only)e(in)f(shell)h(func-)630 3148 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) +b(only)e(in)f(shell)h(func-)630 4134 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) m(y)d(the)i(programmable)f(completion)h(facilities)h(\(see)f(Section)g -(8.6)g([Pro-)630 3258 y(grammable)e(Completion],)g(page)g(129\).)150 -3422 y Ft(COMPREPLY)630 3532 y Fu(An)37 b(arra)m(y)h(v)-5 +(8.6)g([Pro-)630 4244 y(grammable)e(Completion],)g(page)g(131\).)150 +4390 y Ft(COMPREPLY)630 4500 y Fu(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e -(completions)j(generated)630 3641 y(b)m(y)33 b(a)g(shell)h(function)f +(completions)j(generated)630 4609 y(b)m(y)33 b(a)g(shell)h(function)f (in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m -(y)h(\(see)f(Sec-)630 3751 y(tion)g(8.6)g([Programmable)g(Completion],) -h(page)f(129\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) -630 3861 y(one)c(p)s(ossible)f(completion.)150 4025 y +(y)h(\(see)f(Sec-)630 4719 y(tion)g(8.6)g([Programmable)g(Completion],) +h(page)f(131\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) +630 4829 y(one)c(p)s(ossible)f(completion.)150 4975 y Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f -(from)h(and)f(input)630 4134 y(to)31 b(an)f(unnamed)f(copro)s(cess)i +(from)h(and)f(input)630 5084 y(to)31 b(an)f(unnamed)f(copro)s(cess)i (\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)150 -4299 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 +5230 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f -(directory)i(stac)m(k.)41 b(Direc-)630 4408 y(tories)33 +(directory)i(stac)m(k.)41 b(Direc-)630 5340 y(tories)33 b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g -(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630 -4518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 -b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 -4628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h +(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)p +eop end +%%Page: 77 83 +TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(Assigning)30 +b(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 b(ariable)31 +b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 +408 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 4737 y(and)37 b(remo)m(v)m(e)h(directories.)63 +(to)i(add)630 518 y(and)37 b(remo)m(v)m(e)h(directories.)63 b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m -(hange)i(the)e(cur-)630 4847 y(ren)m(t)c(directory)-8 +(hange)i(the)e(cur-)630 628 y(ren)m(t)c(directory)-8 b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 -4956 y(subsequen)m(tly)d(reset.)150 5121 y Ft(EMACS)240 +737 y(subsequen)m(tly)d(reset.)150 896 y Ft(EMACS)240 b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 5230 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h +(v)-5 b(alue)630 1005 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h (the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) -h(disables)630 5340 y(line)d(editing.)p eop end -%%Page: 76 82 -TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(ENV)336 +h(disables)630 1115 y(line)d(editing.)150 1273 y Ft(ENV)336 b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g (is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 -408 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)150 -564 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d -(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 -b(ariable)31 b(is)f(readonly)-8 b(.)150 720 y Ft(EXECIGNORE)630 -830 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f(\(see) -i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 -939 y(page)j(31\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g -(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630 -1049 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h) -h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 -1158 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j -(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630 -1268 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b) -s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f -Ft([[)g Fu(commands.)630 1377 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g -(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41 -b(to)g Ft(EXECIGNORE)p Fu(.)630 1487 y(Use)30 b(this)f(v)-5 -b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g(that)h(ha)m -(v)m(e)h(the)f(executable)h(bit)e(set,)630 1597 y(but)36 -b(are)h(not)g(executable)i(\014les.)60 b(The)36 b(pattern)h(matc)m -(hing)h(honors)e(the)h(setting)h(of)f(the)630 1706 y -Ft(extglob)28 b Fu(shell)j(option.)150 1862 y Ft(FCEDIT)192 -b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f -Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150 -2018 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +1383 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(98\).)150 +1541 y Ft(EPOCHREALTIME)630 1650 y Fu(Eac)m(h)38 b(time)f(this)g +(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s +(er)f(of)h(seconds)630 1760 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as) +h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i +(gran)m(ularit)m(y)630 1870 y(\(see)42 b(the)g(do)s(cumen)m(tation)g +(for)f(the)g(C)g(library)g(function)g Fr(time)47 b Fu(for)41 +b(the)h(de\014nition)f(of)630 1979 y(Ep)s(o)s(c)m(h\).)82 +b(Assignmen)m(ts)44 b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 +b(If)43 b Ft(EPOCHREALTIME)e Fu(is)630 2089 y(unset,)30 +b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h +(is)g(subsequen)m(tly)f(reset.)150 2247 y Ft(EPOCHSECONDS)630 +2357 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it) +f(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(seconds)630 +2466 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m +(tation)g(for)g(the)f(C)h(library)f(function)g Fr(time)630 +2576 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73 +b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73 +b(If)630 2685 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its) +g(sp)s(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m +(tly)630 2795 y(reset.)150 2953 y Ft(EUID)288 b Fu(The)30 +b(n)m(umeric)g(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f +(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 3112 y Ft(EXECIGNORE)630 3221 y Fu(A)29 b(colon-separated)h +(list)f(of)g(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m +(attern)f(Matc)m(hing],)630 3331 y(page)j(32\))g(de\014ning)e(the)h +(list)g(of)g(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h +(searc)m(h)g(using)630 3440 y Ft(PATH)p Fu(.)k(Files)22 +b(whose)f(full)g(pathnames)g(matc)m(h)h(one)f(of)g(these)h(patterns)e +(are)i(not)f(considered)630 3550 y(executable)j(\014les)e(for)g(the)h +(purp)s(oses)d(of)j(completion)h(and)d(command)i(execution)g(via)g +Ft(PATH)630 3660 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h +(a\013ect)i(the)d(b)s(eha)m(vior)h(of)g(the)g Ft([)p +Fu(,)h Ft(test)p Fu(,)f(and)f Ft([[)g Fu(commands.)630 +3769 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g(command)g(hash)f(table)i +(are)g(not)f(sub)5 b(ject)41 b(to)g Ft(EXECIGNORE)p Fu(.)630 +3879 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f +(library)g(\014les)g(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,) +630 3988 y(but)36 b(are)h(not)g(executable)i(\014les.)60 +b(The)36 b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the) +630 4098 y Ft(extglob)28 b Fu(shell)j(option.)150 4256 +y Ft(FCEDIT)192 b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y) +h(the)f Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.) +150 4415 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g (su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) -630 2127 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i +630 4524 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i (one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630 -2237 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 +4634 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p -Fu(')150 2393 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 +Fu(')150 4792 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g -(functions)g(curren)m(tly)f(in)h(the)630 2502 y(execution)g(call)h +(functions)g(curren)m(tly)f(in)h(the)630 4902 y(execution)g(call)h (stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g -(name)h(of)f(an)m(y)h(curren)m(tly-)630 2612 y(executing)f(shell)f +(name)h(of)f(an)m(y)h(curren)m(tly-)630 5011 y(executing)f(shell)f (function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f -(with)g(the)g(highest)630 2721 y(index\))e(is)h Ft("main")p +(with)g(the)g(highest)630 5121 y(index\))e(is)h Ft("main")p Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i -(shell)f(function)g(is)g(executing.)630 2831 y(Assignmen)m(ts)23 +(shell)f(function)g(is)g(executing.)630 5230 y(Assignmen)m(ts)23 b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39 b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial) -630 2941 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m -(tly)f(reset.)630 3073 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) -g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 -b(Eac)m(h)32 b(elemen)m(t)630 3183 y(of)g Ft(FUNCNAME)d -Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c -Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 3292 y(describ)s(e)39 -b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i -Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630 -3402 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 -b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34 -b(The)27 b Ft(caller)630 3512 y Fu(builtin)j(displa)m(ys)g(the)h +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: 78 84 +TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y(This)31 +b(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)g(with)g Ft(BASH_LINENO)d +Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 b(Eac)m(h)32 b(elemen)m(t)630 +408 y(of)g Ft(FUNCNAME)d Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f +Ft(BASH_LINENO)c Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 +518 y(describ)s(e)39 b(the)h(call)h(stac)m(k.)70 b(F)-8 +b(or)41 b(instance,)i Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 +b(called)f(from)g(the)630 628 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 +b Fu(at)27 b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p +Fu(.)34 b(The)27 b Ft(caller)630 737 y Fu(builtin)j(displa)m(ys)g(the)h (curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 -3667 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +894 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g -(function)g(nesting)630 3777 y(lev)m(el.)42 b(F)-8 b(unction)29 +(function)g(nesting)630 1003 y(lev)m(el.)42 b(F)-8 b(unction)29 b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h -(will)f(cause)g(the)f(curren)m(t)630 3886 y(command)i(to)h(ab)s(ort.) -150 4042 y Ft(GLOBIGNORE)630 4152 y Fu(A)38 b(colon-separated)i(list)f -(of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s -(e)g(ignored)630 4261 y(b)m(y)31 b(\014lename)g(expansion.)43 -b(If)31 b(a)h(\014lename)f(matc)m(hed)h(b)m(y)f(a)g(\014lename)h -(expansion)f(pattern)630 4371 y(also)i(matc)m(hes)g(one)f(of)g(the)g +(will)f(cause)g(the)f(curren)m(t)630 1113 y(command)i(to)h(ab)s(ort.) +150 1270 y Ft(GLOBIGNORE)630 1379 y Fu(A)k(colon-separated)i(list)f(of) +f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e) +g(ignored)630 1489 y(b)m(y)28 b(\014lename)h(expansion.)40 +b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f +(expansion)h(pattern)630 1598 y(also)k(matc)m(hes)g(one)f(of)g(the)g (patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from) -e(the)h(list)h(of)630 4481 y(matc)m(hes.)41 b(The)27 +e(the)h(list)h(of)630 1708 y(matc)m(hes.)41 b(The)27 b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h -Ft(extglob)d Fu(shell)i(option.)150 4636 y Ft(GROUPS)192 +Ft(extglob)d Fu(shell)i(option.)150 1864 y Ft(GROUPS)192 b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 -4746 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d +1974 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f -Fu(is)i(unset,)f(it)h(loses)h(its)630 4855 y(sp)s(ecial)f(prop)s +Fu(is)i(unset,)f(it)h(loses)h(its)630 2084 y(sp)s(ecial)f(prop)s (erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 -5011 y Ft(histchars)630 5121 y Fu(Up)c(to)g(three)g(c)m(haracters)i +2240 y Ft(histchars)630 2350 y Fu(Up)c(to)g(three)g(c)m(haracters)i (whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g -(substitution,)g(and)630 5230 y(tok)m(enization)k(\(see)f(Section)f -(9.3)h([History)f(In)m(teraction],)i(page)f(139\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 5340 y(ter)j(is)f(the)g +(substitution,)g(and)630 2459 y(tok)m(enization)k(\(see)f(Section)f +(9.3)h([History)f(In)m(teraction],)i(page)f(142\).)41 +b(The)29 b(\014rst)e(c)m(harac-)630 2569 y(ter)j(is)f(the)g Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)p eop end -%%Page: 77 83 -TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(start)25 +(haracter)h(whic)m(h)d(signi\014es)i(the)630 2679 y(start)25 b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -408 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +2788 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f (seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 -518 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d +2898 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d (c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) -630 628 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h +630 3007 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h (when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 -737 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 +3117 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g -(substitution)630 847 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f +(substitution)630 3226 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f (remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h -(necessarily)g(cause)630 956 y(the)k(shell)f(parser)g(to)h(treat)g(the) -g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 1106 -y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f(index) -g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)56 -b(If)630 1215 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f(sp) -s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f -(reset.)150 1365 y Ft(HISTCONTROL)630 1474 y Fu(A)40 +(necessarily)g(cause)630 3336 y(the)k(shell)f(parser)g(to)h(treat)g +(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 +3493 y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f +(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.) +56 b(If)630 3602 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f +(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m +(tly)f(reset.)150 3759 y Ft(HISTCONTROL)630 3868 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m -(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 1584 +(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 3978 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g -(b)s(egin)f(with)630 1694 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g +(b)s(egin)f(with)630 4088 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g (sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 -b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 1803 y(causes)34 +b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 4197 y(causes)34 b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h (to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 -1913 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p +4307 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)630 2022 y(`)p Ft(erasedups)p +b(A)32 b(v)-5 b(alue)32 b(of)630 4416 y(`)p Ft(erasedups)p Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m -(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 2132 y(from)42 +(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 4526 y(from)42 b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 -2242 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e +4635 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 -b(alid)35 b(v)-5 b(alue,)36 b(all)630 2351 y(lines)30 +b(alid)35 b(v)-5 b(alue,)36 b(all)630 4745 y(lines)30 b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g (history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 -b(alue)630 2461 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 +b(alue)630 4855 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) -s(ound)630 2570 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +s(ound)630 4964 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 -2680 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 2829 y Ft(HISTFILE)96 +5074 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 5230 y Ft(HISTFILE)96 b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 -b(alue)630 2939 y(is)30 b Ft(~/.bash_history)p Fu(.)150 -3088 y Ft(HISTFILESIZE)630 3198 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s -(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 -b(When)26 b(this)g(v)-5 b(ariable)630 3308 y(is)25 b(assigned)h(a)g(v) --5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e -(necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 -3417 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m -(ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is) -630 3527 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +b(alue)630 5340 y(is)30 b Ft(~/.bash_history)p Fu(.)p +eop end +%%Page: 79 85 +TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(HISTFILESIZE)630 +408 y Fu(The)26 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)h(lines)h(con)m +(tained)g(in)f(the)g(history)g(\014le.)39 b(When)26 b(this)g(v)-5 +b(ariable)630 518 y(is)25 b(assigned)h(a)g(v)-5 b(alue,)27 +b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e(necessary)-8 +b(,)28 b(to)e(con)m(tain)g(no)g(more)630 628 y(than)37 +b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m(ving)h(the)f +(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is)630 +737 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g (when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39 -b(is)630 3636 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i +b(is)630 847 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i (zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37 -b(and)f(n)m(umeric)630 3746 y(v)-5 b(alues)31 b(less)f(than)g(zero)h +b(and)f(n)m(umeric)630 956 y(v)-5 b(alues)31 b(less)f(than)g(zero)h (inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v) --5 b(alue)31 b(to)g(the)630 3856 y(v)-5 b(alue)31 b(of)f +-5 b(alue)31 b(to)g(the)630 1066 y(v)-5 b(alue)31 b(of)f Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 -4005 y Ft(HISTIGNORE)630 4115 y Fu(A)j(colon-separated)h(list)f(of)g +1243 y Ft(HISTIGNORE)630 1353 y Fu(A)j(colon-separated)h(list)f(of)g (patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) -630 4224 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 +630 1462 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s(eginning)g -(of)h(the)630 4334 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g +(of)h(the)630 1572 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g (complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s -(ended\).)75 b(Eac)m(h)630 4443 y(pattern)42 b(is)g(tested)g(against)h +(ended\).)75 b(Eac)m(h)630 1681 y(pattern)42 b(is)g(tested)g(against)h (the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h -Ft(HISTCONTROL)630 4553 y Fu(are)37 b(applied.)59 b(In)36 +Ft(HISTCONTROL)630 1791 y Fu(are)37 b(applied.)59 b(In)36 b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m -(haracters,)i(`)p Ft(&)p Fu(')630 4663 y(matc)m(hes)d(the)f(previous)g +(haracters,)i(`)p Ft(&)p Fu(')630 1901 y(matc)m(hes)d(the)f(previous)g (history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) -h(using)g(a)g(bac)m(kslash;)k(the)630 4772 y(bac)m(kslash)34 +h(using)g(a)g(bac)m(kslash;)k(the)630 2010 y(bac)m(kslash)34 b(is)g(remo)m(v)m(ed)h(b)s(efore)e(attempting)i(a)g(matc)m(h.)51 -b(The)34 b(second)f(and)h(subsequen)m(t)630 4882 y(lines)e(of)h(a)g(m)m +b(The)34 b(second)f(and)h(subsequen)m(t)630 2120 y(lines)e(of)h(a)g(m)m (ulti-line)g(comp)s(ound)e(command)h(are)h(not)f(tested,)i(and)e(are)g -(added)g(to)h(the)630 4991 y(history)k(regardless)h(of)f(the)g(v)-5 +(added)g(to)h(the)630 2229 y(history)k(regardless)h(of)f(the)g(v)-5 b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m -(hing)i(honors)630 5101 y(the)31 b(setting)g(of)g(the)f -Ft(extglob)f Fu(shell)h(option.)630 5230 y Ft(HISTIGNORE)20 +(hing)i(honors)630 2339 y(the)31 b(setting)g(of)g(the)f +Ft(extglob)f Fu(shell)h(option.)630 2482 y Ft(HISTIGNORE)20 b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 -5340 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p +2592 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p -Fu(.)36 b(Com)m(bining)p eop end -%%Page: 78 84 -TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y(these)30 -b(t)m(w)m(o)h(patterns,)f(separating)g(them)g(with)f(a)h(colon,)h(pro)m -(vides)e(the)h(functionalit)m(y)h(of)630 408 y Ft(ignoreboth)p -Fu(.)150 558 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s -(er)e(of)j(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.) -62 b(If)37 b(the)630 667 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h +Fu(.)36 b(Com)m(bining)630 2701 y(these)30 b(t)m(w)m(o)h(patterns,)f +(separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h +(functionalit)m(y)h(of)630 2811 y Ft(ignoreboth)p Fu(.)150 +2988 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j +(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 +b(If)37 b(the)630 3098 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h (not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 -b(v)-5 b(alues)26 b(less)g(than)630 777 y(zero)i(result)e(in)h(ev)m +b(v)-5 b(alues)26 b(less)g(than)630 3207 y(zero)i(result)e(in)h(ev)m (ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i -(\(there)f(is)g(no)g(limit\).)630 887 y(The)j(shell)g(sets)h(the)g +(\(there)f(is)g(no)g(limit\).)630 3317 y(The)j(shell)g(sets)h(the)g (default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h -(startup)f(\014les.)150 1036 y Ft(HISTTIMEFORMAT)630 -1146 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(startup)f(\014les.)150 3494 y Ft(HISTTIMEFORMAT)630 +3603 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m (ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g -(for)630 1255 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) +(for)630 3713 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m -(ed)630 1365 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 +(ed)630 3823 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g -(written)f(to)i(the)630 1474 y(history)26 b(\014le)g(so)g(they)g(ma)m +(written)f(to)i(the)630 3932 y(history)26 b(\014le)g(so)g(they)g(ma)m (y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f(sessions.)39 -b(This)25 b(uses)h(the)g(history)630 1584 y(commen)m(t)31 +b(This)25 b(uses)h(the)g(history)630 4042 y(commen)m(t)31 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g -(history)h(lines.)150 1733 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 +(history)h(lines.)150 4219 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f -Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 1843 y(read)21 +Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 4328 y(read)21 b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38 -b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 1953 +b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 4438 y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g -(is)f(running;)h(the)g(next)f(time)i(hostname)630 2062 +(is)f(running;)h(the)g(next)f(time)i(hostname)630 4548 y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of) -630 2172 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 +630 4657 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 -b(alue,)36 b(or)e(do)s(es)630 2281 y(not)d(name)f(a)h(readable)g +b(alue,)36 b(or)e(do)s(es)630 4767 y(not)d(name)f(a)h(readable)g (\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e -Fu(to)j(obtain)g(the)f(list)630 2391 y(of)h(p)s(ossible)f(hostname)h +Fu(to)j(obtain)g(the)f(list)630 4876 y(of)h(p)s(ossible)f(hostname)h (completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h -(hostname)g(list)630 2501 y(is)f(cleared.)150 2650 y +(hostname)g(list)630 4986 y(is)f(cleared.)150 5163 y Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 -2800 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m -(hine)h(Bash)g(is)f(running)f(on.)150 2949 y Ft(IGNOREEOF)630 -3059 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) -h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -3168 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s -(er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b) -s(e)630 3278 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f -(input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 -b(If)39 b(the)630 3387 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g +5340 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m +(hine)h(Bash)g(is)f(running)f(on.)p eop end +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(IGNOREEOF)630 +408 y Fu(Con)m(trols)27 b(the)h(action)g(of)f(the)g(shell)g(on)g +(receipt)h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h +(input.)630 518 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n) +m(um)m(b)s(er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that) +f(can)h(b)s(e)630 628 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i +(on)f(an)f(input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 +b(If)39 b(the)630 737 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g (not)h(ha)m(v)m(e)h(a)g(n)m(umeric)e(v)-5 b(alue)37 b(\(or)h(has)e(no)h -(v)-5 b(alue\))37 b(then)g(the)630 3497 y(default)31 -b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g -(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630 -3606 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i -(for)e(in)m(teractiv)m(e)j(shells.)150 3756 y Ft(INPUTRC)144 +(v)-5 b(alue\))37 b(then)g(the)630 847 y(default)31 b(is)g(10.)43 +b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g(exist,)h(then)e +Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630 +956 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i(for) +e(in)m(teractiv)m(e)j(shells.)150 1108 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 -b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 3866 y -Ft(~/.inputrc)p Fu(.)150 4015 y Ft(LANG)288 b Fu(Used)28 +b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 1218 y +Ft(~/.inputrc)p Fu(.)150 1369 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h -(category)h(not)e(sp)s(eci\014cally)g(selected)630 4125 +(category)h(not)e(sp)s(eci\014cally)g(selected)630 1479 y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p -Fu(.)150 4274 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 +Fu(.)150 1631 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29 -b(sp)s(ecifying)630 4384 y(a)i(lo)s(cale)h(category)-8 -b(.)150 4533 y Ft(LC_COLLATE)630 4643 y Fu(This)37 b(v)-5 +b(sp)s(ecifying)630 1740 y(a)i(lo)s(cale)h(category)-8 +b(.)150 1892 y Ft(LC_COLLATE)630 2002 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f -(sorting)i(the)g(results)g(of)630 4752 y(\014lename)e(expansion,)i(and) +(sorting)i(the)g(results)g(of)630 2111 y(\014lename)e(expansion,)i(and) e(determines)g(the)h(b)s(eha)m(vior)f(of)g(range)h(expressions,)h -(equiv-)630 4862 y(alence)e(classes,)h(and)e(collating)i(sequences)e +(equiv-)630 2221 y(alence)e(classes,)h(and)e(collating)i(sequences)e (within)f(\014lename)h(expansion)g(and)f(pattern)630 -4971 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) -e(page)h(30\).)150 5121 y Ft(LC_CTYPE)96 b Fu(This)36 +2330 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) +e(page)h(31\).)150 2482 y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m -(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 5230 +(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 2592 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f -(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 5340 y(tion)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)p eop -end -%%Page: 79 85 -TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(LC_MESSAGES)630 -408 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i -(used)d(to)i(translate)g(double-quoted)f(strings)g(pre-)630 -518 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h -(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)150 -679 y Ft(LC_NUMERIC)630 788 y Fu(This)f(v)-5 b(ariable)31 -b(determines)f(the)h(lo)s(cale)h(category)g(used)e(for)g(n)m(um)m(b)s -(er)f(formatting.)150 949 y Ft(LC_TIME)144 b Fu(This)25 -b(v)-5 b(ariable)26 b(determines)g(the)g(lo)s(cale)h(category)h(used)d -(for)g(data)h(and)f(time)i(formatting.)150 1110 y Ft(LINENO)192 -b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g -(function)h(curren)m(tly)f(executing.)150 1271 y Ft(LINES)240 -b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g -(the)g(column)g(length)g(for)g(prin)m(ting)630 1380 y(selection)c +(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 2701 y(tion)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)h(31\).)150 +2853 y Ft(LC_MESSAGES)630 2963 y Fu(This)25 b(v)-5 b(ariable)27 +b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) +f(strings)g(pre-)630 3072 y(ceded)31 b(b)m(y)f(a)h(`)p +Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 +b(ranslation],)32 b(page)f(7\).)150 3224 y Ft(LC_NUMERIC)630 +3334 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h +(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 +3485 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 +b(determines)g(the)g(lo)s(cale)h(category)h(used)d(for)g(data)h(and)f +(time)i(formatting.)150 3637 y Ft(LINENO)192 b Fu(The)30 +b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g(function)h +(curren)m(tly)f(executing.)150 3789 y Ft(LINES)240 b +Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g +(the)g(column)g(length)g(for)g(prin)m(ting)630 3898 y(selection)c (lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 1490 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1599 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1760 y +Fu(option)j(is)f(enabled)h(\(see)630 4008 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4118 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4269 y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f(the)h (system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e -(the)630 1870 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h -Fu(format.)150 2030 y Ft(MAILCHECK)630 2140 y Fu(Ho)m(w)d(often)g(\(in) +(the)630 4379 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h +Fu(format.)150 4531 y Ft(MAILCHECK)630 4640 y Fu(Ho)m(w)d(often)g(\(in) g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h -(in)f(the)h(\014les)g(sp)s(eci\014ed)630 2250 y(in)i(the)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 4750 y(in)i(the)h Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43 b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 -b(it)h(is)g(time)630 2359 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e +b(it)h(is)g(time)630 4859 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e (shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g -(prompt.)57 b(If)630 2469 y(this)37 b(v)-5 b(ariable)38 +(prompt.)57 b(If)630 4969 y(this)37 b(v)-5 b(ariable)38 b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h -(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2578 y(equal)31 +(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 5079 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 -2739 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 +5230 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h -Ft(mapfile)d Fu(builtin)i(when)630 2849 y(no)30 b(v)-5 -b(ariable)31 b(name)g(is)f(supplied.)150 3009 y Ft(OLDPWD)192 +Ft(mapfile)d Fu(builtin)i(when)630 5340 y(no)30 b(v)-5 +b(ariable)31 b(name)g(is)f(supplied.)p eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(OLDPWD)192 b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f -(the)h Ft(cd)e Fu(builtin.)150 3170 y Ft(OPTERR)192 b +(the)h Ft(cd)e Fu(builtin.)150 463 y Ft(OPTERR)192 b Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g (error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630 -3280 y Fu(builtin)30 b(command.)150 3440 y Ft(OSTYPE)192 +573 y Fu(builtin)30 b(command.)150 737 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f -(is)h(running)d(on.)150 3601 y Ft(PIPESTATUS)630 3711 +(is)h(running)d(on.)150 902 y Ft(PIPESTATUS)630 1011 y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h -([Arra)m(ys],)g(page)f(91\))h(con)m(taining)g(a)f(list)g(of)g(exit)g -(sta-)630 3820 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g +([Arra)m(ys],)g(page)f(93\))h(con)m(taining)g(a)f(list)g(of)g(exit)g +(sta-)630 1121 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g (in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 -3930 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 4091 y Ft(POSIXLY_CORRECT)630 4200 y +1230 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 1395 y Ft(POSIXLY_CORRECT)630 1504 y Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g (when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 -4310 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s -(de],)k(page)e(96\))g(b)s(efore)f(reading)g(the)g(startup)630 -4419 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s +1614 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s +(de],)k(page)e(98\))g(b)s(efore)f(reading)g(the)g(startup)630 +1724 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s (cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34 -b(it)h(is)g(set)g(while)630 4529 y(the)c(shell)f(is)h(running,)d(Bash)j +b(it)h(is)g(set)g(while)630 1833 y(the)c(shell)f(is)h(running,)d(Bash)j (enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870 -4664 y Ft(set)47 b(-o)g(posix)630 4799 y Fu(had)30 b(b)s(een)f -(executed.)150 4960 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g +1970 y Ft(set)47 b(-o)g(posix)630 2107 y Fu(had)30 b(b)s(een)f +(executed.)150 2271 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 -5121 y Ft(PROMPT_COMMAND)630 5230 y Fu(If)32 b(set,)h(the)f(v)-5 +2436 y Ft(PROMPT_COMMAND)630 2545 y Fu(If)32 b(set,)h(the)f(v)-5 b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s -(efore)f(the)g(prin)m(ting)g(of)630 5340 y(eac)m(h)g(primary)d(prompt)g -(\()p Ft($PS1)p Fu(\).)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(PROMPT_DIRTRIM)630 -408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f -(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) -e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h -(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g -Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f -(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(94\).)39 -b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f -(an)g(ellipsis.)150 911 y Ft(PS0)336 b Fu(The)30 b(v)-5 -b(alue)32 b(of)f(this)f(parameter)i(is)f(expanded)f(lik)m(e)i -Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630 -1020 y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h -(command)f(is)h(executed.)150 1194 y Ft(PS3)336 b Fu(The)34 +(efore)f(the)g(prin)m(ting)g(of)630 2655 y(eac)m(h)g(primary)d(prompt)g +(\()p Ft($PS1)p Fu(\).)150 2819 y Ft(PROMPT_DIRTRIM)630 +2929 y Fu(If)e(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f(zero,) +i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)e(of)h +(trailing)630 3039 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f +(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g Ft(\\W)g +Fu(prompt)g(string)630 3148 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h +([Con)m(trolling)g(the)f(Prompt],)h(page)f(96\).)39 b(Characters)21 +b(remo)m(v)m(ed)630 3258 y(are)31 b(replaced)g(with)f(an)g(ellipsis.) +150 3422 y Ft(PS0)336 b Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)f +(parameter)i(is)f(expanded)f(lik)m(e)i Fr(PS1)38 b Fu(and)30 +b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630 3532 +y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h +(command)f(is)h(executed.)150 3696 y Ft(PS3)336 b Fu(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i (the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 -b(If)630 1303 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e +b(If)630 3806 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g -Fu(')150 1477 y Ft(PS4)336 b Fu(The)24 b(v)-5 b(alue)25 -b(is)f(the)h(prompt)e(prin)m(ted)h(b)s(efore)g(the)h(command)f(line)h -(is)f(ec)m(ho)s(ed)i(when)d(the)i Ft(-x)630 1587 y Fu(option)32 -b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f -(60\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 1696 -y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e -(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630 -1806 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Ft(+)g Fu('.)150 1979 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m +Fu(')150 3970 y Ft(PS4)336 b Fu(The)37 b(v)-5 b(alue)37 +b(of)g(this)g(parameter)h(is)f(expanded)f(lik)m(e)i Fr(PS1)44 +b Fu(and)37 b(the)g(expanded)f(v)-5 b(alue)38 b(is)630 +4080 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h +(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630 +4189 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g(Builtin],)j(page)e +(61\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630 +4299 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m(ultiple)g +(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m(ultiple)630 +4408 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p +Ft(+)h Fu('.)150 4573 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m (orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f -Fu(builtin.)150 2153 y Ft(RANDOM)192 b Fu(Eac)m(h)30 +Fu(builtin.)150 4737 y Ft(RANDOM)192 b Fu(Eac)m(h)30 b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) -h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 2262 y(is)i(generated.)43 +h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 4847 y(is)i(generated.)43 b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5 b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630 -2372 y(erator.)150 2545 y Ft(READLINE_LINE)630 2655 y +4956 y(erator.)150 5121 y Ft(READLINE_LINE)630 5230 y Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)f(for) h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 -2765 y([Bash)i(Builtins],)g(page)g(49\).)150 2938 y Ft(READLINE_POINT) -630 3048 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m -(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p -Ft(bind)630 3157 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(49\).)150 3331 y Ft(REPLY)240 b -Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g -Ft(read)g Fu(builtin.)150 3504 y Ft(SECONDS)144 b Fu(This)40 -b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i -(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 -3614 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 -b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 -b(assigned,)j(and)c(the)630 3724 y(expanded)35 b(v)-5 -b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h -(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 3833 y(the)31 -b(assignmen)m(t.)150 4007 y Ft(SHELL)240 b Fu(The)29 -b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m -(vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630 -4116 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f -(it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m(t)630 -4226 y(user's)30 b(login)h(shell.)150 4399 y Ft(SHELLOPTS)630 -4509 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +5340 y([Bash)i(Builtins],)g(page)g(50\).)p eop end +%%Page: 82 88 +TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(82)150 299 y Ft(READLINE_POINT)630 +408 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m(t)g +(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p +Ft(bind)630 518 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g +(Builtins],)g(page)g(50\).)150 667 y Ft(REPLY)240 b Fu(The)30 +b(default)g(v)-5 b(ariable)32 b(for)e(the)g Ft(read)g +Fu(builtin.)150 816 y Ft(SECONDS)144 b Fu(This)40 b(v)-5 +b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i(seconds)g +(since)g(the)f(shell)h(w)m(as)g(started.)630 925 y(Assignmen)m(t)i(to)g +(this)g(v)-5 b(ariable)43 b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 +b(alue)43 b(assigned,)j(and)c(the)630 1035 y(expanded)35 +b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 +b(assigned)g(plus)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 +1144 y(the)31 b(assignmen)m(t.)150 1293 y Ft(SHELL)240 +b Fu(The)29 b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g +(this)g(en)m(vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 +b(it)i(is)f(not)630 1403 y(set)36 b(when)f(the)h(shell)g(starts,)i +(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m +(t)630 1512 y(user's)30 b(login)h(shell.)150 1661 y Ft(SHELLOPTS)630 +1771 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) 41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 -b(alid)630 4619 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e +b(alid)630 1880 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) -f(4.3.1)h([The)630 4728 y(Set)g(Builtin],)h(page)f(60\).)42 +f(4.3.1)h([The)630 1990 y(Set)g(Builtin],)h(page)f(61\).)42 b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e -Fu(are)j(those)h(rep)s(orted)630 4838 y(as)g(`)p Ft(on)p +Fu(are)j(those)h(rep)s(orted)630 2099 y(as)g(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h -(starts)g(up,)630 4947 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) +(starts)g(up,)630 2209 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f -(\014les.)630 5057 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 5230 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +(\014les.)630 2318 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 2467 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 -b(This)20 b(is)h(in)m(tended)630 5340 y(to)31 b(b)s(e)f(a)h(coun)m(t)g -(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)p -eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(TIMEFORMAT)630 -408 y Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f -(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 -518 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h -(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 -628 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h -(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g -(to)630 737 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.) -59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 -847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h(p) -s(ortions.)630 1006 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p -Ft(\045)p Fu('.)630 1166 y Ft(\045[)p Fj(p)p Ft(][l]R)96 -b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 1325 +b(This)20 b(is)h(in)m(tended)630 2577 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150 +2725 y Ft(TIMEFORMAT)630 2835 y Fu(The)f(v)-5 b(alue)32 +b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s +(ecifying)f(ho)m(w)h(the)g(tim-)630 2945 y(ing)37 b(information)f(for)h +(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w) +m(ord)f(should)g(b)s(e)630 3054 y(displa)m(y)m(ed.)k(The)27 +b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s +(e)g(sequence)g(that)g(is)f(expanded)g(to)630 3164 y(a)37 +b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59 +b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 +3273 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h +(p)s(ortions.)630 3422 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p +Ft(\045)p Fu('.)630 3571 y Ft(\045[)p Fj(p)p Ft(][l]R)96 +b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 3720 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h (CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 -1484 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f +3868 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f (of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 -1644 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e -(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 1803 +4017 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 4166 y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h (precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 -1913 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +4275 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h -(fraction)g(to)g(b)s(e)630 2022 y(output.)48 b(A)m(t)34 +(fraction)g(to)g(b)s(e)630 4385 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) -h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 2132 y(of)31 +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 4495 y(of)31 b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 2267 y(The)54 b(optional)h +b(alue)30 b(3)h(is)g(used.)630 4624 y(The)54 b(optional)h Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 -b(min)m(utes,)61 b(of)54 b(the)g(form)630 2376 y Fr(MM)10 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 4733 y Fr(MM)10 b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f -(fraction)h(is)630 2486 y(included.)630 2620 y(If)30 +(fraction)h(is)630 4843 y(included.)630 4972 y(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f -(it)h(had)f(the)h(v)-5 b(alue)870 2755 y Ft +(it)h(had)f(the)h(v)-5 b(alue)870 5101 y Ft ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -2889 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +5230 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 2999 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 3158 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 -b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 3268 y Ft(read)31 -b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(49\).)47 b(The)32 b Ft(select)e Fu(command)630 3377 -y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i -(10\))f(terminates)g(if)g(input)e(do)s(es)630 3487 y(not)k(arriv)m(e)g -(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) -h(terminal.)630 3621 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d -(v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)630 3731 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) -e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 -b(terminates)h(after)630 3841 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m -(b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s -(es)h(not)h(arriv)m(e.)150 4000 y Ft(TMPDIR)192 b Fu(If)39 -b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a) -g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 4110 -y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 -4269 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g -(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 -b(is)f(readonly)-8 b(.)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 3659 -116 a Fu(82)150 299 y Fp(6)80 +(is)630 5340 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)p eop end +%%Page: 83 89 +TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(TMOUT)240 +b Fu(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j +Ft(TMOUT)d Fu(is)g(treated)i(as)e(the)h(default)g(timeout)g(for)g(the) +630 408 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e +(Builtins],)h(page)g(50\).)47 b(The)32 b Ft(select)e +Fu(command)630 518 y(\(see)f(Section)h(3.2.4.2)g([Conditional)g +(Constructs],)e(page)i(11\))f(terminates)g(if)g(input)e(do)s(es)630 +628 y(not)k(arriv)m(e)g(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h +(is)g(coming)h(from)f(a)h(terminal.)630 762 y(In)40 b(an)h(in)m +(teractiv)m(e)i(shell,)h(the)d(v)-5 b(alue)41 b(is)g(in)m(terpreted)g +(as)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)f(to)630 872 +y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)e(after)i(issuing)f(the)h +(primary)e(prompt.)39 b(Bash)26 b(terminates)h(after)630 +981 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m(b)s(er)e(of)h(seconds)h(if) +f(a)h(complete)h(line)e(of)h(input)e(do)s(es)h(not)h(arriv)m(e.)150 +1141 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 +b(alue)40 b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g +(Bash)h(creates)630 1250 y(temp)s(orary)30 b(\014les)g(for)g(the)h +(shell's)g(use.)150 1410 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h +(user)f(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 +b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end +%%Page: 84 90 +TeXDict begin 84 89 bop 3659 -116 a Fu(84)150 299 y Fp(6)80 b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h (describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e @@ -13964,7 +14139,7 @@ Fj(shopt_option)p Ft(])d(-c)j Fj(string)f Ft([)p Fj(ar-)390 Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1438 y(gument)i Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k (options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h -(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(60\))i(can)e(b)s +(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(61\))i(can)e(b)s (e)f(used)h(as)g(options)g(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.) 74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m (ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 @@ -13974,7 +14149,7 @@ b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 2152 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e (executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g(debugging)f(mo)s(de)h(\(see)g -(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)j(page)f(64,)630 +(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)j(page)f(65,)630 2371 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i @@ -13993,7 +14168,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) -f(Line)g(Editing],)630 4131 y(page)h(104\))h(to)f(read)g(command)f +f(Line)g(Editing],)630 4131 y(page)h(106\))h(to)f(read)g(command)f (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h @@ -14010,88 +14185,89 @@ b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g (as)g(a)630 5230 y(strict)26 b(sup)s(erset)e(of)h(that)g(standard.)38 -b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(96,)630 +b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(98,)630 5340 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f Fu(mo)s(de.)p eop end -%%Page: 83 89 -TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(83)150 299 y Ft(--restricted)630 +%%Page: 85 91 +TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y Ft(--restricted)630 408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h (Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 -y(page)31 b(95\).)150 687 y Ft(--verbose)630 796 y Fu(Equiv)-5 +y(page)31 b(97\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5 b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g -(lines)g(as)h(they're)g(read.)150 965 y Ft(--version)630 -1074 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h -(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1184 -y(exit)j(successfully)-8 b(.)275 1357 y(There)28 b(are)i(sev)m(eral)g +(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630 +1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h +(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1166 +y(exit)j(successfully)-8 b(.)275 1325 y(There)28 b(are)i(sev)m(eral)g (single-c)m(haracter)i(options)d(that)h(ma)m(y)g(b)s(e)e(supplied)g(at) -i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1467 y(not)i(a)m(v)-5 +i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1435 y(not)i(a)m(v)-5 b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150 -1640 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h -(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1749 -y(mand)p 859 1749 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 +1594 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h +(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1704 +y(mand)p 859 1704 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 b(If)32 b(there)h(are)g(argumen)m(ts)g(after)g(the)g -Fr(command)p 3303 1749 V 40 w(string)p Fu(,)h(the)630 -1859 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e +Fr(command)p 3303 1704 V 40 w(string)p Fu(,)h(the)630 +1813 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e Fu(and)h(an)m(y)g(remaining)g(argumen)m(ts)g(are)g(assigned)g(to)630 -1968 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 +1923 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g -(shell,)630 2078 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g -(error)g(messages.)150 2247 y Ft(-i)384 b Fu(F)-8 b(orce)22 +(shell,)630 2032 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g +(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22 b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h -(6.3)630 2356 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(85.)150 -2525 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h +(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(87.)150 +2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h (had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 -b(When)31 b(the)h(shell)630 2634 y(is)37 b(in)m(teractiv)m(e,)43 +b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43 b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i (shell)e(with)g(`)p Ft(exec)30 b(-l)g(bash)p Fu('.)630 -2744 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c +2680 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c (login)h(shell)g(startup)f(\014les)g(will)g(b)s(e)g(executed.)630 -2853 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 +2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) -h(with)g(a)630 2963 y(Bash)26 b(login)g(shell.)39 b(See)26 -b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(84,)i(for)d(a)h -(description)630 3073 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) -f(a)h(login)g(shell.)150 3241 y Ft(-r)384 b Fu(Mak)m(e)54 +h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26 +b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(86,)i(for)d(a)h +(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) +f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) -d(Restricted)j(Shell],)630 3351 y(page)31 b(95\).)150 -3519 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f +d(Restricted)j(Shell],)630 3278 y(page)31 b(97\).)150 +3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f (if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h -(then)630 3629 y(commands)i(are)h(read)g(from)f(the)h(standard)f +(then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f (input.)39 b(This)28 b(option)h(allo)m(ws)h(the)f(p)s(ositional)630 -3738 y(parameters)i(to)g(b)s(e)f(set)g(when)g(in)m(v)m(oking)h(an)g(in) -m(teractiv)m(e)i(shell.)150 3907 y Ft(-D)384 b Fu(A)37 -b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p -Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 -4017 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 -b(ject)38 b(to)h(language)g(translation)g(when)630 4126 +3656 y(parameters)i(to)h(b)s(e)e(set)i(when)d(in)m(v)m(oking)k(an)d(in) +m(teractiv)m(e)k(shell)d(or)g(when)f(reading)h(input)630 +3766 y(through)f(a)g(pip)s(e.)150 3925 y Ft(-D)384 b +Fu(A)37 b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y) +h(`)p Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 +4035 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 +b(ject)38 b(to)h(language)g(translation)g(when)630 4144 y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 -b(ranslation],)630 4236 y(page)31 b(7\).)42 b(This)29 +b(ranslation],)630 4254 y(page)31 b(7\).)42 b(This)29 b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f -(executed.)150 4404 y Ft([-+]O)f([)p Fj(shopt_option)p -Ft(])630 4514 y Fr(shopt)p 854 4514 V 40 w(option)44 +(executed.)150 4413 y Ft([-+]O)f([)p Fj(shopt_option)p +Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44 b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h -Ft(shopt)d Fu(builtin)i(\(see)630 4623 y(Section)32 b(4.3.2)h([The)e -(Shopt)f(Builtin],)i(page)g(64\).)44 b(If)31 b Fr(shopt)p -2724 4623 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f -Fu(sets)630 4733 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h +Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e +(Shopt)f(Builtin],)i(page)g(65\).)44 b(If)31 b Fr(shopt)p +2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f +Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 -4733 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 -4843 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g +4742 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 +4852 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g (accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g -(standard)630 4952 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h +(standard)630 4961 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h (option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in) -f(a)h(format)f(that)630 5062 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) +f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) 150 5230 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(signals)g(the)h(end)e(of)i (options)f(and)g(disables)g(further)f(option)h(pro)s(cessing.)64 b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p eop end -%%Page: 84 90 -TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(84)275 299 y(A)27 b +%%Page: 86 92 +TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(86)275 299 y(A)27 b Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m (haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 @@ -14103,13 +14279,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e -(page)g(85,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h +(page)g(87,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h (remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140 y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e (to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) -h(40\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h +h(41\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h (fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f (the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g (to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26 @@ -14123,9 +14299,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g (exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f (an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g (describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g -(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275 +(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(23\).)275 2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h -(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(85.)150 +(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(87.)150 2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j (shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m (v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g @@ -14164,9 +14340,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g 5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m (t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j (and)e(uses)g(the)p eop end -%%Page: 85 91 -TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y(expanded)30 +%%Page: 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(expanded)30 b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and) g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m (wing)150 408 y(command)g(w)m(ere)h(executed:)390 552 @@ -14247,9 +14423,9 @@ y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m (but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) 150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p eop end -%%Page: 86 92 -TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Fk(6.3.1)63 +%%Page: 88 94 +TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s @@ -14284,1016 +14460,1030 @@ b(Shell)k(Beha)m(vior)150 3102 y Fu(When)30 b(the)h(shell)f(is)h (eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3234 y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f (describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330 -3343 y(page)31 b(84.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g -(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(100\))h(is)e(enabled)g(b)m +3343 y(page)31 b(86.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g +(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(102\))h(is)e(enabled)g(b)m (y)g(default.)46 b(When)32 b(job)330 3585 y(con)m(trol)j(is)f(in)f (e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e (con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3694 y Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3826 -y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f -Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i -(and)d(ex-)330 3936 y(pands)30 b(and)g(displa)m(ys)h -Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f -(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)40 -b(Bash)31 b(displa)m(ys)f Ft(PS0)g Fu(after)h(it)g(reads)f(a)h(command) -f(but)f(b)s(efore)h(executing)i(it.)199 4177 y(4.)61 +y(3.)61 b(Bash)25 b(expands)e(and)h(displa)m(ys)h Ft(PS1)e +Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h +(and)e(expands)330 3936 y(and)33 b(displa)m(ys)h Ft(PS2)f +Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i +(of)f(a)g(m)m(ulti-line)h(com-)330 4045 y(mand.)42 b(Bash)31 +b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g +(command)g(but)f(b)s(efore)h(executing)330 4155 y(it.)62 +b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e +(96,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4265 +y(string)30 b(escap)s(e)h(sequences.)199 4396 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s -(efore)g(prin)m(ting)330 4287 y(the)31 b(primary)e(prompt,)h +(efore)g(prin)m(ting)330 4506 y(the)31 b(primary)e(prompt,)h Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32 -b(page)f(71\).)199 4419 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h -([Command)g(Line)g(Editing],)h(page)g(104\))g(is)f(used)g(to)g(read)g -(commands)330 4528 y(from)k(the)g(user's)g(terminal.)199 -4660 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 +b(page)f(72\).)199 4638 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h +([Command)g(Line)g(Editing],)h(page)g(106\))g(is)f(used)g(to)g(read)g +(commands)330 4748 y(from)k(the)g(user's)g(terminal.)199 +4879 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 -b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4770 +b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4989 y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g (standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330 -4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)199 -5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f -(History)h(F)-8 b(acilities],)51 b(page)45 b(137\))h(and)d(history)330 -5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) -k(page)45 b(139\))h(are)f(enabled)g(b)m(y)f(default.)330 -5230 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g -(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g -(with)330 5340 y(history)i(enabled)h(exits.)p eop end -%%Page: 87 93 -TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(87)199 299 y(8.)61 -b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(90\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 429 -y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g -(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(39\).)154 560 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g -(traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k -(Section)e(3.7.6)i([Signals],)330 669 y(page)i(39\).)42 -b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 -800 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i +5099 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)199 +5230 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f +(History)h(F)-8 b(acilities],)51 b(page)45 b(140\))h(and)d(history)330 +5340 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) +k(page)45 b(142\))h(are)f(enabled)g(b)m(y)f(default.)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)330 299 y(Bash)28 +b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)g(\014le)g +(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)330 +408 y(history)i(enabled)h(exits.)199 547 y(8.)61 b(Alias)31 +b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e(92\))h(is)e +(p)s(erformed)f(b)m(y)h(default.)199 685 y(9.)61 b(In)24 +b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g(ignores)f +Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)f(40\).)154 +823 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g(traps,)g +Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k(Section)e +(3.7.6)i([Signals],)330 933 y(page)i(40\).)42 b Ft(SIGINT)29 +b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 +1071 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Ft(huponexit)e Fu(shell)330 909 y(option)31 b(has)f(b)s(een)g(enabled)g -(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(39\).)154 -1040 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g +Ft(huponexit)e Fu(shell)330 1180 y(option)31 b(has)f(b)s(een)g(enabled) +g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(40\).)154 +1319 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g (ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) -e(Section)h(4.3.1)g([The)330 1149 y(Set)g(Builtin],)g(page)g(60\).)154 -1280 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s +e(Section)h(4.3.1)g([The)330 1428 y(Set)g(Builtin],)g(page)g(61\).)154 +1567 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s (dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 -1389 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 +1676 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 -b(page)f(71\).)154 1520 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +b(page)f(72\).)154 1814 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i (references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 -1629 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g -(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(60\).)154 -1760 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +1924 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(61\).)154 +2062 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f (errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 -b(unset)g(or)h(n)m(ull)f(in)330 1869 y Ft(${)p Fj(var)p +b(unset)g(or)h(n)m(ull)f(in)330 2172 y Ft(${)p Fj(var)p Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g -([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154 -2000 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(24\).)154 +2310 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f (shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 -2130 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f +2448 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f (sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f -(cause)330 2240 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h -([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)154 2370 y(18.)61 +(cause)330 2558 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(98\).)154 2696 y(18.)61 b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g (exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 -2480 y(page)e(42\).)154 2610 y(19.)61 b(P)m(arser)31 +2806 y(page)e(43\).)154 2944 y(19.)61 b(P)m(arser)31 b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) -154 2741 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g +154 3082 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g (directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 2850 y(\(see)35 b(the)g(description)f +(enabled)f(b)m(y)h(default)330 3192 y(\(see)35 b(the)g(description)f (of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f -Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2960 y(Shopt)30 -b(Builtin],)h(page)g(64\).)154 3090 y(21.)61 b(The)42 +Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3301 y(Shopt)30 +b(Builtin],)h(page)g(65\).)154 3439 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 3200 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s +(not)330 3549 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s (er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f -Fu(\(see)i(Section)g(5.2)h([Bash)330 3310 y(V)-8 b(ariables],)32 -b(page)f(71\).)150 3542 y Fs(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 3702 y Fu(Conditional)26 b(expressions)g(are)g(used)f +Fu(\(see)i(Section)g(5.2)h([Bash)330 3659 y(V)-8 b(ariables],)32 +b(page)f(72\).)150 3910 y Fs(6.4)68 b(Bash)45 b(Conditional)h +(Expressions)150 4070 y Fu(Conditional)26 b(expressions)g(are)g(used)f (b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h -Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3811 y(commands.)275 -3942 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4179 y(commands.)275 +4321 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 b(.)48 b(Unary)33 b(expressions)f(are)i(often)f(used)f(to)i(examine)g -(the)150 4051 y(status)44 b(of)g(a)g(\014le.)80 b(There)43 +(the)150 4431 y(status)44 b(of)g(a)g(\014le.)80 b(There)43 b(are)h(string)f(op)s(erators)h(and)f(n)m(umeric)g(comparison)h(op)s -(erators)g(as)g(w)m(ell.)150 4161 y(Bash)26 b(handles)f(sev)m(eral)i +(erators)g(as)g(w)m(ell.)150 4541 y(Bash)26 b(handles)f(sev)m(eral)i (\014lenames)f(sp)s(ecially)g(when)f(they)g(are)i(used)d(in)i -(expressions.)38 b(If)26 b(the)f(op)s(erating)150 4270 +(expressions.)38 b(If)26 b(the)f(op)s(erating)150 4650 y(system)d(on)g(whic)m(h)g(Bash)h(is)f(running)e(pro)m(vides)i(these)h (sp)s(ecial)g(\014les,)h(Bash)e(will)h(use)f(them;)j(otherwise)d(it)150 -4380 y(will)27 b(em)m(ulate)h(them)e(in)m(ternally)h(with)f(this)g(b)s +4760 y(will)27 b(em)m(ulate)h(them)e(in)m(ternally)h(with)f(this)g(b)s (eha)m(vior:)39 b(If)26 b(the)g Fr(\014le)32 b Fu(argumen)m(t)27 -b(to)g(one)f(of)h(the)f(primaries)150 4489 y(is)33 b(of)g(the)f(form)h +b(to)g(one)f(of)h(the)f(primaries)150 4869 y(is)33 b(of)g(the)f(form)h Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)h(\014le)h(descriptor)f Fr(N)43 b Fu(is)33 b(c)m(hec)m(k)m(ed.)49 b(If)33 b(the)f Fr(\014le)38 b Fu(argumen)m(t)33 b(to)h(one)f(of)150 -4599 y(the)f(primaries)g(is)g(one)g(of)g Ft(/dev/stdin)p +4979 y(the)f(primaries)g(is)g(one)g(of)g Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p Fu(,)f(or)j Ft(/dev/stderr)p -Fu(,)d(\014le)j(descriptor)g(0,)h(1,)g(or)150 4709 y(2,)e(resp)s(ectiv) -m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4839 y(When)37 +Fu(,)d(\014le)j(descriptor)g(0,)h(1,)g(or)150 5088 y(2,)e(resp)s(ectiv) +m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 5230 y(When)37 b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h -(curren)m(t)150 4949 y(lo)s(cale.)k(The)30 b Ft(test)f -Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 5079 y(Unless)44 +(curren)m(t)150 5340 y(lo)s(cale.)k(The)30 b Ft(test)f +Fu(command)i(uses)f(ASCI)s(I)e(ordering.)p eop end +%%Page: 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)275 299 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g (\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150 -5189 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h -(than)f(the)g(link)h(itself.)150 5340 y Ft(-a)f Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)p -eop end -%%Page: 88 94 -TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Ft(-b)30 +408 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h +(than)f(the)g(link)h(itself.)150 564 y Ft(-a)f Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150 +720 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g +(\014le.)150 876 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s +(ecial)f(\014le.)150 1032 y Ft(-d)f Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory) +-8 b(.)150 1188 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists.)150 1344 y Ft(-f)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 -461 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial)f(\014le.)150 -623 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 b(.)150 -785 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists.)150 948 y Ft(-f)30 b Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(regular)f(\014le.)150 1110 y Ft(-g)g +b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150 +1500 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f +(set.)150 1656 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g +(link.)150 1812 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p +Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 1968 y Ft(-p)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150 -1272 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 -1434 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p Fu(stic)m(ky)p -Ft(")h Fu(bit)g(is)f(set.)150 1596 y Ft(-p)g Fj(file)162 +Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 +2124 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150 +2280 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f +(zero.)150 2436 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 +b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g +(to)h(a)g(terminal.)150 2592 y Ft(-u)f Fj(file)162 b +Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g +(set-user-id)h(bit)f(is)h(set.)150 2748 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 1759 -y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(readable.)150 1921 y Ft(-s)g -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150 -2083 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor) -f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150 -2245 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h -(set.)150 2407 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(writable.)150 -2570 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(executable.)150 -2732 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f -(e\013ectiv)m(e)j(group)d(id.)150 2894 y Ft(-L)g Fj(file)162 +b(and)f(is)g(writable.)150 2904 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 3056 y Ft(-N)f -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h(since)g(it)h(w)m -(as)g(last)g(read.)150 3218 y Ft(-O)f Fj(file)162 b Fu(T)-8 -b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m -(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150 3381 y Ft(-S)g +b(and)f(is)g(executable.)150 3060 y Ft(-G)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150 +3216 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 +3372 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h +(since)g(it)h(w)m(as)g(last)g(read.)150 3528 y Ft(-O)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 3543 -y Fj(file1)e Ft(-ef)g Fj(file2)630 3652 y Fu(T)-8 b(rue)30 -b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(refer)30 -b(to)i(the)e(same)h(device)g(and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 -3814 y Fj(file1)f Ft(-nt)g Fj(file2)630 3924 y Fu(T)-8 -b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to) -g(mo)s(di\014cation)f(date\))h(than)f Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le1)31 b Fu(exists)630 4034 y(and)f Fr(\014le2)38 -b Fu(do)s(es)30 b(not.)150 4196 y Fj(file1)f Ft(-ot)g -Fj(file2)630 4305 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 -b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le2)38 b Fu(exists)31 b(and)f Fr(\014le1)38 b -Fu(do)s(es)30 b(not.)150 4468 y Ft(-o)g Fj(optname)630 -4577 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f -Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h -(app)s(ears)e(in)630 4687 y(the)33 b(description)h(of)f(the)g -Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g -(4.3.1)h([The)e(Set)630 4796 y(Builtin],)e(page)g(60\).)150 -4959 y Ft(-v)f Fj(varname)630 5068 y Fu(T)-8 b(rue)30 -b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 -b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 -b(alue\).)150 5230 y Ft(-R)30 b Fj(varname)630 5340 y -Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h -(reference.)p eop end -%%Page: 89 95 -TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Ft(-z)30 -b Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f -Fr(string)38 b Fu(is)31 b(zero.)150 462 y Ft(-n)f Fj(string)150 -571 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f -Fr(string)38 b Fu(is)31 b(non-zero.)150 734 y Fj(string1)d -Ft(==)i Fj(string2)150 844 y(string1)e Ft(=)i Fj(string2)630 -953 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 +Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j +(user)d(id.)150 3683 y Ft(-S)g Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m +(k)m(et.)150 3839 y Fj(file1)e Ft(-ef)g Fj(file2)630 +3949 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30 +b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s +(de)g(n)m(um)m(b)s(ers.)150 4105 y Fj(file1)f Ft(-nt)g +Fj(file2)630 4215 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32 +b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h +(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b +Fu(exists)630 4324 y(and)f Fr(\014le2)38 b Fu(do)s(es)30 +b(not.)150 4480 y Fj(file1)f Ft(-ot)g Fj(file2)630 4590 +y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g +Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31 +b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 4746 +y Ft(-o)g Fj(optname)630 4855 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h +(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 +b(list)h(of)f(options)h(app)s(ears)e(in)630 4965 y(the)33 +b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g +Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630 +5074 y(Builtin],)e(page)g(61\).)150 5230 y Ft(-v)f Fj(varname)630 +5340 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 +b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i +(a)g(v)-5 b(alue\).)p eop end +%%Page: 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)150 299 y Ft(-R)30 +b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 +b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f +(name)h(reference.)150 571 y Ft(-z)f Fj(string)66 b Fu(T)-8 +b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31 +b(zero.)150 734 y Ft(-n)f Fj(string)150 844 y(string)192 +b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 +b Fu(is)31 b(non-zero.)150 1006 y Fj(string1)d Ft(==)i +Fj(string2)150 1116 y(string1)e Ft(=)i Fj(string2)630 +1225 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) -630 1063 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m +630 1335 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m (v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630 -1173 y(Constructs],)30 b(page)h(10\).)630 1309 y(`)p +1445 y(Constructs],)30 b(page)h(11\).)630 1581 y(`)p Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e -Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1472 -y Fj(string1)e Ft(!=)i Fj(string2)630 1581 y Fu(T)-8 +Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1743 +y Fj(string1)e Ft(!=)i Fj(string2)630 1853 y Fu(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 -1744 y Fj(string1)e Ft(<)i Fj(string2)630 1854 y Fu(T)-8 +2016 y Fj(string1)e Ft(<)i Fj(string2)630 2125 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2017 -y Fj(string1)28 b Ft(>)i Fj(string2)630 2126 y Fu(T)-8 +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2288 +y Fj(string1)28 b Ft(>)i Fj(string2)630 2398 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2289 -y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2399 y Ft(OP)j Fu(is)h(one)g(of)h(`) +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2560 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2670 y Ft(OP)j Fu(is)h(one)g(of)h(`) p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 -2508 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +2780 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f -(than)f(or)630 2618 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)f(or)630 2889 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i (than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 -b(.)42 b Fr(Arg1)36 b Fu(and)630 2728 y Fr(arg2)j Fu(ma)m(y)30 -b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m(tegers.)150 -2974 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3133 y Fu(The)26 +b(.)42 b Fr(Arg1)36 b Fu(and)630 2999 y Fr(arg2)41 b +Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m +(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630 +3108 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33 +b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section) +f(6.5)g([Shell)630 3218 y(Arithmetic],)e(page)f(91\).)150 +3464 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3623 y Fu(The)26 b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5 b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y) -150 3243 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g +150 3733 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h -Ft(declare)d Fu(builtin.)275 3381 y(Ev)-5 b(aluation)27 +Ft(declare)d Fu(builtin.)275 3870 y(Ev)-5 b(aluation)27 b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m (k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150 -3490 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 +3980 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m -(y)-8 b(,)32 b(and)150 3600 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h +(y)-8 b(,)32 b(and)150 4090 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h (in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s -(erators)g(is)g(group)s(ed)f(in)m(to)150 3709 y(lev)m(els)27 +(erators)g(is)g(group)s(ed)f(in)m(to)150 4199 y(lev)m(els)27 b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e (listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150 -3874 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 +4364 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 -4037 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 -b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4200 +4526 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 +b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4689 y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 -4363 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 -4526 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 4688 y +4852 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 +5015 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5177 y Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d -(remainder)150 4851 y Ft(+)g(-)354 b Fu(addition,)31 -b(subtraction)150 5014 y Ft(<<)f(>>)258 b Fu(left)31 -b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 5177 y Ft(<=)f(>=)g(<)g(>) -102 b Fu(comparison)150 5340 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 -b(and)e(inequalit)m(y)p eop end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Ft(&)432 -b Fu(bit)m(wise)31 b(AND)150 459 y Ft(^)432 b Fu(bit)m(wise)31 -b(exclusiv)m(e)h(OR)150 618 y Ft(|)432 b Fu(bit)m(wise)31 -b(OR)150 778 y Ft(&&)384 b Fu(logical)33 b(AND)150 938 -y Ft(||)384 b Fu(logical)33 b(OR)150 1097 y Ft(expr)c(?)h(expr)f(:)h -(expr)630 1207 y Fu(conditional)i(op)s(erator)150 1366 -y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 -1476 y Fu(assignmen)m(t)150 1636 y Ft(expr1)g(,)h(expr2)630 -1745 y Fu(comma)275 1905 y(Shell)38 b(v)-5 b(ariables)39 +(remainder)150 5340 y Ft(+)g(-)354 b Fu(addition,)31 +b(subtraction)p eop end +%%Page: 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(<<)30 +b(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 +456 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 612 +y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 +769 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 926 y Ft(^)432 +b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1082 y Ft(|)432 +b Fu(bit)m(wise)31 b(OR)150 1239 y Ft(&&)384 b Fu(logical)33 +b(AND)150 1396 y Ft(||)384 b Fu(logical)33 b(OR)150 1552 +y Ft(expr)c(?)h(expr)f(:)h(expr)630 1662 y Fu(conditional)i(op)s +(erator)150 1819 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g +(^=)f(|=)630 1928 y Fu(assignmen)m(t)150 2085 y Ft(expr1)g(,)h(expr2) +630 2195 y Fu(comma)275 2351 y(Shell)38 b(v)-5 b(ariables)39 b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is) -f(p)s(erformed)g(b)s(efore)g(the)150 2015 y(expression)g(is)g(ev)-5 +f(p)s(erformed)g(b)s(efore)g(the)150 2461 y(expression)g(is)g(ev)-5 b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150 -2124 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m +2570 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m (tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or) -f(unset)150 2234 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) +f(unset)150 2680 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m -(tax.)150 2343 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 +(tax.)150 2790 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h -(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2453 +(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2899 y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m (en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p -Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 2563 y(a)j(v)-5 +Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3009 y(a)j(v)-5 b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b -Fu(attribute)150 2672 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g -(expression.)275 2807 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) +Fu(attribute)150 3118 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g +(expression.)275 3252 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p -Fu(')150 2916 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 +Fu(')150 3361 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5 b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g -Fr(base)150 3026 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m +Fr(base)150 3471 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m (een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) -g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3136 y(in)c(that)g(base.)39 +g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3580 y(in)c(that)g(base.)39 b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h (is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h -(greater)150 3245 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h +(greater)150 3690 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h (lo)m(w)m(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150 -3355 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f +3800 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f (equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i -(ma)m(y)g(b)s(e)e(used)150 3464 y(in)m(terc)m(hangeably)32 +(ma)m(y)g(b)s(e)e(used)150 3909 y(in)m(terc)m(hangeably)32 b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f -(35.)275 3599 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 +(35.)275 4042 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h(precedence.)85 b(Sub-expressions)44 -b(in)g(paren)m(theses)i(are)150 3709 y(ev)-5 b(aluated)32 +b(in)g(paren)m(theses)i(are)150 4152 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g(the)g(precedence)g(rules)f -(ab)s(o)m(v)m(e.)150 3950 y Fs(6.6)68 b(Aliases)150 4109 +(ab)s(o)m(v)m(e.)150 4390 y Fs(6.6)68 b(Aliases)150 4549 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g (for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m -(ord)h(of)h(a)150 4219 y(simple)32 b(command.)45 b(The)31 +(ord)h(of)h(a)150 4659 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s -(e)e(set)h(and)g(unset)f(with)h(the)150 4329 y Ft(alias)d -Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4463 +(e)e(set)h(and)g(unset)f(with)h(the)150 4768 y Ft(alias)d +Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4902 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f (unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g -(alias.)150 4573 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m +(alias.)150 5011 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m (y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p -Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4682 y(the)e(shell)g(metac)m +Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 5121 y(the)e(shell)g(metac)m (haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g (ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150 -4792 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) +5230 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) -5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.) -40 b(The)150 4902 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i +40 b(The)150 5340 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i (text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g -(iden)m(tical)i(to)e(an)150 5011 y(alias)c(b)s(eing)f(expanded)f(is)h -(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one) -g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 5121 y Ft("ls)f(-F")p -Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h -(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 -b(If)150 5230 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 -b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w) -m(ord)h(follo)m(wing)i(the)150 5340 y(alias)f(is)e(also)h(c)m(hec)m(k)m -(ed)i(for)d(alias)h(expansion.)p eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Aliases)29 -b(are)f(created)i(and)d(listed)i(with)f(the)g Ft(alias)f -Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g Ft(unalias)150 -408 y Fu(command.)275 540 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f -(using)h(argumen)m(ts)g(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e -Ft(csh)p Fu(.)83 b(If)150 650 y(argumen)m(ts)37 b(are)h(needed,)g(a)g -(shell)f(function)f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g -([Shell)f(F)-8 b(unctions],)150 759 y(page)31 b(17\).)275 -891 y(Aliases)i(are)h(not)e(expanded)g(when)g(the)h(shell)g(is)g(not)g -(in)m(teractiv)m(e,)j(unless)c(the)h Ft(expand_aliases)150 -1000 y Fu(shell)e(option)f(is)h(set)g(using)f Ft(shopt)f -Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(64\).) -275 1132 y(The)38 b(rules)h(concerning)h(the)f(de\014nition)g(and)g -(use)g(of)g(aliases)i(are)e(somewhat)h(confusing.)67 -b(Bash)150 1241 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i(one)e -(complete)h(line)f(of)g(input)f(b)s(efore)g(executing)i(an)m(y)g(of)f -(the)g(commands)f(on)150 1351 y(that)22 b(line.)39 b(Aliases)23 -b(are)f(expanded)f(when)g(a)h(command)g(is)f(read,)j(not)e(when)f(it)h -(is)g(executed.)39 b(Therefore,)150 1461 y(an)24 b(alias)i -(de\014nition)e(app)s(earing)g(on)g(the)h(same)g(line)f(as)h(another)g -(command)f(do)s(es)g(not)h(tak)m(e)h(e\013ect)g(un)m(til)150 -1570 y(the)k(next)f(line)h(of)g(input)f(is)g(read.)40 +(iden)m(tical)i(to)e(an)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(alias)32 +b(b)s(eing)f(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43 +b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e +Fu(to)150 408 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i +(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen) +m(t)h(text.)40 b(If)150 518 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h +(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next) +h(command)e(w)m(ord)h(follo)m(wing)i(the)150 628 y(alias)f(is)e(also)h +(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 762 +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 871 y Fu(command.)275 1005 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 1115 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 1225 y(page)31 b(17\).)275 1359 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 1468 y Fu(shell)e(option)f(is)h +(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g +(Builtin],)h(page)g(65\).)275 1602 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 1712 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i +(one)e(complete)h(line)f(of)g(input)f(b)s(efore)g(executing)i(an)m(y)g +(of)f(the)g(commands)f(on)150 1822 y(that)22 b(line.)39 +b(Aliases)23 b(are)f(expanded)f(when)g(a)h(command)g(is)f(read,)j(not)e +(when)f(it)h(is)g(executed.)39 b(Therefore,)150 1931 +y(an)24 b(alias)i(de\014nition)e(app)s(earing)g(on)g(the)h(same)g(line) +f(as)h(another)g(command)f(do)s(es)g(not)h(tak)m(e)h(e\013ect)g(un)m +(til)150 2041 y(the)k(next)f(line)h(of)g(input)f(is)g(read.)40 b(The)29 b(commands)h(follo)m(wing)h(the)e(alias)i(de\014nition)e(on)h -(that)g(line)g(are)150 1680 y(not)j(a\013ected)h(b)m(y)f(the)g(new)f +(that)g(line)g(are)150 2150 y(not)j(a\013ected)h(b)m(y)f(the)g(new)f (alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e -(functions)i(are)g(executed.)150 1789 y(Aliases)c(are)g(expanded)e +(functions)i(are)g(executed.)150 2260 y(Aliases)c(are)g(expanded)e (when)g(a)i(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g -(function)g(is)g(executed,)150 1899 y(b)s(ecause)36 b(a)h(function)f +(function)g(is)g(executed,)150 2370 y(b)s(ecause)36 b(a)h(function)f (de\014nition)f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g(de\014ned)d(in)h(a)150 -2009 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 +2479 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 -2118 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +2589 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h (use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 -2250 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +2723 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i (functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 -2484 y Fs(6.7)68 b(Arra)l(ys)150 2644 y Fu(Bash)33 b(pro)m(vides)g +2963 y Fs(6.7)68 b(Arra)l(ys)150 3122 y Fu(Bash)33 b(pro)m(vides)g (one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150 -2753 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +3232 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 2863 y(no)h(maxim)m(um)g(limit)h(on)f +-8 b(.)46 b(There)32 b(is)150 3341 y(no)h(maxim)m(um)g(limit)h(on)f (the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen) -m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2973 +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3451 y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25 b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e -(arithmetic)150 3082 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) -e(Arithmetic],)k(page)d(89\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 3192 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +(arithmetic)150 3561 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +e(Arithmetic],)k(page)d(91\)\))h(and)d(are)i(zero-based;)k(asso)s +(ciativ)m(e)150 3670 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m -(ust)g(b)s(e)g(non-)150 3301 y(negativ)m(e)d(in)m(tegers.)275 -3433 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(ust)g(b)s(e)g(non-)150 3780 y(negativ)m(e)d(in)m(tegers.)275 +3914 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m -(tax)390 3564 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p -Fj(value)150 3696 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(tax)390 4048 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 4182 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g (an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5 b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150 -3806 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 3937 y Ft(declare)46 b(-a)h Fj(name)150 4069 -y Fu(The)30 b(syn)m(tax)390 4200 y Ft(declare)46 b(-a)h -Fj(name)p Ft([)p Fj(subscript)p Ft(])150 4332 y Fu(is)30 +4292 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)390 4426 y Ft(declare)46 b(-a)h Fj(name)150 4560 +y Fu(The)30 b(syn)m(tax)390 4694 y Ft(declare)46 b(-a)h +Fj(name)p Ft([)p Fj(subscript)p Ft(])150 4828 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150 -4463 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 -4595 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4726 y +4962 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 +5096 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 5230 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m (y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h -Ft(readonly)150 4836 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g +Ft(readonly)150 5340 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g (applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 -b(.)275 4967 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s -(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 5099 y Fj(name)p -Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 5230 -y Fu(where)38 b(eac)m(h)i Fr(v)-5 b(alue)44 b Fu(is)39 -b(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p -Fu(.)63 b(Indexed)37 b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 -5340 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 -b(When)31 b(assigning)g(to)h(indexed)e(arra)m(ys,)i(if)f(the)g -(optional)h(subscript)e(is)p eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y(supplied,)32 -b(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f(the)g(index)f(of)h -(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 408 -y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c(one.)41 -b(Indexing)30 b(starts)h(at)g(zero.)275 555 y(When)f(assigning)h(to)g -(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 b(,)32 b(the)e(subscript)f(is)i -(required.)275 701 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f -(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen) -m(ts)h(ma)m(y)g(b)s(e)150 810 y(assigned)e(to)g(using)f(the)g -Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p Fj(value)25 b -Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 -956 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 +b(.)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)275 299 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 438 y Fj(name)p Ft(=\()p Fj(value1)44 +b(value2)j Ft(...)f(\))150 578 y Fu(where)38 b(eac)m(h)i +Fr(v)-5 b(alue)44 b Fu(is)39 b(of)g(the)g(form)f Ft([)p +Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)63 b(Indexed)37 +b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 687 y(require)31 +b(an)m(ything)g(but)f Fr(string)p Fu(.)43 b(When)31 b(assigning)g(to)h +(indexed)e(arra)m(ys,)i(if)f(the)g(optional)h(subscript)e(is)150 +797 y(supplied,)i(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f(the) +g(index)f(of)h(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 +907 y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c(one.) +41 b(Indexing)30 b(starts)h(at)g(zero.)275 1046 y(When)f(assigning)h +(to)g(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 b(,)32 b(the)e(subscript)f +(is)i(required.)275 1186 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 1295 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 +1435 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g -(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 1066 y(n)m(um)m(b)s(er)43 +(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 1544 y(n)m(um)m(b)s(er)43 b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e (the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 -1176 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g +1654 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g (end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h -(references)g(the)f(last)150 1285 y(elemen)m(t.)275 1431 +(references)g(the)f(last)150 1763 y(elemen)m(t.)275 1903 y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f (referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p -Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 1541 y(required)f(to)j(a)m +Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 2012 y(required)f(to)j(a)m (v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 -1650 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f +2122 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f (expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 -1760 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g +2232 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g (quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j -Ft(${)p Fj(name)p Ft([*]})150 1870 y Fu(expands)25 b(to)h(a)g(single)h +Ft(${)p Fj(name)p Ft([*]})150 2341 y Fu(expands)25 b(to)h(a)g(single)h (w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 -1979 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +2451 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h (of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 -2089 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +2560 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 -b(If)31 b(the)i(double-quoted)150 2198 y(expansion)39 +b(If)31 b(the)i(double-quoted)150 2670 y(expansion)39 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f -(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 2308 +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 2780 y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h (expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150 -2418 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +2889 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s -(ecial)h(param-)150 2527 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +(ecial)h(param-)150 2999 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 -2637 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +3108 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 -b(the)g Fr(subscript)150 2746 y Fu(used)34 b(to)h(reference)g(an)f +b(the)g Fr(subscript)150 3218 y Fu(used)34 b(to)h(reference)g(an)f (elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 -2856 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +3328 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h (than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 -b(,)33 b(so)g(negativ)m(e)150 2966 y(indices)d(coun)m(t)h(bac)m(k)h +b(,)33 b(so)g(negativ)m(e)150 3437 y(indices)d(coun)m(t)h(bac)m(k)h (from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g (of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 -3112 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +3577 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 -b(to)f(referencing)g(with)g(a)150 3221 y(subscript)35 +b(to)f(referencing)g(with)g(a)150 3686 y(subscript)35 b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j -(and)c Ft(bash)g Fu(will)150 3331 y(create)d(an)e(arra)m(y)h(if)f -(necessary)-8 b(.)275 3477 y(An)35 b(arra)m(y)i(v)-5 +(and)c Ft(bash)g Fu(will)150 3796 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 3935 y(An)35 b(arra)m(y)i(v)-5 b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s (een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 -3587 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 -3733 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i +4045 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 +4184 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i (\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p -Fi(})150 3842 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 +Fi(})150 4294 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g (arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 -b(treatmen)m(t)150 3952 y(when)i(in)g(double)g(quotes)h(is)f(similar)h +b(treatmen)m(t)150 4403 y(when)i(in)g(double)g(quotes)h(is)f(similar)h (to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p -Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4061 y(within)30 -b(double)g(quotes.)275 4208 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g -(to)h(destro)m(y)g(arra)m(ys.)52 b Ft(unset)29 b Fj(name)p -Ft([)p Fj(subscript)p Ft(])h Fu(destro)m(ys)35 b(the)g(ar-)150 -4317 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p -Fu(.)61 b(Negativ)m(e)41 b(subscripts)36 b(to)i(indexed)g(arra)m(ys)g -(are)g(in)m(terpreted)g(as)150 4427 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 -b(Care)38 b(m)m(ust)h(b)s(e)f(tak)m(en)h(to)h(a)m(v)m(oid)g(un)m(w)m -(an)m(ted)e(side)h(e\013ects)h(caused)e(b)m(y)h(\014lename)150 -4536 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 -b(where)f Fr(name)39 b Fu(is)34 b(an)f(arra)m(y)-8 b(,)36 -b(remo)m(v)m(es)f(the)f(en)m(tire)g(arra)m(y)-8 b(.)52 -b(A)33 b(subscript)g(of)150 4646 y(`)p Ft(*)p Fu(')e(or)f(`)p -Ft(@)p Fu(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8 -b(.)275 4792 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p -Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g -Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 -4902 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f -(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 -b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 -5011 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g -Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g -(from)g(the)150 5121 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 -b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g -(input)f(in)m(to)i(individual)150 5230 y(arra)m(y)f(elemen)m(ts.)62 -b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g -(arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 -5340 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)p -eop end -%%Page: 93 99 -TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Fs(6.8)68 -b(The)45 b(Directory)g(Stac)l(k)150 458 y Fu(The)21 b(directory)h(stac) -m(k)h(is)e(a)h(list)g(of)f(recen)m(tly-visited)j(directories.)39 -b(The)20 b Ft(pushd)g Fu(builtin)h(adds)g(directories)150 -568 y(to)42 b(the)f(stac)m(k)i(as)e(it)h(c)m(hanges)g(the)f(curren)m(t) -g(directory)-8 b(,)45 b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v) -m(es)j(sp)s(eci\014ed)150 677 y(directories)29 b(from)f(the)h(stac)m(k) -h(and)d(c)m(hanges)j(the)e(curren)m(t)g(directory)h(to)g(the)g -(directory)f(remo)m(v)m(ed.)41 b(The)150 787 y Ft(dirs)34 -b Fu(builtin)g(displa)m(ys)h(the)g(con)m(ten)m(ts)i(of)e(the)g -(directory)h(stac)m(k.)56 b(The)34 b(curren)m(t)h(directory)g(is)g(alw) -m(a)m(ys)150 897 y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h -(directory)g(stac)m(k.)275 1037 y(The)k(con)m(ten)m(ts)i(of)f(the)h -(directory)f(stac)m(k)h(are)f(also)h(visible)g(as)f(the)g(v)-5 -b(alue)36 b(of)g(the)g Ft(DIRSTACK)e Fu(shell)150 1146 -y(v)-5 b(ariable.)150 1351 y Fk(6.8.1)63 b(Directory)40 -b(Stac)m(k)g(Builtins)150 1525 y Ft(dirs)870 1663 y(dirs)47 -b([-clpv])e([+)p Fj(N)i Ft(|)h(-)p Fj(N)p Ft(])630 1800 -y Fu(Displa)m(y)35 b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered) -f(directories.)51 b(Directories)36 b(are)e(added)f(to)630 -1909 y(the)28 b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f -Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630 -2019 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a) -m(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630 -2184 y Ft(-c)384 b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e -(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630 2349 y -Ft(-l)384 b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h -(pathnames;)h(the)f(default)g(listing)h(format)1110 2458 -y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h(directory)-8 -b(.)630 2623 y Ft(-p)384 b Fu(Causes)30 b Ft(dirs)f Fu(to)i(prin)m(t)f -(the)h(directory)g(stac)m(k)h(with)e(one)g(en)m(try)h(p)s(er)e(line.) -630 2788 y Ft(-v)384 b Fu(Causes)36 b Ft(dirs)f Fu(to)i(prin)m(t)f(the) -g(directory)h(stac)m(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110 -2898 y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i -(the)f(stac)m(k.)630 3063 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 -b(the)f Fr(N)10 b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h -(left)g(of)g(the)g(list)g(prin)m(ted)1110 3172 y(b)m(y)30 -b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h -(starting)g(with)g(zero.)630 3337 y Ft(-)p Fj(N)384 b -Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m -(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110 -3447 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j -(without)f(options\),)h(starting)g(with)e(zero.)150 3611 -y Ft(popd)870 3749 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p -Fj(N)p Ft(])630 3886 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m -(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the) -g(stac)m(k)630 3995 y(and)f(p)s(erforms)e(a)j Ft(cd)f -Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31 -b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 4105 -y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4513 y(within)30 +b(double)g(quotes.)275 4653 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 4762 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 4872 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 4981 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 5091 y(remo)m(v)m(es)k +(the)e(en)m(tire)i(arra)m(y)-8 b(.)275 5230 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 +5340 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)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(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 408 y(should)k(b)s(e)h(quoted.)275 539 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 648 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 758 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 868 +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 977 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 +1087 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 +1319 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 +1478 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 1588 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 1698 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 1807 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 1917 +y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275 +2047 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 2157 y(v)-5 b(ariable.)150 +2347 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150 +2515 y Ft(dirs)870 2645 y(dirs)47 b([-clpv])e([+)p Fj(N)i +Ft(|)h(-)p Fj(N)p Ft(])630 2776 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 2885 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 2995 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 3146 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 3297 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 3406 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h +(directory)-8 b(.)630 3557 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 3708 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 3818 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 +3969 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 4079 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 +4230 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 4339 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 4490 y Ft(popd)870 4620 y(popd)47 b([-n])f([+)p +Fj(N)h Ft(|)h(-)p Fj(N)p Ft(])630 4751 y Fu(When)32 b(no)g(argumen)m +(ts)h(are)g(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f +(directory)h(from)f(the)g(stac)m(k)630 4860 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 +4970 y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 -b(alen)m(t)33 b(to)630 4215 y Ft(popd)c(+0)p Fu(.)630 -4379 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g -(directory)g(when)e(remo)m(ving)j(directo-)1110 4489 +b(alen)m(t)33 b(to)630 5079 y Ft(popd)c(+0)p Fu(.)630 +5230 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 5340 y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g -(is)g(manipulated.)630 4654 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 -b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g -(left)h(of)g(the)f(list)h(prin)m(ted)1110 4763 y(b)m(y)30 -b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 4928 -y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 -b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g -(the)g(list)1110 5038 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p -Fu(\),)g(starting)h(with)f(zero.)150 5203 y Ft(pushd)870 -5340 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f -Fj(dir)p Ft(])p eop end -%%Page: 94 100 -TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(94)630 299 y(Sa)m(v)m(e)30 +(is)g(manipulated.)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)630 299 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 408 y(b)m(y)30 b Ft(dirs)p Fu(\),)g(starting)h(with)f +(zero.)630 564 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 674 y(prin)m(ted)30 +b(b)m(y)g Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)150 +830 y Ft(pushd)870 962 y(pushd)46 b([-n])h([+)p Fj(N)g +Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 1095 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g(directory)h(on)f(the)h(top)f(of)h(the)f(directory) h(stac)m(k)h(and)e(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 -408 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f -(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630 -518 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8 -b(.)630 675 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h -(of)g(directory)f(when)g(rotating)h(or)f(adding)1110 -784 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h -(stac)m(k)h(is)e(manipulated.)630 941 y Ft(+)p Fj(N)384 +1205 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 +1314 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8 +b(.)630 1470 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 +1580 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 1735 y Ft(+)p Fj(N)384 b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h (from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 -1051 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) +1845 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -1160 y(stac)m(k.)630 1317 y Ft(-)p Fj(N)384 b Fu(Brings)23 +1955 y(stac)m(k.)630 2110 y Ft(-)p Fj(N)384 b Fu(Brings)23 b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i -(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 1426 y(b)m(y)34 +(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 2220 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h -(the)f(list)h(b)m(y)f(rotating)i(the)1110 1536 y(stac)m(k.)630 -1693 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 +(the)f(list)h(b)m(y)f(rotating)i(the)1110 2330 y(stac)m(k.)630 +2485 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m -(t)g(direc-)1110 1802 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) +(t)g(direc-)1110 2595 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 -2040 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 -2200 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 +2832 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 +2992 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s(efore)f(Bash) -i(prin)m(ts)e(eac)m(h)j(primary)150 2309 y(prompt.)39 +i(prin)m(ts)e(eac)m(h)j(primary)150 3101 y(prompt.)39 b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a)h(non-n)m (ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29 -b(is)f(executed)i(just)150 2419 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m -(yp)s(ed)h(on)h(the)f(command)g(line.)275 2552 y(In)d(addition,)j(the)f +b(is)f(executed)i(just)150 3211 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m +(yp)s(ed)h(on)h(the)f(command)g(line.)275 3343 y(In)d(addition,)j(the)f (follo)m(wing)h(table)f(describ)s(es)f(the)h(sp)s(ecial)g(c)m (haracters)h(whic)m(h)f(can)f(app)s(ear)g(in)h(the)150 -2661 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i -Ft(PS4)p Fu(:)150 2818 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m -(haracter.)150 2975 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f -Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h -Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p -Ft(")p Fu(\).)150 3131 y Ft(\\D{)p Fj(format)p Ft(})630 -3241 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p -Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) -630 3351 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g -(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 -b(The)630 3460 y(braces)31 b(are)f(required.)150 3617 +3453 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 +3609 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m(haracter.)150 +3765 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f Ft(")p Fu(W)-8 +b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h Fu(format)f(\(e.g.,)h +Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p Ft(")p Fu(\).)150 +3921 y Ft(\\D{)p Fj(format)p Ft(})630 4030 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 +4140 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 4249 y(braces)31 b(are)f(required.)150 4405 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 -3773 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 3930 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 -4087 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m -(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4243 y Ft(\\l)384 +4561 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 4717 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 +4873 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 5028 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 4400 y Ft(\\n)384 b Fu(A)30 b(newline.)150 -4557 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 -4713 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f -(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 4870 y Ft(\\t)384 b Fu(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 5027 -y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 5183 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 5340 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h -(HH:MM)g(format.)p eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Ft(\\u)384 -b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f(user.)150 -455 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h -(2.00\))150 611 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m -(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 -766 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 -b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f -(the)630 876 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 -1032 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p -Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 -1188 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 1343 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s -(er)f(of)i(this)f(command.)150 1499 y Ft(\\$)384 b Fu(If)30 -b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g -Ft($)p Fu(.)150 1655 y Ft(\\)p Fj(nnn)288 b Fu(The)30 -b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) --5 b(alue)31 b Fr(nnn)p Fu(.)150 1811 y Ft(\\\\)384 b -Fu(A)30 b(bac)m(kslash.)150 1967 y Ft(\\[)384 b Fu(Begin)38 -b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 -b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 -2076 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) -150 2232 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m -(ting)g(c)m(haracters.)275 2388 y(The)25 b(command)h(n)m(um)m(b)s(er)f -(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m -(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 2497 -y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f +(name.)150 5184 y Ft(\\n)384 b Fu(A)30 b(newline.)150 +5340 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)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 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 461 y Ft(\\t)384 b Fu(The)30 b(time,)h(in)f(24-hour)h +(HH:MM:SS)g(format.)150 622 y Ft(\\T)384 b Fu(The)30 +b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)150 784 y +Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f(format.)150 +946 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM)g(format.) +150 1108 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f +(user.)150 1269 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h +(\(e.g.,)h(2.00\))150 1431 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 1593 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 1703 y Ft($PROMPT_DIRTRIM)26 +b Fu(v)-5 b(ariable\).)150 1864 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 2026 y Ft(\\!)384 +b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f(command.)150 +2188 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er)f(of)i(this)f +(command.)150 2350 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 +2511 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 2673 y Ft(\\\\)384 b Fu(A)30 b(bac)m(kslash.)150 +2835 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 2945 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e +(prompt.)150 3106 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f +(non-prin)m(ting)g(c)m(haracters.)275 3269 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 +3379 y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f (list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 -2607 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e -(History)h(F)-8 b(acilities],)45 b(page)40 b(137\),)j(while)d(the)f -(command)150 2717 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +3488 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(140\),)j(while)d(the)f +(command)150 3598 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g (the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) -f(shell)150 2826 y(session.)275 2959 y(After)35 b(the)g(string)g(is)g +f(shell)150 3708 y(session.)275 3844 y(After)35 b(the)g(string)g(is)g (deco)s(ded,)h(it)f(is)g(expanded)f(via)i(parameter)f(expansion,)i -(command)d(substi-)150 3068 y(tution,)k(arithmetic)f(expansion,)g(and)e +(command)d(substi-)150 3954 y(tution,)k(arithmetic)f(expansion,)g(and)e (quote)h(remo)m(v)-5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 -b(alue)36 b(of)g(the)g Ft(promptvars)150 3178 y Fu(shell)31 -b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(49\).) -150 3415 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 -3575 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h +b(alue)36 b(of)g(the)g Ft(promptvars)150 4064 y Fu(shell)31 +b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(50\).) +150 4308 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 +4467 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k -Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3684 y(in)m(v)m(o)s(cation,) +Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 4577 y(in)m(v)m(o)s(cation,) d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h (shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 -3794 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 +4686 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f -Ft(bash)e Fu(with)150 3903 y(the)31 b(exception)g(that)g(the)g(follo)m +Ft(bash)e Fu(with)150 4796 y(the)31 b(exception)g(that)g(the)g(follo)m (wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 -4036 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f -Ft(cd)g Fu(builtin.)225 4169 y Fq(\017)60 b Fu(Setting)31 +4933 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f +Ft(cd)g Fu(builtin.)225 5069 y Fq(\017)60 b Fu(Setting)31 b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g -Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 4301 y Fq(\017)60 +Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 5204 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 -4434 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m +5340 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m (taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f -Ft(.)h Fu(builtin)e(command.)225 4567 y Fq(\017)60 b -Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h -(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f -Ft(hash)330 4676 y Fu(builtin)e(command.)225 4809 y Fq(\017)60 +Ft(.)h Fu(builtin)e(command.)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)225 299 y Fq(\017)60 +b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g +(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f +Ft(hash)330 408 y Fu(builtin)e(command.)225 538 y Fq(\017)60 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g -(en)m(vironmen)m(t)g(at)g(startup.)225 4942 y Fq(\017)60 +(en)m(vironmen)m(t)g(at)g(startup.)225 667 y Fq(\017)60 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 -5075 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p +796 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p -Fu(')i(redirection)g(op)s(erators.)225 5207 y Fq(\017)60 +Fu(')i(redirection)g(op)s(erators.)225 925 y Fq(\017)60 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e -(shell)h(with)f(another)h(command.)225 5340 y Fq(\017)60 +(shell)h(with)f(another)h(command.)225 1054 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f -Fu(builtin.)p eop end -%%Page: 96 102 -TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(96)225 299 y Fq(\017)60 -b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g -(disabled)f(shell)g(builtins.)225 434 y Fq(\017)60 b -Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g(the)g -Ft(command)d Fu(builtin.)225 569 y Fq(\017)60 b Fu(T)-8 -b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p -Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p -Fu('.)275 729 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m(y) -g(startup)f(\014les)g(are)h(read.)275 865 y(When)j(a)i(command)e(that)i -(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h(\(see)g -(Section)g(3.8)g([Shell)150 974 y(Scripts],)25 b(page)e(40\),)j -Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h(in)f(the)g(shell) -h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 1216 -y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 1376 y Fu(Starting)39 -b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f -(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 -1485 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f -(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m -(hanging)150 1595 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g -(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h -(Bash)f(default)h(di\013ers.)275 1730 y(When)f(in)m(v)m(ok)m(ed)h(as)g -Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 1866 y(The)f(follo)m(wing)j -(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h -Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 2001 y(1.)61 b(When)28 -b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash) -f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330 -2111 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 -b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p -Fu('.)199 2246 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g -(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h(when)f(a)h(job)g(exits)h -(with)f(a)330 2355 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -2490 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) +Fu(builtin.)225 1183 y Fq(\017)60 b Fu(Using)31 b(the)f +Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g +(builtins.)225 1312 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225 +1441 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de) +f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p +Fu('.)275 1590 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m +(y)g(startup)f(\014les)g(are)h(read.)275 1719 y(When)j(a)i(command)e +(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h +(\(see)g(Section)g(3.8)g([Shell)150 1828 y(Scripts],)25 +b(page)e(41\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h +(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 +2058 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 2218 +y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j +(option)g(or)f(executing)h(`)p Ft(set)30 b(-o)g(posix)p +Fu(')37 b(while)150 2327 y(Bash)26 b(is)g(running)e(will)j(cause)f +(Bash)g(to)h(conform)f(more)g(closely)h(to)g(the)f Fm(posix)f +Fu(standard)g(b)m(y)h(c)m(hanging)150 2437 y(the)31 b(b)s(eha)m(vior)f +(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g +Fu(in)g(areas)h(where)f(the)h(Bash)f(default)h(di\013ers.)275 +2566 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g +Fm(posix)e Fu(mo)s(de)h(after)h(reading)g(the)f(startup)g(\014les.)275 +2695 y(The)f(follo)m(wing)j(list)f(is)g(what's)f(c)m(hanged)h(when)e(`) +p Fm(posix)h Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 2824 +y(1.)61 b(When)28 b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e +(longer)h(exists,)h(Bash)f(will)g(re-searc)m(h)h Ft($PATH)d +Fu(to)i(\014nd)330 2934 y(the)i(new)e(lo)s(cation.)43 +b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p +Ft(shopt)f(-s)h(checkhash)p Fu('.)199 3063 y(2.)61 b(The)42 +b(message)h(prin)m(ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e +(and)f(builtins)h(when)f(a)h(job)g(exits)h(with)f(a)330 +3172 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 +3302 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) m(trol)h(co)s(de)g(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e -(is)330 2600 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 +(is)330 3411 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h -Ft(SIGTSTP)p Fu(.)199 2735 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m +Ft(SIGTSTP)p Fu(.)199 3540 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m (a)m(ys)i(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 -2870 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +3669 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) -330 2979 y(undergo)30 b(alias)h(expansion.)199 3114 y(6.)61 +330 3779 y(undergo)30 b(alias)h(expansion.)199 3908 y(6.)61 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i (`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 3224 y(enabled,)26 +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 4018 y(enabled,)26 b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 -3333 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 3468 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) +4127 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 4256 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)199 3603 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h +f(Bash)g(\014les.)199 4385 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h (p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g -(rather)330 3713 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 3848 y(9.)61 b(The)30 b(default)g(history)h +(rather)330 4495 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h +(on)e(the)h(line.)199 4624 y(9.)61 b(The)30 b(default)g(history)h (\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) -g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3982 +g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 4753 y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f (\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) -330 4092 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 -4227 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +330 4863 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +4992 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e (w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 -4362 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +5121 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 4472 y(other)e(than)g(letters,)h +g(not)g(con)m(tain)g(c)m(haracters)330 5230 y(other)e(than)g(letters,)h (digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h -(digit.)49 b(Declaring)330 4581 y(a)31 b(function)f(with)g(an)g(in)m(v) +(digit.)49 b(Declaring)330 5340 y(a)31 b(function)f(with)g(an)g(in)m(v) -5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g -(non-in)m(teractiv)m(e)j(shells.)154 4716 y(13.)61 b(F)-8 -b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f -(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 -4851 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +(non-in)m(teractiv)m(e)j(shells.)p eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(99)154 299 y(13.)61 +b(F)-8 b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g +(one)f(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 +437 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e (b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 -4986 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +576 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f (de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s -(es)f(not)h(prin)m(t)f(the)330 5095 y Ft(function)28 -b Fu(k)m(eyw)m(ord.)154 5230 y(16.)61 b(Literal)28 b(tildes)g(that)f -(app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of) -e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 -5340 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) -i(3.5.2)h([Tilde)f(Expansion],)f(page)h(22.)p eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(97)154 299 y(17.)61 +(es)f(not)h(prin)m(t)f(the)330 685 y Ft(function)28 b +Fu(k)m(eyw)m(ord.)154 824 y(16.)61 b(Literal)28 b(tildes)g(that)f(app)s +(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of)e(the) +g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 933 +y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)i +(3.5.2)h([Tilde)f(Expansion],)f(page)h(23.)154 1072 y(17.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f (b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h -(w)m(a)m(y)-8 b(,)330 408 y(it)33 b(displa)m(ys)g(timing)g(statistics)h -(for)e(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 -b(The)32 b Ft(TIMEFORMAT)330 518 y Fu(v)-5 b(ariable)31 +(w)m(a)m(y)-8 b(,)330 1181 y(it)33 b(displa)m(ys)g(timing)g(statistics) +h(for)e(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 +b(The)32 b Ft(TIMEFORMAT)330 1291 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 -646 y(18.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p +1429 y(18.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s -(ears)f(within)f(double)h(quotes,)330 756 y(single)42 +(ears)f(within)f(double)h(quotes,)330 1539 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e -(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 865 +(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 1649 y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f (is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 -975 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h +1758 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h (ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 -1103 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +1897 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m -(en)h(b)s(egins)d(with)i(a)330 1212 y(`)p Ft(-)p Fu('.)154 -1340 y(20.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e +(en)h(b)s(egins)d(with)i(a)330 2006 y(`)p Ft(-)p Fu('.)154 +2145 y(20.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e (not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h -(double-quoted)g(string,)330 1450 y(ev)m(en)g(if)f(the)h -Ft(histexpand)d Fu(option)i(is)h(enabled.)154 1577 y(21.)61 +(double-quoted)g(string,)330 2254 y(ev)m(en)g(if)f(the)h +Ft(histexpand)d Fu(option)i(is)h(enabled.)154 2393 y(21.)61 b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h (error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 -b(The)24 b(fatal)330 1687 y(errors)30 b(are)h(those)f(listed)h(in)f +b(The)24 b(fatal)330 2502 y(errors)30 b(are)h(those)f(listed)h(in)f (the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i -(passing)e(incorrect)330 1797 y(options,)43 b(redirection)d(errors,)i +(passing)e(incorrect)330 2612 y(options,)43 b(redirection)d(errors,)i (v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i -(preceding)f(the)330 1906 y(command)30 b(name,)h(and)f(so)g(on.)154 -2034 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(preceding)f(the)330 2721 y(command)30 b(name,)h(and)f(so)g(on.)154 +2860 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e (an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g -(error)e(o)s(ccurs)330 2144 y(when)38 b(no)h(command)g(name)g(follo)m +(error)e(o)s(ccurs)330 2969 y(when)38 b(no)h(command)g(name)g(follo)m (ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39 -b(v)-5 b(ariable)40 b(assignmen)m(t)330 2253 y(error)30 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 3079 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5 -b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 2381 +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 3217 y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h (error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e -(o)s(ccurs)330 2491 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(o)s(ccurs)330 3327 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g (preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f -(other)h(simple)330 2600 y(command.)154 2728 y(24.)61 +(other)h(simple)330 3437 y(command.)154 3575 y(24.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h (status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g -Ft(for)330 2838 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +Ft(for)330 3685 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f -(readonly)h(v)-5 b(ariable.)154 2966 y(25.)61 b(Non-in)m(teractiv)m(e) +(readonly)h(v)-5 b(ariable.)154 3823 y(25.)61 b(Non-in)m(teractiv)m(e) 34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 -3093 y(26.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g +3961 y(26.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g (syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h -(an)330 3203 y(in)m(v)-5 b(alid)31 b(expression.)154 -3331 y(27.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f -(parameter)h(expansion)g(error)f(o)s(ccurs.)154 3459 +(an)330 4071 y(in)m(v)-5 b(alid)31 b(expression.)154 +4209 y(27.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f +(parameter)h(expansion)g(error)f(o)s(ccurs.)154 4348 y(28.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f (a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f -Ft(.)g Fu(or)h Ft(source)330 3568 y Fu(builtins,)30 b(or)g(in)g(a)h +Ft(.)g Fu(or)h Ft(source)330 4457 y Fu(builtins,)30 b(or)g(in)g(a)h (string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 -3696 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 -b(ailable.)154 3824 y(30.)61 b(While)32 b(v)-5 b(ariable)32 +4596 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 +b(ailable.)154 4734 y(30.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s (e)g(applied)g(to)g(the)h(`)p Ft(#)p Fu(')f(and)f(`)p -Ft(?)p Fu(')h(sp)s(ecial)330 3934 y(parameters.)154 4061 +Ft(?)p Fu(')h(sp)s(ecial)330 4844 y(parameters.)154 4982 y(31.)61 b(When)28 b(expanding)g(the)g(`)p Ft(*)p Fu(')g(sp)s(ecial)h (parameter)f(in)g(a)h(pattern)f(con)m(text)i(where)e(the)g(expansion)g -(is)330 4171 y(double-quoted)i(do)s(es)g(not)h(treat)h(the)e +(is)330 5092 y(double-quoted)i(do)s(es)g(not)h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 -4299 y(32.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e +5230 y(32.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f -(en)m(vironmen)m(t)330 4408 y(after)31 b(the)f(builtin)g(completes.)154 -4536 y(33.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f -(function)g(calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t) -330 4646 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h -Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 4774 y(34.)61 b(The)31 b Ft(command)e -Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) -h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 4883 y(gumen)m(ts)40 -b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 -b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 4993 -y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m -(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 5103 -y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 5230 y(35.)61 -b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g -(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 -5340 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f -(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)p +(en)m(vironmen)m(t)330 5340 y(after)31 b(the)f(builtin)g(completes.)p eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(98)154 299 y(36.)61 -b(The)23 b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 -b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h(single)g(line,)h -(separated)e(b)m(y)g(spaces,)330 408 y(without)30 b(the)h(`)p -Ft(SIG)p Fu(')f(pre\014x.)154 542 y(37.)61 b(The)30 b -Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)h(signal)f(names)f(with)g -(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 676 y(38.)61 b(The)38 -b Ft(export)f Fu(and)g Ft(readonly)f Fu(builtin)i(commands)g(displa)m -(y)h(their)f(output)g(in)g(the)h(format)g(re-)330 786 -y(quired)30 b(b)m(y)g Fm(posix)p Fu(.)154 920 y(39.)61 -b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g(signal)i(names)e -(without)g(the)h(leading)g Ft(SIG)p Fu(.)154 1054 y(40.)61 -b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g -(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s -(eci\014cation)330 1163 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling) -e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that) -h(argumen)m(t)330 1273 y(consists)e(solely)g(of)g(digits)g(and)f(is)g -(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 -b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 -1383 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +%%Page: 100 106 +TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(100)154 299 y(33.)61 +b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f(function)g +(calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t)330 +408 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g +(executed.)154 536 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s +(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f +(statemen)m(ts)h(as)f(ar-)330 646 y(gumen)m(ts)40 b(from)e(expanding)h +(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 b(when)38 +b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 756 y(assignmen)m(t)k(builtins) +e(lose)h(their)g(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s +(erties)g(when)g(pre-)330 865 y(ceded)31 b(b)m(y)f Ft(command)p +Fu(.)154 993 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h +(required)f(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f +(the)h(bac)m(kground,)330 1103 y(whic)m(h)h(do)s(es)g(not)g(include)g +(an)g(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e +(or)h(previous)g(job.)154 1230 y(36.)61 b(The)23 b(output)f(of)i(`)p +Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g +(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 +1340 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +1468 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +1596 y(38.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h +(format)g(re-)330 1705 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 1833 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p +Fu(.)154 1961 y(40.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g +(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e +(signal)i(sp)s(eci\014cation)330 2071 y(and)30 b(rev)m(ert)i(the)e +(signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g +(is,)g(unless)f(that)h(argumen)m(t)330 2180 y(consists)e(solely)g(of)g +(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 +b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 +2290 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s (osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) -f(argumen)m(t.)154 1517 y(41.)61 b(The)21 b Ft(.)h Fu(and)f +f(argumen)m(t.)154 2418 y(41.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f (directory)h(for)g(the)g(\014lename)f(argumen)m(t)330 -1626 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Ft(PATH)p Fu(.)154 1760 y(42.)61 b(Enabling)21 b Fm(posix)g +2527 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g +Ft(PATH)p Fu(.)154 2655 y(42.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g(the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d Fu(option,)23 b(so)f(subshells)330 -1870 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h +2765 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h (inherit)f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f -Fu(option)h(from)g(the)330 1979 y(paren)m(t)37 b(shell.)62 +Fu(option)h(from)g(the)330 2874 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c Fu(option)38 b(is)f(not)h -(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 2089 y Fu(option)31 -b(in)f(suc)m(h)g(subshells.)154 2223 y(43.)61 b(When)43 +(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 2984 y Fu(option)31 +b(in)f(suc)m(h)g(subshells.)154 3112 y(43.)61 b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i (it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 -2332 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g -Ft(-p)g Fu(option)h(is)f(supplied.)154 2466 y(44.)61 +3221 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g +Ft(-p)g Fu(option)h(is)f(supplied.)154 3349 y(44.)61 b(When)40 b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h (without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 2576 y(names)30 b(and)g(de\014nitions.)154 -2710 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) +(function)330 3459 y(names)30 b(and)g(de\014nitions.)154 +3587 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 2819 y(quotes,)26 b(unless)d(they)i +b(v)-5 b(alues)37 b(without)330 3696 y(quotes,)26 b(unless)d(they)i (con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result) -g(con)m(tains)i(nonprin)m(ting)330 2929 y(c)m(haracters.)154 -3063 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m +g(con)m(tains)i(nonprin)m(ting)330 3806 y(c)m(haracters.)154 +3934 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m (ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 3173 y Ft($PWD)i Fu(and)h(the)h(directory)f +(constructed)g(from)330 4043 y Ft($PWD)i Fu(and)h(the)h(directory)f (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 3282 y(directory)-8 b(,)32 b Ft(cd)d +(an)f(existing)330 4153 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fr(ph)m(ysical)j Fu(mo)s(de.)154 3416 y(47.)61 b(The)36 +Fr(ph)m(ysical)j Fu(mo)s(de.)154 4281 y(47.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f -(directory)-8 b(,)330 3526 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(directory)-8 b(,)330 4390 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m (ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h -Ft(-P)e Fu(option.)154 3660 y(48.)61 b(When)35 b(listing)g(the)g +Ft(-P)e Fu(option.)154 4518 y(48.)61 b(When)35 b(listing)g(the)g (history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 3769 +(include)g(an)f(indication)i(of)f(whether)f(or)330 4628 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -3903 y(49.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g -Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4037 y(50.)61 b(The)37 +4756 y(49.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g +Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4883 y(50.)61 b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort) f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -4147 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +4993 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g (execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named) -g(\014le)330 4256 y(found)i(in)h Ft($PATH)p Fu(.)154 -4390 y(51.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +g(\014le)330 5103 y(found)i(in)h Ft($PATH)p Fu(.)154 +5230 y(51.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p -Ft(v)p Fu(')f(command)g(is)g(run,)330 4500 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4634 -y(52.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j -(Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -4743 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +Ft(v)p Fu(')f(command)g(is)g(run,)330 5340 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)p eop +end +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2439 b(101)154 299 y(52.)61 +b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j(Bash)d(do)s +(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 +408 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 4853 y(con)m(v)m(erted.)154 -4987 y(53.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 518 y(con)m(v)m(erted.)154 +653 y(53.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f -Fu(and)g Ft(-f)f Fu(options.)154 5121 y(54.)61 b(The)39 +Fu(and)g Ft(-f)f Fu(options.)154 787 y(54.)61 b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h (on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g -Ft(wait)330 5230 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Ft(wait)330 897 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 5340 y(c)m(hild)31 b(that)g(exits.)p -eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(99)154 299 y(55.)61 -b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m(terrupted)h(b)m -(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s(een)f(set.)40 -b(If)27 b(Bash)330 408 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i -(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i -(and)f Ft(read)330 518 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i -(than)e(128.)154 653 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i -(bac)m(kground)e(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m -(h)f(statuses)h(after)330 762 y(the)k Ft(wait)e Fu(builtin)h(is)g(used) -g(to)h(obtain)g(it.)275 922 y(There)j(is)g(other)h Fm(posix)f -Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y) -g(default)f(ev)m(en)i(when)d(in)150 1031 y Fm(posix)d -Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 1166 y(1.)61 -b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c -Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h(if)f -Ft(FCEDIT)f Fu(is)h(unset,)330 1275 y(rather)g(than)g(defaulting)h -(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g -Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 1410 y(2.)61 -b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g -Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Ft(echo)f Fu(builtin)330 1519 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 -1679 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g -Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s -(ecifying)g(the)g Ft(--enable-)150 1788 y(strict-posix-default)c -Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g -([Optional)g(F)-8 b(eatures],)150 1898 y(page)31 b(144\).)p -eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 3614 -116 a Fu(100)150 299 +(for)f(eac)m(h)330 1006 y(c)m(hild)31 b(that)g(exits.)154 +1141 y(55.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s +(een)f(set.)40 b(If)27 b(Bash)330 1250 y(receiv)m(es)41 +b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p +Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 +1360 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 +1494 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e +(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h +(after)330 1604 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) +g(it.)275 1763 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h +(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m +(en)i(when)d(in)150 1873 y Fm(posix)d Fu(mo)s(de.)40 +b(Sp)s(eci\014cally:)199 2007 y(1.)61 b(The)30 b Ft(fc)f +Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h +(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 +2117 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p +Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f +Fu(is)h(unset.)199 2252 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i +(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e +(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 2361 +y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2521 y(Bash)c(can)g(b)s(e)f +(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g +(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150 +2630 y(strict-posix-default)c Fu(to)27 b Ft(configure)e +Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8 +b(eatures],)150 2740 y(page)31 b(148\).)p eop end +%%Page: 102 108 +TeXDict begin 102 107 bop 3614 -116 a Fu(102)150 299 y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it) h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access) @@ -15385,9 +15575,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys) i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150 5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(101)275 299 y(A)38 b(job)g(ma)m(y)h(also)g +%%Page: 103 109 +TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(103)275 299 y(A)38 b(job)g(ma)m(y)h(also)g (b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used) e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)29 b(that)i(app)s(ears)f(in)g(its)h(command)f(line.)41 b(F)-8 @@ -15397,188 +15587,201 @@ Fu(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m (taining)h(the)f(string)f(`)p Ft(ce)p Fu(')h(in)f(its)h(command)150 628 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 -761 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +767 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31 -b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Ft(fg)g(\0451)p +b(is)g(a)h(synon)m(ym)e(for)150 876 y(`)p Ft(fg)g(\0451)p Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p -Fu(')i(resumes)150 980 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 -b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1114 +Fu(')i(resumes)150 986 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 +b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1125 y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m (hanges)h(state.)45 b(Normally)-8 b(,)33 b(Bash)e(w)m(aits)i(un)m(til) -150 1223 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s +150 1234 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s (efore)g(rep)s(orting)h(c)m(hanges)g(in)g(a)g(job's)f(status)h(so)g(as) -g(to)g(not)g(in)m(terrupt)150 1333 y(an)m(y)k(other)f(output.)40 +g(to)g(not)g(in)m(terrupt)150 1344 y(an)m(y)k(other)f(output.)40 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) -150 1443 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(60\).)40 b(An)m(y)24 b(trap)f(on)h -Ft(SIGCHLD)e Fu(is)i(executed)150 1552 y(for)30 b(eac)m(h)i(c)m(hild)e -(pro)s(cess)g(that)h(exits.)275 1686 y(If)25 b(an)h(attempt)h(to)g +150 1453 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)i(page)f(61\).)40 b(An)m(y)24 b(trap)f(on)h +Ft(SIGCHLD)e Fu(is)i(executed)150 1563 y(for)30 b(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1702 y(If)25 b(an)h(attempt)h(to)g (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h -(running,)e(if)h(the)g Ft(checkjobs)150 1795 y Fu(option)e(is)f +(running,)e(if)h(the)g Ft(checkjobs)150 1812 y Fu(option)e(is)f (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(64\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 -1905 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f +e(65\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 +1921 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Ft(jobs)150 2014 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f +b(The)25 b Ft(jobs)150 2031 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f (used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 -b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2124 +b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2140 y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h (prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150 -2234 y(jobs)c(are)h(terminated.)150 2472 y Fs(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2656 y Ft(bg)870 -2789 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2923 y Fu(Resume)24 -b(eac)m(h)h(susp)s(ended)d(job)i Fr(jobsp)s(ec)29 b Fu(in)24 -b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g(started)630 -3032 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 -b Fu(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45 -b(The)31 b(return)g(status)630 3142 y(is)i(zero)g(unless)f(it)h(is)g -(run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f -(run)f(with)h(job)630 3252 y(con)m(trol)h(enabled,)g(an)m(y)f -Fr(jobsp)s(ec)37 b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h -(a)g(job)g(that)g(w)m(as)g(started)630 3361 y(without)e(job)g(con)m -(trol.)150 3519 y Ft(fg)870 3652 y(fg)47 b([)p Fj(jobspec)p -Ft(])630 3786 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 -b Fu(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f -(job.)78 b(If)630 3895 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h -(the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h -(is)h(that)g(of)630 4005 y(the)d(command)g(placed)h(in)m(to)g(the)f +2250 y(jobs)c(are)h(terminated.)275 2389 y(When)f(the)h(shell)g(is)f(w) +m(aiting)i(for)f(a)g(job)f(or)h(pro)s(cess)f(using)g(the)h +Ft(wait)f Fu(builtin,)g(and)g(job)h(con)m(trol)h(is)150 +2498 y(enabled,)27 b Ft(wait)f Fu(will)g(return)g(when)f(the)h(job)g(c) +m(hanges)i(state.)41 b(The)25 b Ft(-f)h Fu(option)h(will)g(force)g +Ft(wait)e Fu(to)i(w)m(ait)150 2608 y(un)m(til)k(the)f(job)g(or)h(pro)s +(cess)f(terminates)h(b)s(efore)f(returning.)150 2855 +y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3042 +y Ft(bg)870 3179 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 +3315 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i +Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h +(had)e(b)s(een)g(started)630 3425 y(with)32 b(`)p Ft(&)p +Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the) +h(curren)m(t)g(job)f(is)h(used.)45 b(The)31 b(return)g(status)630 +3535 y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i +(is)f(not)g(enabled,)h(or,)f(when)f(run)f(with)h(job)630 +3644 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37 +b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g +(w)m(as)g(started)630 3754 y(without)e(job)g(con)m(trol.)150 +3918 y Ft(fg)870 4054 y(fg)47 b([)p Fj(jobspec)p Ft(])630 +4191 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43 +b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f(job.)78 +b(If)630 4301 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f +(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h(is)h +(that)g(of)630 4410 y(the)d(command)g(placed)h(in)m(to)g(the)f (foreground,)g(or)g(non-zero)h(if)f(run)f(when)g(job)g(con)m(trol)630 -4114 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h +4520 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h (enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4224 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b +4629 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f -(job)g(con)m(trol.)150 4381 y Ft(jobs)870 4515 y(jobs)47 -b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4625 y(jobs)i(-x)g -Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4758 y Fu(The)30 +(job)g(con)m(trol.)150 4793 y Ft(jobs)870 4930 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5039 y(jobs)i(-x)g +Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5176 y Fu(The)30 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -4916 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p -Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -5073 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e -(jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110 -5183 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f -(status.)630 5340 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f -Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p +5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p +Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(102)630 299 y Ft(-r)384 -b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y -Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 -622 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g +%%Page: 104 110 +TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(104)630 299 y Ft(-n)384 +b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m +(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31 +b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630 +570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f +Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630 +732 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 +894 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 +1056 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g (restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37 -b(If)23 b Fr(jobsp)s(ec)630 732 y Fu(is)30 b(not)h(supplied,)e(the)i -(status)g(of)f(all)h(jobs)f(is)h(listed.)630 868 y(If)k(the)g +b(If)23 b Fr(jobsp)s(ec)630 1165 y Fu(is)30 b(not)h(supplied,)e(the)i +(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1301 y(If)k(the)g Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630 -977 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)h -(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p -Fu(,)630 1087 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f -(its)g(exit)i(status.)150 1249 y Ft(kill)870 1384 y(kill)47 +1410 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess) +h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p +Fu(,)630 1520 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f +(its)g(exit)i(status.)150 1682 y Ft(kill)870 1817 y(kill)47 b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p -Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1494 -y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 1630 +Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1927 +y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2063 y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f -(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1739 y(cation)k +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2172 y(cation)k Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m -(e)i(signal)e(name)630 1849 y(suc)m(h)37 b(as)g Ft(SIGINT)f +(e)i(signal)e(name)630 2282 y(suc)m(h)37 b(as)g Ft(SIGINT)f Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h -(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 1958 y +(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2392 y Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44 b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h -Ft(SIGTERM)d Fu(is)h(used.)630 2068 y(The)27 b Ft(-l)h +Ft(SIGTERM)d Fu(is)h(used.)630 2501 y(The)27 b Ft(-l)h Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28 b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g -Fu(is)630 2178 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g +Fu(is)630 2611 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g (corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630 -2287 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p -1796 2287 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s -(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2397 +2720 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p +1796 2720 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s +(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2830 y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h (signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5 -b(alen)m(t)630 2506 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 +b(alen)m(t)630 2939 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m -(as)f(successfully)g(sen)m(t,)h(or)630 2616 y(non-zero)d(if)f(an)h +(as)f(successfully)g(sen)m(t,)h(or)630 3049 y(non-zero)d(if)f(an)h (error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(encoun)m(tered.)150 2778 y Ft(wait)870 2913 y(wait)47 -b([-n])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630 -3049 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s +(encoun)m(tered.)150 3211 y Ft(wait)870 3346 y(wait)47 +b([-fn])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630 +3482 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s (eci\014ed)g(b)m(y)g(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i -Fu(or)d(job)g(sp)s(eci\014cation)630 3159 y Fr(jobsp)s(ec)j +Fu(or)d(job)g(sp)s(eci\014cation)630 3592 y Fr(jobsp)s(ec)j Fu(exits)c(and)f(return)g(the)g(exit)h(status)g(of)g(the)f(last)h (command)g(w)m(aited)g(for.)39 b(If)23 b(a)i(job)630 -3268 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g +3701 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g (are)h(w)m(aited)g(for.)40 b(If)27 b(no)i(argumen)m(ts)f(are)h(giv)m -(en,)630 3378 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s +(en,)630 3811 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s (cesses)f(are)h(w)m(aited)g(for,)g(and)f(the)h(return)e(status)i(is)g -(zero.)630 3487 y(If)f(the)g Ft(-n)g Fu(option)h(is)f(supplied,)g -Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)h(job)f(to)h(terminate)g(and)f -(returns)f(its)630 3597 y(exit)37 b(status.)56 b(If)36 -b(neither)f Fr(jobsp)s(ec)41 b Fu(nor)35 b Fr(pid)j Fu(sp)s(eci\014es)d -(an)h(activ)m(e)i(c)m(hild)e(pro)s(cess)f(of)h(the)630 -3707 y(shell,)31 b(the)f(return)g(status)g(is)h(127.)150 -3868 y Ft(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p -Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4140 +(zero.)630 3921 y(If)36 b(the)g Ft(-n)f Fu(option)i(is)f(supplied,)g +Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)g(job)g(to)h(terminate)g(and)e +(returns)630 4030 y(its)i(exit)g(status.)60 b(If)36 b(the)g +Ft(-f)g Fu(option)h(is)g(supplied,)f(and)g(job)g(con)m(trol)i(is)f +(enabled,)h Ft(wait)630 4140 y Fu(forces)g(eac)m(h)h +Fr(pid)i Fu(or)d Fr(jobsp)s(ec)43 b Fu(to)38 b(terminate)h(b)s(efore)e +(returning)g(its)i(status,)h(in)m(tead)f(of)630 4249 +y(returning)29 b(when)f(it)i(c)m(hanges)h(status.)41 +b(If)29 b(neither)g Fr(jobsp)s(ec)35 b Fu(nor)29 b Fr(pid)j +Fu(sp)s(eci\014es)d(an)h(activ)m(e)630 4359 y(c)m(hild)h(pro)s(cess)f +(of)g(the)h(shell,)g(the)f(return)f(status)i(is)f(127.)150 +4521 y Ft(disown)870 4656 y(disown)46 b([-ar])g([-h])h([)p +Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4792 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47 -b(If)32 b(the)h Ft(-h)630 4249 y Fu(option)j(is)f(giv)m(en,)i(the)f +b(If)32 b(the)h Ft(-h)630 4902 y Fu(option)j(is)f(giv)m(en,)i(the)f (job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i -(mark)m(ed)f(so)g(that)630 4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h +(mark)m(ed)f(so)g(that)630 5011 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h (to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 -4468 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f +5121 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g -(job)f(is)630 4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k +(job)f(is)630 5230 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m -(e)h(or)e(mark)h(all)g(jobs;)630 4688 y(the)31 b Ft(-r)e +(e)h(or)e(mark)h(all)g(jobs;)630 5340 y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 -b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150 -4849 y Ft(suspend)870 4985 y(suspend)46 b([-f])630 5121 -y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h -(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33 -b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g -Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h(this)e -(and)g(force)630 5340 y(the)k(susp)s(ension.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(103)275 299 y(When)30 b(job)f(con)m(trol)j -(is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f +b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)p eop +end +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(105)150 299 y Ft(suspend)870 +433 y(suspend)46 b([-f])630 568 y Fu(Susp)s(end)31 b(the)i(execution)h +(of)g(this)f(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e +Ft(SIGCONT)f Fu(signal.)50 b(A)33 b(login)630 677 y(shell)28 +b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s +(e)f(used)g(to)h(o)m(v)m(erride)h(this)e(and)g(force)630 +787 y(the)k(susp)s(ension.)275 946 y(When)f(job)f(con)m(trol)j(is)e +(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150 -408 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess) -h Fm(id)p Fu(s.)150 649 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 -b(ariables)150 834 y Ft(auto_resume)630 943 y Fu(This)31 +1056 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s +(cess)h Fm(id)p Fu(s.)150 1297 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V) +-11 b(ariables)150 1481 y Ft(auto_resume)630 1591 y Fu(This)31 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m (teracts)h(with)e(the)h(user)e(and)h(job)g(con)m(trol.)45 -b(If)630 1053 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h +b(If)630 1700 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h (w)m(ord)f(simple)h(commands)f(without)g(redirections)i(are)630 -1162 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g +1810 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g (existing)h(job.)41 b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 -1272 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s +1919 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s (eginning)f(with)g(the)h(string)g(t)m(yp)s(ed,)g(then)g(the)630 -1381 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) +2029 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) 42 b(The)29 b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 -1491 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g +2139 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g (it.)41 b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5 -b(alue)630 1601 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +b(alue)630 2248 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h -(exactly;)j(if)630 1710 y(set)29 b(to)h(`)p Ft(substring)p +(exactly;)j(if)630 2358 y(set)29 b(to)h(`)p Ft(substring)p Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f -(substring)f(of)h(the)g(name)630 1820 y(of)38 b(a)f(stopp)s(ed)g(job.) +(substring)f(of)h(the)g(name)630 2467 y(of)38 b(a)f(stopp)s(ed)g(job.) 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -1929 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g -(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(100\).)56 -b(If)34 b(set)i(to)g(an)m(y)630 2039 y(other)c(v)-5 b(alue,)32 +2577 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g +(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(102\).)56 +b(If)34 b(set)i(to)g(an)m(y)630 2687 y(other)c(v)-5 b(alue,)32 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g -(stopp)s(ed)e(job's)i(name;)g(this)630 2149 y(pro)m(vides)e +(stopp)s(ed)e(job's)i(name;)g(this)630 2796 y(pro)m(vides)e (functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p Fu(')f(job)g Fm(id)p Fu(.)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 3614 -116 a Fu(104)150 299 +%%Page: 106 112 +TeXDict begin 106 111 bop 3614 -116 a Fu(106)150 299 y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 @@ -15591,7 +15794,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g (shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150 1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h -(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(49\).)52 +(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(50\).)52 b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f (to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g (in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34 @@ -15599,7 +15802,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150 1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g (\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g -(60\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g +(61\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150 1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h @@ -15638,7 +15841,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i -(page)e(107\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g +(page)e(109\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s (duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h @@ -15662,9 +15865,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340 y(within)c(the)g(line.)p eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)150 299 y Fk(8.2.1)63 +%%Page: 107 113 +TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(107)150 299 y Fk(8.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31 b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g (simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i @@ -15731,9 +15934,9 @@ b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 5340 y(w)m(ords.)p eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(106)150 299 y Fk(8.2.3)63 +%%Page: 108 114 +TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(108)150 299 y Fk(8.2.3)63 b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35 b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i (but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f @@ -15807,13 +16010,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i (command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h -(F)-8 b(acilities],)42 b(page)37 b(137\))i(for)d(lines)h(con)m(taining) +(F)-8 b(acilities],)42 b(page)37 b(140\))i(for)d(lines)h(con)m(taining) i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150 5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35 b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(107)275 299 y(Incremen)m(tal)26 +%%Page: 109 115 +TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(109)275 299 y(Incremen)m(tal)26 b(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150 408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s @@ -15889,7 +16092,7 @@ b(lines)h(are)150 4515 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 4625 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g -([Conditional)g(Init)e(Constructs],)j(page)e(115\).)64 +([Conditional)g(Init)e(Constructs],)j(page)e(117\).)64 b(Other)150 4735 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 4882 y(V)-8 b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e @@ -15898,9 +16101,9 @@ b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h (init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5211 y(is)d(simple:)870 5340 y Ft(set)47 b Fj(variable)e(value)p eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y(Here,)29 +%%Page: 110 116 +TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(110)630 299 y(Here,)29 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default) h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 408 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 541 y Ft(set)47 @@ -15917,7 +16120,7 @@ b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) 1268 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 b(alues.)630 1377 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) -g(49.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g +g(50.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g (is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630 1666 y Ft(bell-style)1110 1775 y Fu(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h @@ -15966,9 +16169,9 @@ b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 5340 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e (line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)p eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Ft +%%Page: 111 117 +TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Ft (completion-ignore-case)1110 408 y Fu(If)27 b(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i (and)e(completion)1110 518 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 @@ -16028,86 +16231,87 @@ b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) 1110 4641 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 4751 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p -Ft(vi)p Fu('.)630 4902 y Ft(emacs-mode-string)1110 5011 -y Fu(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e -(the)h(last)g(line)h(of)e(the)h(pri-)1110 5121 y(mary)43 -b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82 -b(The)43 b(v)-5 b(alue)44 b(is)1110 5230 y(expanded)28 -b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g -(meta-)g(and)f(con-)1110 5340 y(trol)36 b(pre\014xes)e(and)h(bac)m -(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58 -b(Use)36 b(the)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(110)1110 299 y(`)p -Ft(\\1)p Fu(')38 b(and)f(`)p Ft(\\2)p Fu(')h(escap)s(es)g(to)h(b)s -(egin)e(and)h(end)f(sequences)h(of)g(non-prin)m(ting)1110 -408 y(c)m(haracters,)27 b(whic)m(h)c(can)h(b)s(e)f(used)f(to)j(em)m(b)s -(ed)e(a)h(terminal)g(con)m(trol)h(sequence)1110 518 y(in)m(to)31 -b(the)g(mo)s(de)f(string.)41 b(The)29 b(default)i(is)f(`)p -Ft(@)p Fu('.)630 682 y Ft(enable-bracketed-paste)1110 -792 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g +Ft(vi)p Fu('.)630 4902 y Ft(emacs-mode-string)1110 5011 +y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 +5121 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 5230 y(emacs)g(editing)h(mo)s +(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f +(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 5340 y(ing,)27 b(so)f(the)f +(standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h +(bac)m(kslash)p eop end +%%Page: 112 118 +TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(112)1110 299 y(escap)s(e)24 +b(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p +Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p Fu(')g(escap)s(es)g(to)g(b)s(egin) +1110 408 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m +(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)1110 518 +y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f(in)m(to)g +(the)f(mo)s(de)g(string.)61 b(The)1110 628 y(default)31 +b(is)f(`)p Ft(@)p Fu('.)630 778 y Ft(enable-bracketed-paste)1110 +888 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g (con\014gure)f(the)h(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 -902 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g -(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1011 +998 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g +(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1107 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g(treating)h(eac)m(h)g -(c)m(haracter)g(as)f(if)f(it)i(had)1110 1121 y(b)s(een)e(read)i(from)e +(c)m(haracter)g(as)f(if)f(it)i(had)1110 1217 y(b)s(een)e(read)i(from)e (the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c) -m(haracters)1110 1230 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f +m(haracters)1110 1326 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f (editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p -Ft(off)p Fu('.)630 1395 y Ft(enable-keypad)1110 1504 +Ft(off)p Fu('.)630 1477 y Ft(enable-keypad)1110 1587 y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(try)f -(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1614 +(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1696 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f(to)h -(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1724 y(The)j(default)g(is)h(`) -p Ft(off)p Fu('.)630 1888 y Ft(enable-meta-key)1110 1998 +(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1806 y(The)j(default)g(is)h(`) +p Ft(off)p Fu('.)630 1956 y Ft(enable-meta-key)1110 2066 y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g(try)g -(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2107 +(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2176 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h(is)g -(called.)76 b(On)41 b(man)m(y)1110 2217 y(terminals,)c(the)e(meta)h(k)m +(called.)76 b(On)41 b(man)m(y)1110 2285 y(terminals,)c(the)e(meta)h(k)m (ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 -b(The)1110 2326 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 -2491 y Ft(expand-tilde)1110 2600 y Fu(If)d(set)h(to)h(`)p +b(The)1110 2395 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 +2545 y Ft(expand-tilde)1110 2655 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h -(Readline)h(attempts)1110 2710 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2874 -y Ft(history-preserve-point)1110 2984 y Fu(If)41 b(set)h(to)h(`)p +(Readline)h(attempts)1110 2765 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2915 +y Ft(history-preserve-point)1110 3025 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f -(p)s(oin)m(t)f(\(the)1110 3093 y(curren)m(t)35 b(cursor)g(p)s +(p)s(oin)m(t)f(\(the)1110 3134 y(curren)m(t)35 b(cursor)g(p)s (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g -(line)1110 3203 y(retriev)m(ed)h(with)f Ft(previous-history)c +(line)1110 3244 y(retriev)m(ed)h(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 -3313 y(is)30 b(`)p Ft(off)p Fu('.)630 3477 y Ft(history-size)1110 -3587 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g -(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3696 +3354 y(is)30 b(`)p Ft(off)p Fu('.)630 3504 y Ft(history-size)1110 +3614 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3724 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f -(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3806 y(new)e(en)m(tries)i +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3833 y(new)e(en)m(tries)i (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 -3915 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +3943 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 -4025 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) -f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4134 +4052 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4162 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m -(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4244 -y(b)s(e)c(set)h(to)g(500.)630 4408 y Ft(horizontal-scroll-mode)1110 -4518 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4271 +y(b)s(e)c(set)h(to)g(500.)630 4422 y Ft(horizontal-scroll-mode)1110 +4532 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f (`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 -b(it)g(to)h(`)p Ft(on)p Fu(')1110 4628 y(means)26 b(that)h(the)f(text)h +b(it)g(to)h(`)p Ft(on)p Fu(')1110 4641 y(means)26 b(that)h(the)f(text)h (of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m -(tally)1110 4737 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i -(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4847 +(tally)1110 4751 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4861 y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g -(line.)39 b(By)27 b(default,)g(this)1110 4956 y(v)-5 +(line.)39 b(By)27 b(default,)g(this)1110 4970 y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 5121 y Ft(input-meta)1110 5230 y Fu(If)f(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) i(will)f(not)h(clear)1110 5340 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h (c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)p eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(111)1110 299 y(terminal)44 +%%Page: 113 119 +TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(terminal)44 b(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 408 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con) @@ -16117,7 +16321,7 @@ b(ariable.)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(106\).)62 +1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(108\).)62 b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1113 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 @@ -16181,9 +16385,9 @@ y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f 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: 112 118 -TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(112)1110 299 y(the)34 +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(114)1110 299 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110 408 y(default.)630 555 y Ft(menu-complete-display-pr)o(efix)1110 @@ -16235,239 +16439,286 @@ f(completions)h(don't)f(share)g(a)h(common)1110 4281 y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g (immediately)i(instead)e(of)h(ring-)1110 4390 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p -Fu('.)630 4536 y Ft(show-mode-in-prompt)1110 4646 y Fu(If)g(set)g(to)h -(`)p Ft(on)p Fu(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g -(of)g(the)g(prompt)f(indi-)1110 4756 y(cating)j(the)g(editing)f(mo)s -(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43 -b(The)1110 4865 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p -Fu('.)630 5011 y Ft(skip-completed-text)1110 5121 y Fu(If)h(set)i(to)f -(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s -(eha)m(vior)f(when)f(in-)1110 5230 y(serting)d(a)h(single)g(matc)m(h)f -(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s -(erform-)1110 5340 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f -(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)p -eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(not)41 +Fu('.)630 4536 y Ft(show-mode-in-prompt)1110 4646 y Fu(If)24 +b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s +(eginning)g(of)g(the)h(prompt)e(indicating)1110 4756 +y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi) +h(insertion.)49 b(The)32 b(mo)s(de)1110 4865 y(strings)45 +b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 +b Fu(\).)87 b(The)45 b(default)1110 4975 y(v)-5 b(alue)31 +b(is)f(`)p Ft(off)p Fu('.)630 5121 y Ft(skip-completed-text)1110 +5230 y Fu(If)i(set)i(to)f(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g +(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 +5340 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40 +b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)p eop +end +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(115)1110 299 y(ing)35 +b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53 +b(If)35 b(enabled,)g(readline)g(do)s(es)1110 408 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g -(c)m(haracters)1110 408 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b) +(c)m(haracters)1110 518 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b) s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 -518 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 +628 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 -628 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 737 y(`)p Ft(Makefile)p +737 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 847 y(`)p Ft(Makefile)p Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) -p Ft(Makefilefile)p Fu(',)1110 847 y(assuming)d(there)g(is)h(a)f +p Ft(Makefilefile)p Fu(',)1110 956 y(assuming)d(there)g(is)h(a)f (single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 -b(alue)1110 956 y(is)30 b(`)p Ft(off)p Fu('.)630 1117 -y Ft(vi-cmd-mode-string)1110 1226 y Fu(This)f(string)h(is)f(displa)m(y) -m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-) -1110 1336 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g -(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 1445 -y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g -(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1555 -y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h -(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1665 -y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p -Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i -(of)1110 1774 y(non-prin)m(ting)40 b(c)m(haracters,)45 -b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) -1110 1884 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g -(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(cmd\))p -Fu('.)630 2044 y Ft(vi-ins-mode-string)1110 2153 y Fu(This)f(string)h -(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h -(of)e(the)h(pri-)1110 2263 y(mary)25 b(prompt)f(when)g(vi)h(editing)h -(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110 -2373 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g -(binding,)g(so)g(the)f(standard)g(set)h(of)1110 2482 -y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h -(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 2592 -y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p -Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i -(of)1110 2701 y(non-prin)m(ting)40 b(c)m(haracters,)45 -b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) -1110 2811 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g -(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(ins\))p -Fu('.)630 2971 y Ft(visible-stats)1110 3081 y Fu(If)h(set)i(to)f(`)p -Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 3190 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)150 3351 y(Key)f(Bindings)630 3460 y(The)41 -b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g -(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 -3570 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i -(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 -3679 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j -(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630 -3789 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 3924 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g -(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630 -4033 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h -(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630 -4143 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +b(alue)1110 1066 y(is)30 b(`)p Ft(off)p Fu('.)630 1215 +y Ft(vi-cmd-mode-string)1110 1325 y Fu(If)j(the)h Fr(sho)m(w-mo)s +(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f +(is)h(dis-)1110 1435 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110 +1544 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) +g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110 +1654 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f +(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110 +1763 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) +g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p +Fu(')1110 1873 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s +(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 +1983 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a) +h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2092 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(cmd\))p Fu('.)630 2242 y Ft(vi-ins-mode-string)1110 +2351 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110 +2461 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f +(of)h(the)f(primary)f(prompt)g(when)1110 2570 y(vi)35 +b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.) +54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 2680 y(panded)26 +b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g +(meta-)h(and)e(con)m(trol)1110 2790 y(pre\014xes)34 b(and)g(bac)m +(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57 +b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 2899 y(and)23 +b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g +(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3009 +y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h +(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3118 +y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p +Ft(\(ins\))p Fu('.)630 3268 y Ft(visible-stats)1110 3377 +y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e +(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110 +3487 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 3636 +y(Key)f(Bindings)630 3746 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75 +b(First)43 b(y)m(ou)630 3856 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) +h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 +b(The)27 b(follo)m(wing)630 3965 y(sections)37 b(con)m(tain)g(tables)g +(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an) +m(y)-8 b(,)630 4075 y(and)30 b(a)h(short)f(description)g(of)h(what)f +(the)g(command)h(do)s(es.)630 4204 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g +(the)g(init)630 4314 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then) +630 4423 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g -(and)630 4253 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m +(and)630 4533 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m (terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 -b(The)40 b(name)h(of)630 4362 y(the)35 b(k)m(ey)g(can)g(b)s(e)f +b(The)40 b(name)h(of)630 4643 y(the)35 b(k)m(ey)g(can)g(b)s(e)f (expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h -(what)h(y)m(ou)g(\014nd)e(most)630 4472 y(comfortable.)630 -4607 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h +(what)h(y)m(ou)g(\014nd)e(most)630 4752 y(comfortable.)630 +4882 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h (k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 -4716 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fr(macro)5 b Fu(\).)630 4851 y(The)42 b Ft(bind)30 +4991 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g +(\(a)h Fr(macro)5 b Fu(\).)630 5121 y(The)42 b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) -f(bindings)g(in)h(a)630 4961 y(format)37 b(that)h(can)f(put)f(directly) +f(bindings)g(in)h(a)630 5230 y(format)37 b(that)h(can)f(put)f(directly) i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 -b(Section)f(4.2)i([Bash)630 5070 y(Builtins],)31 b(page)g(49.)630 -5230 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35 -b Fu(or)c Fr(macro)1110 5340 y(k)m(eyname)k Fu(is)29 -b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 -b(F)-8 b(or)30 b(example:)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(114)1350 299 y Ft(Control-u:)45 -b(universal-argument)1350 408 y(Meta-Rubout:)f(backward-kill-word)1350 -518 y(Control-o:)h(">)i(output")1110 650 y Fu(In)94 b(the)g(ab)s(o)m(v) -m(e)i(example,)111 b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f -(function)1110 760 y Ft(universal-argument)p Fu(,)124 -b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 -869 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g -Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 979 y(expressed)45 -b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the) -h(text)h(`)p Ft(>)1110 1089 y(output)p Fu(')29 b(in)m(to)i(the)g -(line\).)1110 1221 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m -(haracter)g(names)f(are)g(recognized)h(while)1110 1330 -y(pro)s(cessing)40 b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 -b Fr(DEL)p Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f -Fr(LFD)p Fu(,)1110 1440 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p -Fu(,)f Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 -b(A)m(CE)p Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p -Fu(.)630 1595 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 -b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 1704 -y(k)m(eyseq)k Fu(di\013ers)d(from)f Fr(k)m(eyname)37 -b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 -1814 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m -(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1923 -y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Fu(Emacs)f(st)m(yle)i(k)m -(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2033 -y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m -(haracter)g(names)f(are)g(not)1110 2143 y(recognized.)1350 -2275 y Ft("\\C-u":)46 b(universal-argument)1350 2384 -y("\\C-x\\C-r":)f(re-read-init-file)1350 2494 y("\\e[11~":)g("Function) -h(Key)g(1")1110 2626 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +b(Section)f(4.2)i([Bash)630 5340 y(Builtins],)31 b(page)g(50.)p +eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(116)630 299 y Fr(k)m(eyname)5 +b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 +408 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s +(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 +543 y Ft(Control-u:)45 b(universal-argument)1350 652 +y(Meta-Rubout:)f(backward-kill-word)1350 762 y(Control-o:)h(">)i +(output")1110 896 y Fu(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111 +b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110 +1006 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107 +b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 1115 y +Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e +(to)j(run)d(the)i(macro)1110 1225 y(expressed)45 b(on)h(the)g(righ)m(t) +g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p +Ft(>)1110 1335 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 +1469 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g +(names)f(are)g(recognized)h(while)1110 1579 y(pro)s(cessing)40 +b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p +Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p +Fu(,)1110 1688 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f +Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p +Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630 +1847 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36 +b Fu(or)30 b Fr(macro)1110 1957 y(k)m(eyseq)k Fu(di\013ers)d(from)f +Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f +(denoting)g(an)g(en-)1110 2066 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s +(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in) +1110 2176 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h +Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) +1110 2286 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s +(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 2395 y(recognized.)1350 +2530 y Ft("\\C-u":)46 b(universal-argument)1350 2639 +y("\\C-x\\C-r":)f(re-read-init-file)1350 2749 y("\\e[11~":)g("Function) +h(Key)g(1")1110 2883 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -2736 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 2845 +2993 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3102 y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 -2955 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Ft(Function)e(Key)g(1)p Fu('.)630 3110 y(The)g(follo)m(wing)i +3212 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Ft(Function)e(Key)g(1)p Fu('.)630 3371 y(The)g(follo)m(wing)i Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 3219 y(k)m(ey)i(sequences:)630 -3374 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 -3529 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3683 y +b(ailable)32 b(when)d(sp)s(ecifying)630 3480 y(k)m(ey)i(sequences:)630 +3640 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 +3799 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3958 y Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 -3838 y Fj(\\\\)384 b Fu(bac)m(kslash)630 3993 y Fj(\\)p +4117 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4276 y Fj(\\)p Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 -4147 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 4302 y(In)d(addition)h(to)g(the)g Fm(gnu)f +4435 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s +(ostrophe)630 4594 y(In)d(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g -(bac)m(kslash)630 4412 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -4566 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 4721 -y Ft(\\b)384 b Fu(bac)m(kspace)630 4876 y Ft(\\d)g Fu(delete)630 -5031 y Ft(\\f)g Fu(form)30 b(feed)630 5185 y Ft(\\n)384 -b Fu(newline)630 5340 y Ft(\\r)g Fu(carriage)32 b(return)p -eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft(\\t)384 -b Fu(horizon)m(tal)32 b(tab)630 451 y Ft(\\v)384 b Fu(v)m(ertical)32 -b(tab)630 604 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m -(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 -b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 713 y(three)c(digits\))630 -866 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g -(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 -b(alue)39 b Fr(HH)1110 975 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 1128 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g -(macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to) -630 1237 y(indicate)23 b(a)e(macro)h(de\014nition.)38 -b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f -(name.)38 b(In)630 1347 y(the)22 b(macro)f(b)s(o)s(dy)-8 -b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m -(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 1456 y(will)j(quote)h(an)m -(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 +(bac)m(kslash)630 4704 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 +4863 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5022 +y Ft(\\b)384 b Fu(bac)m(kspace)630 5181 y Ft(\\d)g Fu(delete)630 +5340 y Ft(\\f)g Fu(form)30 b(feed)p eop end +%%Page: 117 123 +TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y Ft(\\n)384 +b Fu(newline)630 459 y Ft(\\r)g Fu(carriage)32 b(return)630 +619 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 779 +y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 939 y Ft(\\)p +Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 +b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fr(nnn)e +Fu(\(one)i(to)1110 1049 y(three)c(digits\))630 1209 y +Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e +(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 +b Fr(HH)1110 1318 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 +1478 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e +(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 +1588 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 +b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38 +b(In)630 1697 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23 +b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j +(are)e(expanded.)37 b(Bac)m(kslash)630 1807 y(will)j(quote)h(an)m(y)f +(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 -b(or)630 1566 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +b(or)630 1917 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i (mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p -Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 1697 y Ft("\\C-x\\\\":)45 -b("\\\\")150 1889 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 2036 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2051 y Ft("\\C-x\\\\":)45 +b("\\\\")150 2251 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 2398 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f (in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -2146 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +2508 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g (bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s -(erformed)f(as)i(the)150 2255 y(result)f(of)h(tests.)41 +(erformed)f(as)i(the)150 2617 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -2408 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h +2778 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h (bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 2517 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g -(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) -630 2627 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m -(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 -2779 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h -Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110 -2889 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g -Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction) -1110 2998 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38 -b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 -3108 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d -Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3218 y(starting)f(out)g -(in)f Ft(emacs)f Fu(mo)s(de.)630 3370 y Ft(term)288 b +(the)630 2887 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h +(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,) +630 2997 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f +(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630 +3106 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i +(it.)630 3267 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e +Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g +(whether)e(Read-)1110 3376 y(line)44 b(is)f(in)g Ft(emacs)f +Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g +(conjunction)1110 3486 y(with)c(the)h(`)p Ft(set)29 b(keymap)p +Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 +3595 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d +Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3705 y(starting)f(out)g +(in)f Ft(emacs)f Fu(mo)s(de.)630 3865 y Ft(term)288 b Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f -(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3480 y(ings,)38 +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3974 y(ings,)38 b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g -(the)g(terminal's)1110 3589 y(function)24 b(k)m(eys.)39 +(the)g(terminal's)1110 4084 y(function)24 b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p -Ft(=)p Fu(')g(is)g(tested)h(against)1110 3699 y(b)s(oth)k(the)h(full)g +Ft(=)p Fu(')g(is)g(tested)h(against)1110 4194 y(b)s(oth)k(the)h(full)g (name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g -(terminal)1110 3808 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +(terminal)1110 4303 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s -(oth)f Ft(sun)g Fu(and)1110 3918 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) -630 4070 y Ft(application)1110 4180 y Fu(The)21 b Fr(application)j -Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 4289 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fr(application)1110 -4399 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 -4509 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h -(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 4618 -y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f -(sequence)h(that)f(quotes)1110 4728 y(the)e(curren)m(t)f(or)g(previous) -g(w)m(ord)g(in)g(Bash:)1350 4859 y Ft($if)47 b(Bash)1350 -4968 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 -5078 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5188 y($endif)150 -5340 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g -(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)p +(oth)f Ft(sun)g Fu(and)1110 4413 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) +630 4573 y Ft(version)144 b Fu(The)44 b Ft(version)f +Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i +(against)1110 4682 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 +b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110 +4792 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h +(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110 +4902 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p +Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p +Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h +(on)1110 5011 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g +(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 +5121 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 +b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 5230 +y(`)p Ft(7.1)p Fu('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g +(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Ft(0)p +Fu('.)40 b(The)1110 5340 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated) +g(from)g(the)h(string)f Ft(version)f Fu(and)h(from)g(the)p eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Ft($else)240 -b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)f -Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.) -150 458 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e -(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g(commands) -630 568 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(118)1110 299 y(v)m(ersion)39 +b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67 +b(The)38 b(follo)m(wing)i(example)1110 408 y(sets)31 +b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g +(used)g(is)g(7.0)i(or)e(new)m(er:)1350 543 y Ft($if)47 +b(version)f(>=)h(7.0)1350 653 y(set)g(show-mode-in-prompt)42 +b(on)1350 762 y($endif)630 922 y(application)1110 1031 +y Fu(The)21 b Fr(application)j Fu(construct)e(is)g(used)f(to)i(include) +f(application-sp)s(eci\014c)h(set-)1110 1141 y(tings.)39 +b(Eac)m(h)26 b(program)e(using)g(the)h(Readline)g(library)g(sets)g(the) +g Fr(application)1110 1250 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g +(for)f(a)g(particular)h(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g +(used)f(to)1110 1360 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e +(useful)g(for)h(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 +b(or)1110 1469 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f +(a)i(k)m(ey)f(sequence)h(that)f(quotes)1110 1579 y(the)e(curren)m(t)f +(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 1714 y Ft($if)47 +b(Bash)1350 1823 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) +1350 1933 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2042 y($endif)630 +2202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 +b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g +(Readline)1110 2311 y(v)-5 b(ariables)32 b(and)f(v)-5 +b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i +(`)p Ft(=)p Fu(',)1110 2421 y(`)p Ft(==)p Fu(',)49 b(and)44 +b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g +(b)s(e)g(separated)g(from)g(the)1110 2531 y(comparison)25 +b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s +(e)f(separated)1110 2640 y(from)33 b(the)h(v)-5 b(alue)35 +b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52 +b(Both)35 b(string)1110 2750 y(and)i(b)s(o)s(olean)g(v)-5 +b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39 +b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 2859 y(tested)46 +b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f +Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110 +2969 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e +Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3103 y +Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3213 y(set)f +(show-mode-in-prompt)42 b(on)1350 3323 y($endif)150 3482 +y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous) +g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150 +3641 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +(the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g +(fails.)150 3801 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m +(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g +(commands)630 3910 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e -(from)630 677 y Ft(/etc/inputrc)p Fu(:)870 812 y Ft($include)46 -b(/etc/inputrc)150 1011 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 -1158 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k +(from)630 4020 y Ft(/etc/inputrc)p Fu(:)870 4154 y Ft($include)46 +b(/etc/inputrc)150 4354 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 +4501 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 -b(ariable)27 b(assignmen)m(t,)i(and)150 1268 y(conditional)j(syn)m +b(ariable)27 b(assignmen)m(t,)i(and)150 4610 y(conditional)j(syn)m (tax.)p eop end -%%Page: 117 123 -TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(117)390 408 y Ft(#)47 +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(119)390 408 y Ft(#)47 b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h (editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include) @@ -16496,9 +16747,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(118)390 299 y Ft(#"\\M-\\C-[A":) +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(120)390 299 y Ft(#"\\M-\\C-[A":) 331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the) @@ -16531,2075 +16782,2138 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(119)390 299 y Ft(#)47 +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(121)390 299 y Ft(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 -847 y($endif)150 1083 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) -150 1242 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f +847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) +150 1248 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f (that)h(ma)m(y)h(b)s(e)d(b)s(ound)g(to)i(k)m(ey)g(sequences.)48 -b(Y)-8 b(ou)33 b(can)150 1352 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d +b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g -(terse)g(format,)i(suitable)e(for)f(an)150 1461 y Fr(inputrc)34 +(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h -([Bash)g(Builtins],)g(page)g(49.\))41 b(Command)28 b(names)h(without) -150 1571 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s -(ound)d(b)m(y)i(default.)275 1703 y(In)25 b(the)h(follo)m(wing)i +([Bash)g(Builtins],)g(page)g(50.\))41 b(Command)28 b(names)h(without) +150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s +(ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g (cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150 -1813 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g +1822 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f -(p)s(oin)m(t)g(and)150 1922 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f -Fr(region)p Fu(.)150 2117 y Fk(8.4.1)63 b(Commands)42 -b(F)-10 b(or)41 b(Mo)m(ving)150 2286 y Ft(beginning-of-line)26 -b(\(C-a\))630 2396 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f -(curren)m(t)g(line.)150 2551 y Ft(end-of-line)d(\(C-e\))630 -2660 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2815 y Ft(forward-char)c(\(C-f\))630 2924 y Fu(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3079 y Ft(backward-char)c(\(C-b\)) -630 3189 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3343 y Ft(forward-word)d(\(M-f\))630 3453 y Fu(Mo)m(v)m(e)32 +(p)s(oin)m(t)g(and)150 1932 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f +Fr(region)p Fu(.)150 2132 y Fk(8.4.1)63 b(Commands)42 +b(F)-10 b(or)41 b(Mo)m(ving)150 2304 y Ft(beginning-of-line)26 +b(\(C-a\))630 2414 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f +(curren)m(t)g(line.)150 2574 y Ft(end-of-line)d(\(C-e\))630 +2684 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +2844 y Ft(forward-char)c(\(C-f\))630 2954 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(a)h(c)m(haracter.)150 3114 y Ft(backward-char)c(\(C-b\)) +630 3223 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 +3384 y Ft(forward-word)d(\(M-f\))630 3493 y Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 -3563 y(digits.)150 3717 y Ft(backward-word)27 b(\(M-b\))630 -3827 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g +3603 y(digits.)150 3763 y Ft(backward-word)27 b(\(M-b\))630 +3873 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 -b(are)g(comp)s(osed)630 3936 y(of)d(letters)g(and)f(digits.)150 -4091 y Ft(shell-forward-word)25 b(\(\))630 4201 y Fu(Mo)m(v)m(e)30 +b(are)g(comp)s(osed)630 3982 y(of)d(letters)g(and)f(digits.)150 +4143 y Ft(shell-forward-word)25 b(\(\))630 4252 y Fu(Mo)m(v)m(e)30 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)m(ord.)40 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630 -4310 y(shell)j(metac)m(haracters.)150 4465 y Ft(shell-backward-word)25 -b(\(\))630 4575 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g +4362 y(shell)j(metac)m(haracters.)150 4522 y Ft(shell-backward-word)25 +b(\(\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g (the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 b(W)-8 -b(ords)35 b(are)g(delimited)630 4684 y(b)m(y)30 b(non-quoted)h(shell)f -(metac)m(haracters.)150 4839 y Ft(clear-screen)d(\(C-l\))630 -4948 y Fu(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h(curren)m(t)f -(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g(top)630 -5058 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 -b(\(\))630 5322 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41 -b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)p eop -end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(120)150 299 y Fk(8.4.2)63 -b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 -473 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630 -582 y Fu(Accept)25 b(the)e(line)h(regardless)g(of)f(where)g(the)h -(cursor)e(is.)39 b(If)23 b(this)g(line)h(is)f(non-empt)m(y)-8 -b(,)26 b(add)c(it)630 692 y(to)27 b(the)f(history)g(list)h(according)g -(to)g(the)f(setting)i(of)e(the)g Ft(HISTCONTROL)d Fu(and)j -Ft(HISTIGNORE)630 802 y Fu(v)-5 b(ariables.)42 b(If)30 -b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g(then)f -(restore)i(the)f(history)f(line)h(to)630 911 y(its)g(original)g(state.) -150 1075 y Ft(previous-history)26 b(\(C-p\))630 1184 -y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g -(fetc)m(hing)g(the)g(previous)f(command.)150 1348 y Ft(next-history)d -(\(C-n\))630 1457 y Fu(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i -(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150 -1621 y Ft(beginning-of-history)25 b(\(M-<\))630 1730 -y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8 -b(.)150 1894 y Ft(end-of-history)26 b(\(M->\))630 2004 -y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8 -b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150 -2167 y Ft(reverse-search-history)24 b(\(C-r\))630 2277 -y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g -(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 -2386 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m -(tal)i(searc)m(h.)150 2550 y Ft(forward-search-history)24 -b(\(C-s\))630 2659 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h -(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 2769 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30 -b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2932 y Ft -(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 3042 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g +b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30 b(non-quoted)h(shell)f +(metac)m(haracters.)150 4902 y Ft(previous-screen-line)25 +b(\(\))630 5011 y Fu(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e +(to)h(the)f(same)h(ph)m(ysical)g(screen)f(column)g(on)g(the)g(previous) +630 5121 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24 +b(will)i(not)f(ha)m(v)m(e)h(the)f(desired)g(e\013ect)h(if)f(the)h +(curren)m(t)e(Readline)630 5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d +(more)i(than)f(one)g(ph)m(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f +(not)h(greater)g(than)630 5340 y(the)j(length)f(of)h(the)f(prompt)g +(plus)f(the)i(screen)f(width.)p eop end +%%Page: 122 128 +TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft(next-screen-line) +26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to) +i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m +(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m +(e)h(the)e(desired)g(e\013ect)i(if)e(the)g(curren)m(t)h(Readline)g +(line)f(do)s(es)630 628 y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m +(ysical)h(line)g(or)f(if)g(the)h(length)f(of)h(the)f(curren)m(t)g +(Readline)630 737 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g +(of)f(the)h(prompt)e(plus)h(the)g(screen)h(width.)150 +893 y Ft(clear-screen)c(\(C-l\))630 1003 y Fu(Clear)g(the)g(screen)f +(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f +(curren)m(t)g(line)g(at)g(the)g(top)630 1112 y(of)k(the)f(screen.)150 +1268 y Ft(redraw-current-line)25 b(\(\))630 1378 y Fu(Refresh)30 +b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s +(ound.)150 1574 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41 +b(Manipulating)h(The)f(History)150 1744 y Ft(accept-line)27 +b(\(Newline)h(or)i(Return\))630 1854 y Fu(Accept)25 b(the)e(line)h +(regardless)g(of)f(where)g(the)h(cursor)e(is.)39 b(If)23 +b(this)g(line)h(is)f(non-empt)m(y)-8 b(,)26 b(add)c(it)630 +1963 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i +(of)e(the)g Ft(HISTCONTROL)d Fu(and)j Ft(HISTIGNORE)630 +2073 y Fu(v)-5 b(ariables.)42 b(If)30 b(this)h(line)g(is)g(a)g(mo)s +(di\014ed)e(history)i(line,)g(then)f(restore)i(the)f(history)f(line)h +(to)630 2182 y(its)g(original)g(state.)150 2338 y Ft(previous-history) +26 b(\(C-p\))630 2448 y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g +(history)h(list,)g(fetc)m(hing)g(the)g(previous)f(command.)150 +2604 y Ft(next-history)d(\(C-n\))630 2714 y Fu(Mo)m(v)m(e)32 +b(`forw)m(ard')f(through)e(the)i(history)f(list,)i(fetc)m(hing)f(the)g +(next)f(command.)150 2870 y Ft(beginning-of-history)25 +b(\(M-<\))630 2979 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in) +h(the)f(history)-8 b(.)150 3135 y Ft(end-of-history)26 +b(\(M->\))630 3245 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h +(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s +(eing)f(en)m(tered.)150 3401 y Ft(reverse-search-history)24 +b(\(C-r\))630 3510 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g -(his-)630 3152 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m -(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630 -3261 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m -(ywhere)g(in)f(a)h(history)f(line.)150 3425 y Ft -(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-n\))630 3534 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(his-)630 3620 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 +b(is)i(an)f(incremen)m(tal)i(searc)m(h.)150 3776 y Ft +(forward-search-history)24 b(\(C-s\))630 3886 y Fu(Searc)m(h)44 +b(forw)m(ard)f(starting)h(at)h(the)e(curren)m(t)h(line)g(and)f(mo)m +(ving)h(`do)m(wn')g(through)f(the)630 3995 y(history)30 +b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g +(searc)m(h.)150 4151 y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist) +o(ory)24 b(\(M-p\))630 4261 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h +(starting)g(at)g(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e +(through)h(the)g(his-)630 4370 y(tory)36 b(as)g(necessary)h(using)e(a)i +(non-incremen)m(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h +(the)630 4480 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m +(h)g(an)m(ywhere)g(in)f(a)h(history)f(line.)150 4636 +y Ft(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-n\))630 4746 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h (the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) -630 3644 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m +630 4855 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m (tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 -3754 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) -m(ywhere)g(in)f(a)h(history)f(line.)150 3917 y Ft -(history-search-forward)24 b(\(\))630 4027 y Fu(Searc)m(h)42 +4965 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) +m(ywhere)g(in)f(a)h(history)f(line.)150 5121 y Ft +(history-search-forward)24 b(\(\))630 5230 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m -(haracters)h(b)s(et)m(w)m(een)f(the)630 4136 y(start)36 +(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)36 b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58 -b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 -4246 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 -b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 -b(By)33 b(default,)g(this)630 4355 y(command)d(is)h(un)m(b)s(ound.)150 -4519 y Ft(history-search-backward)24 b(\(\))630 4629 -y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g -(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 -4738 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) +b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p +eop end +%%Page: 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(b)s(eginning)32 +b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i +(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m +(b)s(ound.)150 581 y Ft(history-search-backward)24 b(\(\))630 +690 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for) +g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +800 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.) 58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630 -4848 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 -b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 -b(By)33 b(default,)g(this)630 4957 y(command)d(is)h(un)m(b)s(ound.)150 -5121 y Ft(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630 -5230 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g +910 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32 +b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33 +b(default,)g(this)630 1019 y(command)d(is)h(un)m(b)s(ound.)150 +1192 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630 +1301 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g (the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 -5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m (t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) -p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(in)32 -b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h -(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 -408 y(is)e(un)m(b)s(ound.)150 573 y Ft(history-substr-search-ba)o(ckwa) -o(rd)24 b(\(\))630 683 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f -(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m -(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f -(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m -(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47 -b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47 -b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150 -1177 y Ft(yank-nth-arg)d(\(M-C-y\))630 1286 y Fu(Insert)37 -b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h -(\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32 -b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32 -b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g Fr(n)p -Fu(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w) -m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630 -1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f -Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fr(n)e -Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -1834 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g(had)g(b)s -(een)g(sp)s(eci\014ed.)150 1999 y Ft(yank-last-arg)d(\(M-.)i(or)h -(M-_\))630 2109 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous) -f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 -2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m +630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 1630 y(is)e(un)m(b)s(ound.)150 1802 y Ft +(history-substring-search)o(-bac)o(kwar)o(d)24 b(\(\))630 +1912 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g +(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630 +2021 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m +(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere) +630 2131 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h +(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e +(command)630 2241 y(is)e(un)m(b)s(ound.)150 2413 y Ft(yank-nth-arg)d +(\(M-C-y\))630 2523 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f +(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630 +2632 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 +b(With)32 b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g +Fr(n)p Fu(th)f(w)m(ord)g(from)630 2742 y(the)k(previous)f(command)h +(\(the)g(w)m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f +(w)m(ord)630 2851 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f +(inserts)g(the)f Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f +(previous)630 2961 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h +Fr(n)e Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e +(if)630 3070 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g +(had)g(b)s(een)g(sp)s(eci\014ed.)150 3243 y Ft(yank-last-arg)d(\(M-.)i +(or)h(M-_\))630 3352 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f +(previous)f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630 +3462 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m (t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Ft(yank-nth-arg)p -Fu(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c +Fu(.)630 3572 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c Fu(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i -(inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) +(inserting)630 3681 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp) s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i -(of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36 +(of)f(eac)m(h)h(line)630 3791 y(in)36 b(turn.)58 b(An)m(y)36 b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g -(calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g +(calls)h(determines)630 3900 y(the)d(direction)g(to)h(mo)m(v)m(e)g (through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e -(switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f +(switc)m(hes)h(the)630 4010 y(direction)23 b(through)g(the)g(history)f (\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g -(facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g +(facilities)630 4120 y(are)28 b(used)f(to)h(extract)h(the)f(last)g (argumen)m(t,)h(as)e(if)h(the)g(`)p Ft(!$)p Fu(')f(history)g(expansion) -h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y +h(had)f(b)s(een)630 4229 y(sp)s(eci\014ed.)150 4441 y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 3365 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 -3475 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g +b(ext)150 4620 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630 +4729 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g (for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m -(harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m +(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m (haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s -(eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g +(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g (it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p -Fu(.)150 3859 y Ft(delete-char)e(\(C-d\))630 3968 y Fu(Delete)35 +Fu(.)150 5121 y Ft(delete-char)e(\(C-d\))630 5230 y Fu(Delete)35 b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g -(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078 +(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340 y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g -(e\013ects.)150 4243 y Ft(backward-delete-char)25 b(\(Rubout\))630 -4353 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 -b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 -4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -4627 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 -4737 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h +(e\013ects.)p eop end +%%Page: 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 Ft +(backward-delete-char)25 b(\(Rubout\))630 408 y Fu(Delete)32 +b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30 +b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630 +518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 +682 y Ft(forward-backward-delete-)o(char)24 b(\(\))630 +792 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h (unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630 -4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s -(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 -4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -5121 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230 +902 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind) +d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630 +1011 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 +1176 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1285 y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 -5340 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)p -eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft(self-insert)27 -b(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 408 y Fu(Insert)g(y)m -(ourself.)150 573 y Ft(bracketed-paste-begin)25 b(\(\))630 -683 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f -(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p Ft(")f -Fu(escap)s(e)h(sequence)630 793 y(sen)m(t)38 b(b)m(y)f(some)h -(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i(assigned)f(b)m(y)h -(default.)62 b(It)38 b(allo)m(ws)630 902 y(Readline)33 -b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g(single)g(unit)f(without) -h(treating)h(eac)m(h)f(c)m(har-)630 1012 y(acter)40 b(as)f(if)g(it)g -(had)f(b)s(een)g(read)h(from)f(the)h(k)m(eyb)s(oard.)66 -b(The)39 b(c)m(haracters)h(are)f(inserted)630 1121 y(as)i(if)g(eac)m(h) -i(one)e(w)m(as)h(b)s(ound)d(to)i Ft(self-insert)p Fu(\))e(instead)i(of) -h(executing)g(an)m(y)f(editing)630 1231 y(commands.)150 -1396 y Ft(transpose-chars)26 b(\(C-t\))630 1505 y Fu(Drag)33 -b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f(forw)m(ard)h(o)m(v)m -(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 1615 -y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 -b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h -(the)630 1724 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h -(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25 -b(argumen)m(ts)630 1834 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 -1999 y Ft(transpose-words)c(\(M-t\))630 2109 y Fu(Drag)33 -b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f -(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 -2218 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m -(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g -(the)630 2328 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 -2493 y Ft(upcase-word)c(\(M-u\))630 2602 y Fu(Upp)s(ercase)32 -b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 -b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 -2712 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h -(the)e(cursor.)150 2877 y Ft(downcase-word)d(\(M-l\))630 -2986 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +1395 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150 +1559 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 +1669 y Fu(Insert)g(y)m(ourself.)150 1833 y Ft(bracketed-paste-begin)25 +b(\(\))630 1943 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e +(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p +Ft(")f Fu(escap)s(e)h(sequence)630 2052 y(sen)m(t)38 +b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i +(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630 +2162 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g +(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630 +2271 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k) +m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630 +2381 y(as)i(if)g(eac)m(h)i(one)e(w)m(as)h(b)s(ound)d(to)i +Ft(self-insert)p Fu(\))e(instead)i(of)h(executing)g(an)m(y)f(editing) +630 2491 y(commands.)150 2655 y Ft(transpose-chars)26 +b(\(C-t\))630 2765 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the) +g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g +(cursor,)630 2874 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m +(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end) +g(of)h(the)630 2984 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h +(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 +b(Negativ)m(e)25 b(argumen)m(ts)630 3093 y(ha)m(v)m(e)32 +b(no)e(e\013ect.)150 3258 y Ft(transpose-words)c(\(M-t\))630 +3367 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g +(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past) +g(that)630 3477 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 +b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f +(line,)i(this)e(transp)s(oses)g(the)630 3587 y(last)j(t)m(w)m(o)h(w)m +(ords)e(on)g(the)h(line.)150 3751 y Ft(upcase-word)c(\(M-u\))630 +3861 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i +(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 +3970 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 4134 y Ft(downcase-word)d(\(M-l\))630 +4244 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i (w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m -(ercase)630 3096 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m -(v)m(e)i(the)f(cursor.)150 3261 y Ft(capitalize-word)26 -b(\(M-c\))630 3370 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(ercase)630 4354 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)150 4518 y Ft(capitalize-word)26 +b(\(M-c\))630 4628 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m (wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 3480 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f -(mo)m(v)m(e)i(the)f(cursor.)150 3645 y Ft(overwrite-mode)26 -b(\(\))630 3754 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +(capitalize)630 4737 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 4902 y Ft(overwrite-mode)26 +b(\(\))630 5011 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 3864 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +h(switc)m(hes)630 5121 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m -(t,)i(switc)m(hes)e(to)630 3973 y(insert)30 b(mo)s(de.)41 +(t,)i(switc)m(hes)e(to)630 5230 y(insert)30 b(mo)s(de.)41 b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i -Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4083 +Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 5340 y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f -Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 -4220 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s -(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 -4330 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h -(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 -4439 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) -h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4577 -y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 -4781 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 -4956 y Ft(kill-line)28 b(\(C-k\))630 5066 y Fu(Kill)j(the)f(text)i -(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150 -5230 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 -5340 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s -(eginning)g(of)h(the)f(curren)m(t)g(line.)p eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft -(unix-line-discard)26 b(\(C-u\))630 408 y Fu(Kill)31 +Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)p +eop end +%%Page: 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)630 299 y(In)52 +b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)c(to)j +Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 408 +y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)f +(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 518 +y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)h(b)s +(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 647 y(By)g(default,)f +(this)h(command)f(is)g(un)m(b)s(ound.)150 835 y Fk(8.4.4)63 +b(Killing)42 b(And)e(Y)-10 b(anking)150 1001 y Ft(kill-line)28 +b(\(C-k\))630 1111 y Fu(Kill)j(the)f(text)i(from)e(p)s(oin)m(t)g(to)h +(the)g(end)e(of)i(the)f(line.)150 1259 y Ft(backward-kill-line)25 +b(\(C-x)30 b(Rubout\))630 1369 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the) +i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 +1517 y Ft(unix-line-discard)c(\(C-u\))630 1627 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h -(the)f(curren)m(t)g(line.)150 571 y Ft(kill-whole-line)c(\(\))630 -681 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,) -h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 -b(default,)630 791 y(this)30 b(is)h(un)m(b)s(ound.)150 -954 y Ft(kill-word)d(\(M-d\))630 1063 y Fu(Kill)i(from)f(p)s(oin)m(t)g +(the)f(curren)m(t)g(line.)150 1775 y Ft(kill-whole-line)c(\(\))630 +1885 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h +(line,)h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 +b(default,)630 1994 y(this)30 b(is)h(un)m(b)s(ound.)150 +2142 y Ft(kill-word)d(\(M-d\))630 2252 y Fu(Kill)i(from)f(p)s(oin)m(t)g (to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m -(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 1173 y(of)h(the)f(next)h(w)m +(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 2362 y(of)h(the)f(next)h(w)m (ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f -Ft(forward-word)p Fu(.)150 1336 y Ft(backward-kill-word)25 -b(\(M-DEL\))630 1445 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m +Ft(forward-word)p Fu(.)150 2510 y Ft(backward-kill-word)25 +b(\(M-DEL\))630 2620 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m (t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g -Ft(backward-word)p Fu(.)150 1608 y Ft(shell-kill-word)d(\(\))630 -1718 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +Ft(backward-word)p Fu(.)150 2768 y Ft(shell-kill-word)d(\(\))630 +2877 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f (curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 1827 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +(the)g(end)630 2987 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft -(shell-forward-word)p Fu(.)150 1990 y Ft(shell-backward-kill-word)24 -b(\(\))630 2100 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 +(shell-forward-word)p Fu(.)150 3135 y Ft(shell-backward-kill-word)24 +b(\(\))630 3245 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f -Ft(shell-backward-)630 2209 y(word)p Fu(.)150 2372 y -Ft(unix-word-rubout)k(\(C-w\))630 2482 y Fu(Kill)32 b(the)g(w)m(ord)f +Ft(shell-backward-)630 3354 y(word)p Fu(.)150 3503 y +Ft(unix-word-rubout)k(\(C-w\))630 3612 y Fu(Kill)32 b(the)g(w)m(ord)f (b)s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f -(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 2592 y(text)g(is)g(sa)m(v) -m(ed)g(on)g(the)f(kill-ring.)150 2755 y Ft(unix-filename-rubout)25 -b(\(\))630 2864 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m +(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 3722 y(text)g(is)g(sa)m(v) +m(ed)g(on)g(the)f(kill-ring.)150 3870 y Ft(unix-filename-rubout)25 +b(\(\))630 3980 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m (t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f -(the)630 2974 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 +(the)630 4089 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 -3137 y Ft(delete-horizontal-space)24 b(\(\))630 3246 +4238 y Ft(delete-horizontal-space)24 b(\(\))630 4347 y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 3409 -y Ft(kill-region)d(\(\))630 3519 y Fu(Kill)k(the)f(text)i(in)e(the)g +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 4495 +y Ft(kill-region)d(\(\))630 4605 y Fu(Kill)k(the)f(text)i(in)e(the)g (curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) -m(b)s(ound.)150 3682 y Ft(copy-region-as-kill)25 b(\(\))630 -3791 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f +m(b)s(ound.)150 4753 y Ft(copy-region-as-kill)25 b(\(\))630 +4863 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f (kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f -(a)m(w)m(a)m(y)-8 b(.)630 3901 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 4064 y Ft(copy-backward-word)25 -b(\(\))630 4173 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m +(a)m(w)m(a)m(y)-8 b(.)630 4973 y(By)31 b(default,)f(this)h(command)f +(is)g(un)m(b)s(ound.)150 5121 y Ft(copy-backward-word)25 +b(\(\))630 5230 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m (t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) -f(are)i(the)630 4283 y(same)31 b(as)f Ft(backward-word)p -Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -4446 y Ft(copy-forward-word)26 b(\(\))630 4556 y Fu(Cop)m(y)31 +f(are)i(the)630 5340 y(same)31 b(as)f Ft(backward-word)p +Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)p +eop end +%%Page: 126 132 +TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(126)150 299 y Ft +(copy-forward-word)26 b(\(\))630 408 y Fu(Cop)m(y)31 b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h (bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -4665 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 -b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -4828 y Ft(yank)f(\(C-y\))630 4938 y Fu(Y)-8 b(ank)31 -b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 5101 y Ft(yank-pop)d(\(M-y\))630 5210 -y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 -b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -5320 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p -Fu(.)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.4.5)63 -b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 477 y -Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j Fj(M-1)p -Ft(,)h(...)f Fj(M--)p Ft(\))630 586 y Fu(Add)d(this)h(digit)g(to)h(the) -f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f(new)f -(argumen)m(t.)630 696 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i(argumen) -m(t.)150 867 y Ft(universal-argument)25 b(\(\))630 977 -y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m -(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 -1087 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m -(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 -1196 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +518 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 b(default,)h(this)g +(command)f(is)g(un)m(b)s(ound.)150 671 y Ft(yank)f(\(C-y\))630 +781 y Fu(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i +(the)e(bu\013er)g(at)h(p)s(oin)m(t.)150 934 y Ft(yank-pop)d(\(M-y\))630 +1044 y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g +(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 +1153 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)150 1347 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m +(ts)150 1515 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j +Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 1625 y Fu(Add)d(this)h(digit)g +(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f +(new)f(argumen)m(t.)630 1735 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i +(argumen)m(t.)150 1888 y Ft(universal-argument)25 b(\(\))630 +1998 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g +(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m +(y)f(one)630 2107 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h +(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 +2217 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) m(y)f(digits,)i(executing)f Ft(universal-argument)630 -1306 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +2326 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h (otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 -1415 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +2436 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 -1525 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +2545 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f (the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 -1635 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +2655 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h (one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 -1744 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +2765 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h (second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 -1854 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g -(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 2065 y Fk(8.4.6)63 +2874 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 3067 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 -b(Y)-10 b(ou)150 2243 y Ft(complete)28 b(\(TAB\))630 -2353 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +b(Y)-10 b(ou)150 3236 y Ft(complete)28 b(\(TAB\))630 +3346 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g (b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 -2462 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 +3455 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630 -2572 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e +3565 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e (with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e -(with)630 2681 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h +(with)630 3675 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h (b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h -(aliases)i(and)630 2791 y(functions\))j(in)f(turn.)53 +(aliases)i(and)630 3784 y(functions\))j(in)f(turn.)53 b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename) -e(completion)h(is)630 2901 y(attempted.)150 3072 y Ft -(possible-completions)25 b(\(M-?\))630 3182 y Fu(List)35 +e(completion)h(is)630 3894 y(attempted.)150 4047 y Ft +(possible-completions)25 b(\(M-?\))630 4157 y Fu(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s -(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 3291 +(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 4266 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f (used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 -b(of)630 3401 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 +b(of)630 4376 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 -b Ft(COLUMNS)p Fu(,)630 3510 y(or)30 b(the)h(screen)f(width,)g(in)g -(that)h(order.)150 3682 y Ft(insert-completions)25 b(\(M-*\))630 -3791 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f +b Ft(COLUMNS)p Fu(,)630 4485 y(or)30 b(the)h(screen)f(width,)g(in)g +(that)h(order.)150 4639 y Ft(insert-completions)25 b(\(M-*\))630 +4748 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f (p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 -3901 y(b)m(y)g Ft(possible-completions)p Fu(.)150 4073 -y Ft(menu-complete)d(\(\))630 4182 y Fu(Similar)d(to)g +4858 y(b)m(y)g Ft(possible-completions)p Fu(.)150 5011 +y Ft(menu-complete)d(\(\))630 5121 y Fu(Similar)d(to)g Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f -(completed)i(with)e(a)i(single)f(matc)m(h)630 4292 y(from)37 +(completed)i(with)e(a)i(single)f(matc)m(h)630 5230 y(from)37 b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 -b(execution)g(of)f Ft(menu-complete)630 4401 y Fu(steps)i(through)g +b(execution)g(of)f Ft(menu-complete)630 5340 y Fu(steps)i(through)g (the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i -(matc)m(h)f(in)f(turn.)630 4511 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g -(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 -b(ject)36 b(to)i(the)f(setting)630 4621 y(of)f Ft(bell-style)p -Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 -b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i -Fr(n)630 4730 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +(matc)m(h)f(in)f(turn.)p eop end +%%Page: 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(A)m(t)38 +b(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e(b)s(ell)g(is) +g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 408 +y(of)f Ft(bell-style)p Fu(\))e(and)h(the)h(original)i(text)f(is)f +(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i +Fr(n)630 518 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e (matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 4840 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(used)g(to)630 628 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g (list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s -(ound)e(to)630 4949 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 5121 y Ft(menu-complete-backward)24 -b(\(\))630 5230 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p +(ound)e(to)630 737 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 906 y Ft(menu-complete-backward)24 +b(\(\))630 1015 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 5340 y(completions,)d(as)e(if)h Ft(menu-complete)26 -b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)p -eop end -%%Page: 125 131 -TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft -(delete-char-or-list)25 b(\(\))630 408 y Fu(Deletes)41 +(p)s(ossible)630 1125 y(completions,)d(as)e(if)h Ft(menu-complete)26 +b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 +1294 y Ft(delete-char-or-list)25 b(\(\))630 1403 y Fu(Deletes)41 b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 518 y(line)50 b(\(lik)m(e)h +(eginning)e(or)h(end)f(of)h(the)630 1513 y(line)50 b(\(lik)m(e)h Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 628 y -Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 803 y Ft(complete-filename)c(\(M-/\))630 -913 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g(b) -s(efore)f(p)s(oin)m(t.)150 1088 y Ft(possible-filename-comple)o(tion)o -(s)24 b(\(C-x)30 b(/\))630 1197 y Fu(List)f(the)g(p)s(ossible)f +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 1622 +y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s +(ound)e(b)m(y)i(default.)150 1791 y Ft(complete-filename)c(\(M-/\))630 +1901 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g +(b)s(efore)f(p)s(oin)m(t.)150 2069 y Ft(possible-filename-comple)o +(tion)o(s)24 b(\(C-x)30 b(/\))630 2179 y Fu(List)f(the)g(p)s(ossible)f (completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h -(it)f(as)g(a)f(\014lename.)150 1373 y Ft(complete-username)e(\(M-~\)) -630 1482 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) +(it)f(as)g(a)f(\014lename.)150 2347 y Ft(complete-username)e(\(M-~\)) +630 2457 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 -1658 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 -b(~\))630 1767 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f +2626 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 +b(~\))630 2735 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f (the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g -(username.)150 1942 y Ft(complete-variable)h(\(M-$\))630 -2052 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) +(username.)150 2904 y Ft(complete-variable)h(\(M-$\))630 +3013 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 -2227 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 -b($\))630 2337 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f +3182 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 +b($\))630 3292 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f (the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h -(shell)630 2446 y(v)-5 b(ariable.)150 2622 y Ft(complete-hostname)26 -b(\(M-@\))630 2731 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i +(shell)630 3401 y(v)-5 b(ariable.)150 3570 y Ft(complete-hostname)26 +b(\(M-@\))630 3679 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i (b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 -2907 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 -b(@\))630 3016 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g +3848 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 +b(@\))630 3957 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g (the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h -(hostname.)150 3191 y Ft(complete-command)h(\(M-!\))630 -3301 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) +(hostname.)150 4126 y Ft(complete-command)h(\(M-!\))630 +4236 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 -3411 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) -h(against)g(aliases,)53 b(reserv)m(ed)630 3520 y(w)m(ords,)36 +4345 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) +h(against)g(aliases,)53 b(reserv)m(ed)630 4455 y(w)m(ords,)36 b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g -(executable)i(\014lenames,)g(in)e(that)630 3630 y(order.)150 -3805 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 -b(!\))630 3915 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h +(executable)i(\014lenames,)g(in)e(that)630 4564 y(order.)150 +4733 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 +b(!\))630 4843 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h (text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 -4024 y(name.)150 4200 y Ft(dynamic-complete-history)e(\(M-TAB\))630 -4309 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) +4952 y(name.)150 5121 y Ft(dynamic-complete-history)e(\(M-TAB\))630 +5230 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 -4419 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i -(matc)m(hes.)150 4594 y Ft(dabbrev-expand)26 b(\(\))630 -4704 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s -(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 -4813 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e -(completion)j(matc)m(hes.)150 4988 y Ft(complete-into-braces)25 -b(\(M-{\))630 5098 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f +5340 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i +(matc)m(hes.)p eop end +%%Page: 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(dabbrev-expand)26 +b(\(\))630 408 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g +(text)g(b)s(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 +518 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e +(completion)j(matc)m(hes.)150 683 y Ft(complete-into-braces)25 +b(\(M-{\))630 793 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f (insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 -5208 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 +902 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g -(Ex-)630 5317 y(pansion],)30 b(page)h(21\).)p eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(126)150 299 y Fk(8.4.7)63 -b(Keyb)s(oard)41 b(Macros)150 469 y Ft(start-kbd-macro)26 -b(\(C-x)j(\(\))630 579 y Fu(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i -(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150 -735 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 845 y Fu(Stop)e(sa)m(ving)h -(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m -(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 954 -y(de\014nition.)150 1110 y Ft(call-last-kbd-macro)c(\(C-x)k(e\))630 -1220 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h -(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630 -1329 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s -(oard.)150 1486 y Ft(print-last-kbd-macro)25 b(\(\))630 -1595 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) +(Ex-)630 1012 y(pansion],)30 b(page)h(22\).)150 1217 +y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 1392 y Ft(start-kbd-macro) +26 b(\(C-x)j(\(\))630 1501 y Fu(Begin)i(sa)m(ving)h(the)e(c)m +(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) +g(macro.)150 1666 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 +1776 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m +(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i +(the)630 1886 y(de\014nition.)150 2051 y Ft(call-last-kbd-macro)c +(\(C-x)k(e\))630 2160 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard) +f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the) +630 2270 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m +(eyb)s(oard.)150 2435 y Ft(print-last-kbd-macro)25 b(\(\))630 +2545 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k -Fu(\014le.)150 1791 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) -150 1962 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 -2071 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g +Fu(\014le.)150 2750 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) +150 2924 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 +3034 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 2181 y(assignmen)m(ts)31 b(found)e(there.)150 -2337 y Ft(abort)g(\(C-g\))630 2447 y Fu(Ab)s(ort)d(the)h(curren)m(t)f +(or)i(v)-5 b(ariable)630 3144 y(assignmen)m(ts)31 b(found)e(there.)150 +3309 y Ft(abort)g(\(C-g\))630 3418 y Fu(Ab)s(ort)d(the)h(curren)m(t)f (editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 -b(ject)26 b(to)i(the)630 2556 y(setting)j(of)g Ft(bell-style)p -Fu(\).)150 2712 y Ft(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fj(x)p Ft(,)g(...)o(\))630 2822 y Fu(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fr(x)34 b Fu(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g -(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2932 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 3088 y Ft(prefix-meta)d(\(ESC\))630 -3197 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 -b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 -b(.)630 3307 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 -b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 3463 -y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 3573 y Fu(Incremen)m(tal)h -(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -3729 y Ft(revert-line)27 b(\(M-r\))630 3838 y Fu(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 -3948 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 4104 y Ft(tilde-expand)d(\(M-&\))630 4214 y Fu(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 4370 -y Ft(set-mark)d(\(C-@\))630 4480 y Fu(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 4589 y(to)f(that)g(p)s(osition.) -150 4745 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -4855 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 +b(ject)26 b(to)i(the)630 3528 y(setting)j(of)g Ft(bell-style)p +Fu(\).)150 3693 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p +Fj(x)p Ft(,)g(...)o(\))630 3803 y Fu(If)35 b(the)g(meta\014ed)g(c)m +(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g +(that)g(is)g(b)s(ound)e(to)630 3912 y(the)g(corresp)s(onding)f +(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32 +b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4022 y Fr(x)37 +b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 4187 y +Ft(prefix-meta)27 b(\(ESC\))630 4297 y Fu(Metafy)39 b(the)e(next)h(c)m +(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f +(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 4406 y(T)m(yping)30 +b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31 +b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 4571 y Ft(undo)e(\(C-_)g(or)h(C-x) +g(C-u\))630 4681 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s +(ered)f(for)g(eac)m(h)i(line.)150 4846 y Ft(revert-line)27 +b(\(M-r\))630 4956 y Fu(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f +(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f +Ft(undo)f Fu(command)630 5065 y(enough)e(times)h(to)g(get)h(bac)m(k)f +(to)g(the)f(b)s(eginning.)150 5230 y Ft(tilde-expand)d(\(M-&\))630 +5340 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m +(ord.)p eop end +%%Page: 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(set-mark)28 +b(\(C-@\))630 408 y Fu(Set)33 b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 +b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g +(is)f(set)630 518 y(to)f(that)g(p)s(osition.)150 696 +y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 +806 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 4965 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s -(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 5121 -y Ft(character-search)26 b(\(C-]\))630 5230 y Fu(A)f(c)m(haracter)h(is) +(sa)m(v)m(ed)630 915 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s +(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 1093 +y Ft(character-search)26 b(\(C-]\))630 1203 y Fu(A)f(c)m(haracter)h(is) f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 5340 y(A)30 +(ccurrence)g(of)g(that)g(c)m(haracter.)630 1313 y(A)30 b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft -(character-search-backwar)o(d)24 b(\(M-C-]\))630 408 -y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v) -m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)g(that)630 -518 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f(searc)m(hes)h -(for)e(subsequen)m(t)f(o)s(ccurrences.)150 722 y Ft(skip-csi-sequence)d -(\(\))630 831 y Fu(Read)i(enough)f(c)m(haracters)h(to)g(consume)f(a)h -(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630 -941 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60 -b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence) -630 1050 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +(ccurrences.)150 1491 y Ft(character-search-backwar)o(d)24 +b(\(M-C-]\))630 1600 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s +(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) +g(that)630 1710 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f +(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 +1888 y Ft(skip-csi-sequence)d(\(\))630 1998 y Fu(Read)i(enough)f(c)m +(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f +(as)g(those)h(de\014ned)630 2107 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g +(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m +(trol)g(Sequence)630 2217 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p -Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 1160 y(ducing)31 +Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 2326 y(ducing)31 b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 1270 y(command,)f +(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 2436 y(command,)f (instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 1379 y(un)m(b)s(ound)d(b)m +(editing)h(bu\013er.)44 b(This)31 b(is)630 2545 y(un)m(b)s(ound)d(b)m (y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 -1583 y Ft(insert-comment)26 b(\(M-#\))630 1692 y Fu(Without)36 +2724 y Ft(insert-comment)26 b(\(M-#\))630 2833 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36 -b(is)g(in-)630 1802 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +b(is)g(in-)630 2943 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f (curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g -(supplied,)630 1911 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +(supplied,)630 3052 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g -(line)630 2021 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +(line)630 3162 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5 -b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 2131 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 3271 y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f -(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 2240 +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 3381 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g (newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630 -2350 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f +3491 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f (command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630 -2459 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g +3600 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g (the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630 -2569 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) -150 2772 y Ft(dump-functions)26 b(\(\))630 2882 y Fu(Prin)m(t)g(all)i +3710 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) +150 3888 y Ft(dump-functions)26 b(\(\))630 3998 y Fu(Prin)m(t)g(all)i (of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e -(Readline)h(output)f(stream.)630 2992 y(If)31 b(a)h(n)m(umeric)g +(Readline)h(output)f(stream.)630 4107 y(If)31 b(a)h(n)m(umeric)g (argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f -(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 3101 y(it)f(can)g(b)s(e)e(made)i +(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 4217 y(it)f(can)g(b)s(e)e(made)i (part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150 -3305 y Ft(dump-variables)26 b(\(\))630 3414 y Fu(Prin)m(t)21 +4395 y Ft(dump-variables)26 b(\(\))630 4504 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630 -3524 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +4614 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h (output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -3634 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k +4724 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 3837 y Ft(dump-macros)c(\(\))630 3947 y +(default.)150 4902 y Ft(dump-macros)c(\(\))630 5011 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s (ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -4056 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +5121 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e (supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -4166 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +5230 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 4275 y(default.)150 4479 y Ft(glob-complete-word)e(\(M-g\)) -630 4589 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h -(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 -4698 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 -b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 -4808 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 -5011 y Ft(glob-expand-word)c(\(C-x)j(*\))630 5121 y Fu(The)40 -b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g -(for)f(pathname)g(expansion,)k(and)630 5230 y(the)c(list)g(of)f(matc)m -(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 -b(If)39 b(a)h(n)m(umeric)630 5340 y(argumen)m(t)31 b(is)f(supplied,)g -(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft -(glob-list-expansions)25 b(\(C-x)k(g\))630 408 y Fu(The)k(list)h(of)f -(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s(een)f(generated)h(b)m -(y)f Ft(glob-expand-word)630 518 y Fu(is)h(displa)m(y)m(ed,)h(and)e -(the)h(line)g(is)f(redra)m(wn.)50 b(If)33 b(a)h(n)m(umeric)g(argumen)m -(t)g(is)f(supplied,)h(a)g(`)p Ft(*)p Fu(')630 628 y(is)c(app)s(ended)f -(b)s(efore)h(pathname)g(expansion.)150 803 y Ft(display-shell-version) -25 b(\(C-x)k(C-v\))630 912 y Fu(Displa)m(y)j(v)m(ersion)e(information)h -(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f(Bash.)150 -1088 y Ft(shell-expand-line)c(\(M-C-e\))630 1197 y Fu(Expand)34 -b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 b(This)34 -b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630 -1307 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f -(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -1416 y(page)e(21\).)150 1592 y Ft(history-expand-line)25 -b(\(M-^\))630 1701 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)150 1876 y Ft(magic-space)d(\(\))630 -1986 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g +d(b)m(y)630 5340 y(default.)p eop end +%%Page: 130 136 +TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y Ft +(glob-complete-word)25 b(\(M-g\))630 408 y Fu(The)i(w)m(ord)h(b)s +(efore)f(p)s(oin)m(t)h(is)g(treated)h(as)f(a)h(pattern)f(for)f +(pathname)h(expansion,)g(with)g(an)630 518 y(asterisk)d(implicitly)h +(app)s(ended.)37 b(This)23 b(pattern)i(is)f(used)g(to)h(generate)h(a)e +(list)h(of)g(matc)m(hing)630 628 y(\014le)30 b(names)h(for)f(p)s +(ossible)g(completions.)150 781 y Ft(glob-expand-word)c(\(C-x)j(*\))630 +891 y Fu(The)40 b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g +(as)g(a)g(pattern)g(for)f(pathname)g(expansion,)k(and)630 +1000 y(the)c(list)g(of)f(matc)m(hing)i(\014le)e(names)g(is)h(inserted,) +h(replacing)g(the)e(w)m(ord.)67 b(If)39 b(a)h(n)m(umeric)630 +1110 y(argumen)m(t)31 b(is)f(supplied,)g(a)g(`)p Ft(*)p +Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g(expansion.)150 +1263 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 1373 +y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s +(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 1482 +y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)50 +b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p +Ft(*)p Fu(')630 1592 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)150 1746 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630 +1855 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h +(curren)m(t)f(instance)h(of)f(Bash.)150 2009 y Ft(shell-expand-line)c +(\(M-C-e\))630 2118 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h +(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g +(expansion)630 2228 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m +(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 +2337 y(page)e(22\).)150 2491 y Ft(history-expand-line)25 +b(\(M-^\))630 2600 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)150 2754 y Ft(magic-space)d(\(\))630 +2863 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g (line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630 -2096 y([History)31 b(In)m(teraction],)i(page)e(139\).)150 -2271 y Ft(alias-expand-line)26 b(\(\))630 2380 y Fu(P)m(erform)i(alias) +2973 y([History)31 b(In)m(teraction],)i(page)e(142\).)150 +3126 y Ft(alias-expand-line)26 b(\(\))630 3236 y Fu(P)m(erform)i(alias) i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(90\).)150 2556 y Ft(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 2665 y Fu(P)m(erform)30 b(history)h(and)e +([Aliases],)g(page)f(92\).)150 3390 y Ft(history-and-alias-expand)o +(-lin)o(e)24 b(\(\))630 3499 y Fu(P)m(erform)30 b(history)h(and)e (alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -2840 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -2950 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 -3125 y Ft(operate-and-get-next)25 b(\(C-o\))630 3235 +3653 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 +3762 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +3916 y Ft(operate-and-get-next)25 b(\(C-o\))630 4025 y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f (fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630 -3344 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41 -b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3520 y -Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3629 +4135 y(curren)m(t)h(line)h(from)g(the)f(history)h(for)f(editing.)79 +b(A)42 b(n)m(umeric)h(argumen)m(t,)j(if)d(supplied,)630 +4244 y(sp)s(eci\014es)30 b(the)h(history)f(en)m(try)h(to)g(use)f +(instead)g(of)h(the)f(curren)m(t)h(line.)150 4398 y Ft +(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 4507 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f (command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 -3739 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +4617 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g -Fu(as)h(the)630 3848 y(editor,)31 b(in)f(that)h(order.)150 -4113 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4272 +Fu(as)h(the)630 4727 y(editor,)31 b(in)f(that)h(order.)150 +4961 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 5121 y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h (a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 4382 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(con)m(tain)150 5230 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f (the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 4491 y(the)e Fm(posix)e -Fu(standard.)275 4642 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) -m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g -Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 -4751 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p -Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(60\).)83 b(The)150 4861 y(Readline)31 b(default)g(is)f -Ft(emacs)f Fu(mo)s(de.)275 5011 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f -(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g -(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 5121 y(had)f(t)m(yp)s -(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f -Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m -(ou)i(can)g(edit)g(the)150 5230 y(text)35 b(of)f(the)g(line)g(with)f -(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) -f(to)f(previous)g(history)f(lines)h(with)150 5340 y(`)p -Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p -Ft(j)p Fu(',)g(and)g(so)h(forth.)p eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Fs(8.6)68 -b(Programmable)47 b(Completion)150 458 y Fu(When)25 b(w)m(ord)g -(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g(a)g -(command)f(for)h(whic)m(h)f(a)h(completion)150 568 y(sp)s -(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 -b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d -Fu(builtin)j(\(see)g(Section)h(8.7)150 677 y([Programmable)h -(Completion)f(Builtins],)k(page)d(131\),)j(the)c(programmable)g -(completion)i(facilities)150 787 y(are)31 b(in)m(v)m(ok)m(ed.)275 -936 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 -b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h -(command,)150 1046 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i -(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 -b(If)44 b(the)150 1156 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h -(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an) -h(empt)m(y)150 1265 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d -Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 -1375 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g -(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 -b(no)h(compsp)s(ec)g(is)150 1484 y(found)22 b(for)g(the)h(full)g -(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f -(for)h(the)g(p)s(ortion)f(follo)m(wing)150 1594 y(the)34 -b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g -(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)150 1704 y(the)e Ft(-D)e Fu(option)i(to)g Ft(complete)d -Fu(is)j(used)e(as)i(the)g(default.)275 1853 y(Once)j(a)g(compsp)s(ec)g -(has)g(b)s(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h -(of)f(matc)m(hing)h(w)m(ords.)51 b(If)150 1963 y(a)37 -b(compsp)s(ec)f(is)g(not)h(found,)f(the)h(default)f(Bash)h(completion)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 -2072 y([Commands)30 b(F)-8 b(or)31 b(Completion],)g(page)g(124\))h(is)f -(p)s(erformed.)275 2222 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m -(y)h(the)f(compsp)s(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m -(h)e(are)h(pre\014xed)150 2331 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f -(completed)h(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f -Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150 -2441 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 +m(es)i(as)f(sp)s(eci\014ed)f(in)150 5340 y(the)e Fm(posix)e +Fu(standard.)p eop end +%%Page: 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)275 299 y(In)35 +b(order)g(to)i(switc)m(h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d +Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p +Ft(set)30 b(-o)150 408 y(emacs)p Fu(')43 b(and)h(`)p +Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h +([The)e(Set)h(Builtin],)j(page)e(61\).)83 b(The)150 518 +y(Readline)31 b(default)g(is)f Ft(emacs)f Fu(mo)s(de.)275 +650 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Ft(vi)f +Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s +(de,)g(as)h(if)f(y)m(ou)150 759 y(had)f(t)m(yp)s(ed)g(an)g(`)p +Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f Fu(switc)m(hes)i(y)m(ou)g(in)m +(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150 +869 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f +Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g +(history)f(lines)h(with)150 978 y(`)p Ft(k)p Fu(')d(and)e(subsequen)m +(t)h(lines)h(with)f(`)p Ft(j)p Fu(',)g(and)g(so)h(forth.)150 +1213 y Fs(8.6)68 b(Programmable)47 b(Completion)150 1373 +y Fu(When)25 b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f +(argumen)m(t)h(to)g(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 +1482 y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 +b Fu(\))39 b(has)h(b)s(een)f(de\014ned)f(using)h(the)h +Ft(complete)d Fu(builtin)j(\(see)g(Section)h(8.7)150 +1592 y([Programmable)h(Completion)f(Builtins],)k(page)d(133\),)j(the)c +(programmable)g(completion)i(facilities)150 1701 y(are)31 +b(in)m(v)m(ok)m(ed.)275 1833 y(First,)23 b(the)e(command)g(name)g(is)h +(iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f +(de\014ned)g(for)h(that)h(command,)150 1943 y(the)44 +b(compsp)s(ec)g(is)g(used)f(to)h(generate)i(the)e(list)g(of)g(p)s +(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 b(If)44 +b(the)150 2052 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h(string)f +(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)h(empt)m +(y)150 2162 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h +(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40 +b(If)29 b(the)g(command)g(w)m(ord)150 2271 y(is)e(a)h(full)e(pathname,) +i(a)g(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h +(for)f(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150 +2381 y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f +(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo) +m(wing)150 2490 y(the)34 b(\014nal)g(slash.)53 b(If)34 +b(those)g(searc)m(hes)i(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an) +m(y)g(compsp)s(ec)f(de\014ned)f(with)150 2600 y(the)e +Ft(-D)e Fu(option)i(to)g Ft(complete)d Fu(is)j(used)e(as)i(the)g +(default.)275 2732 y(Once)j(a)g(compsp)s(ec)g(has)g(b)s(een)f(found,)h +(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m(hing)h(w)m +(ords.)51 b(If)150 2841 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 2951 y([Commands)30 b(F)-8 b(or)31 +b(Completion],)g(page)g(126\))h(is)f(p)s(erformed.)275 +3082 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 3192 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 +3302 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m -(hes.)42 b(See)150 2550 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(71,)g(for)f(a)h(description)g(of)f -Ft(FIGNORE)p Fu(.)275 2700 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f +(hes.)42 b(See)150 3411 y(Section)31 b(5.2)h([Bash)e(V)-8 +b(ariables],)33 b(page)e(72,)g(for)f(a)h(description)g(of)f +Ft(FIGNORE)p Fu(.)275 3543 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f (b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g -Ft(-G)e Fu(option)i(are)g(generated)150 2809 y(next.)41 +Ft(-G)e Fu(option)i(are)g(generated)150 3652 y(next.)41 b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f (matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 -b(The)150 2919 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 +b(The)150 3762 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i -Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 3029 y(is)30 -b(used.)275 3178 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) +Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 3871 y(is)30 +b(used.)275 4003 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 -b(The)37 b(string)150 3288 y(is)c(\014rst)e(split)i(using)f(the)h(c)m +b(The)37 b(string)150 4113 y(is)c(\014rst)e(split)i(using)f(the)h(c)m (haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 -3397 y(honored.)56 b(Eac)m(h)37 b(w)m(ord)e(is)h(then)f(expanded)g -(using)h(brace)g(expansion,)h(tilde)f(expansion,)h(parameter)150 -3507 y(and)44 b(v)-5 b(ariable)46 b(expansion,)j(command)44 -b(substitution,)49 b(and)44 b(arithmetic)i(expansion,)j(as)c(describ)s -(ed)150 3616 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e -(Expansions],)i(page)f(21\).)61 b(The)36 b(results)h(are)g(split)f -(using)h(the)f(rules)150 3726 y(describ)s(ed)29 b(ab)s(o)m(v)m(e)i -(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(30\).) -42 b(The)30 b(results)f(of)h(the)g(expansion)150 3836 -y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f -(completed,)j(and)d(the)i(matc)m(hing)g(w)m(ords)e(b)s(ecome)i(the)150 -3945 y(p)s(ossible)g(completions.)275 4095 y(After)f(these)g(matc)m -(hes)i(ha)m(v)m(e)f(b)s(een)f(generated,)h(an)m(y)g(shell)f(function)g -(or)g(command)g(sp)s(eci\014ed)f(with)150 4204 y(the)36 -b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 -b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i -(the)e Ft(COMP_)150 4314 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p +4222 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 +4332 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 4441 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 4551 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 4660 y(results)23 b(are)h(split)g(using)f +(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7) +h([W)-8 b(ord)24 b(Splitting],)i(page)e(31\).)150 4770 +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 +4880 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f +(completions.)275 5011 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 5121 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 5230 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 4423 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 -b(ariables],)36 b(page)d(71\).)50 b(If)33 b(a)g(shell)g(function)g(is)g -(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 4533 y Ft(COMP_WORDS)j -Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 -b(When)41 b(the)h(function)f(or)h(command)f(is)150 4643 +150 5340 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(72\).)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)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(COMP_WORDS)39 +b 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 408 y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h (name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 -4752 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g +518 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g (w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150 -4862 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s +628 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s (eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65 -b(No)150 4971 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g +b(No)150 737 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g (against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f -(the)150 5081 y(function)d(or)g(command)h(has)f(complete)i(freedom)e -(in)g(generating)h(the)g(matc)m(hes.)275 5230 y(An)m(y)j(function)h(sp) -s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 +(the)150 847 y(function)d(or)g(command)h(has)f(complete)i(freedom)e(in) +g(generating)h(the)g(matc)m(hes.)275 981 y(An)m(y)j(function)h(sp)s +(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 -5340 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d +1090 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) -i(Section)f(8.7)p eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y([Programmable)31 -b(Completion)h(Builtins],)f(page)h(131\),)g(to)g(generate)g(the)f(matc) -m(hes.)42 b(It)31 b(m)m(ust)g(put)f(the)150 408 y(p)s(ossible)g -(completions)h(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 -b(ariable,)31 b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 -542 y(Next,)26 b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h -Ft(-C)f Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m -(t)h(equiv)-5 b(alen)m(t)150 652 y(to)26 b(command)e(substitution.)39 +i(Section)f(8.7)150 1200 y([Programmable)31 b(Completion)h(Builtins],)f +(page)h(133\),)g(to)g(generate)g(the)f(matc)m(hes.)42 +b(It)31 b(m)m(ust)g(put)f(the)150 1310 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 1443 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 1553 y(to)26 b(command)e(substitution.)39 b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s -(er)f(line,)j(to)f(the)f(standard)150 762 y(output.)40 +(er)f(line,)j(to)f(the)f(standard)150 1663 y(output.)40 b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f -(newline,)h(if)f(necessary)-8 b(.)275 896 y(After)24 +(newline,)h(if)f(necessary)-8 b(.)275 1797 y(After)24 b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m (y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e -Fu(option)150 1005 y(is)34 b(applied)g(to)g(the)h(list.)52 +Fu(option)150 1906 y(is)34 b(applied)g(to)g(the)h(list.)52 b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g -(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 1115 +(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 2016 y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h (b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p -Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 1224 y(with)38 +Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 2125 y(with)38 b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s (efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 -1334 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m +2235 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m (ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p -Fu(')f(negates)i(the)f(pattern;)150 1443 y(in)d(this)g(case)h(an)m(y)g +Fu(')f(negates)i(the)f(pattern;)150 2345 y(in)d(this)g(case)h(an)m(y)g (completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m -(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 1553 y +(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 2454 y Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(64\))h(is)150 1663 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e +(65\))h(is)150 2564 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e (without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m -(haracters.)275 1797 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f +(haracters.)275 2698 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f (su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g -Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1906 +Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 2807 y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 -2016 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 -2150 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h +2917 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 +3051 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h (an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d -Fu(op-)150 2259 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d +Fu(op-)150 3160 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h -(completion)150 2369 y(is)h(attempted.)275 2503 y(If)35 +(completion)150 3270 y(is)h(attempted.)275 3404 y(If)35 b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 -2612 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h +3513 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h (matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 -2722 y(other)31 b(actions.)275 2856 y(By)g(default,)i(if)e(a)h(compsp)s +3623 y(other)31 b(actions.)275 3757 y(By)g(default,)i(if)e(a)h(compsp)s (ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h -(the)g(completion)150 2966 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g +(the)g(completion)150 3867 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g (p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions) -h(are)g(not)f(attempted,)150 3075 y(and)30 b(the)g(Readline)h(default)f +h(are)g(not)f(attempted,)150 3976 y(and)30 b(the)g(Readline)h(default)f (of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 -b(the)i Ft(-o)e(bashdefault)e Fu(option)150 3185 y(w)m(as)d(supplied)e +b(the)i Ft(-o)e(bashdefault)e Fu(option)150 4086 y(w)m(as)d(supplied)e (to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g -(the)f(default)h(Bash)g(completions)h(are)150 3294 y(attempted)j(if)f +(the)f(default)h(Bash)g(completions)h(are)150 4195 y(attempted)j(if)f (the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f -(to)150 3404 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i +(to)150 4305 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i (de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s -(erformed)150 3513 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) +(erformed)150 4415 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.) -275 3647 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g +275 4548 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g (name)f(completion)h(is)f(desired,)i(the)e(programmable)150 -3757 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d +4658 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d (a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150 -3867 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 +4768 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories) -45 b Fu(Readline)c(v)-5 b(ariable,)150 3976 y(regardless)31 +45 b Fu(Readline)c(v)-5 b(ariable,)150 4877 y(regardless)31 b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 -b Fu(Readline)31 b(v)-5 b(ariable.)275 4110 y(There)25 +b Fu(Readline)31 b(v)-5 b(ariable.)275 5011 y(There)25 b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f (completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150 -4220 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) +5121 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f -(for)g(shell)150 4329 y(functions)28 b(executed)h(as)f(completion)i +(for)g(shell)150 5230 y(functions)28 b(executed)h(as)f(completion)i (handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h -(retried)g(b)m(y)150 4439 y(returning)j(an)i(exit)g(status)f(of)h(124.) +(retried)g(b)m(y)150 5340 y(returning)j(an)i(exit)g(status)f(of)h(124.) 48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j -(the)e(compsp)s(ec)150 4548 y(asso)s(ciated)43 b(with)e(the)g(command)g -(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e -(as)i(the)150 4658 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f -(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the) -150 4768 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) -e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g -(set)g(of)150 4877 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) -i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g -(loaded)150 4987 y(all)g(at)g(once.)275 5121 y(F)-8 b(or)38 -b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp) -s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 -5230 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e -(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150 -5340 y(load)31 b(completions)g(dynamically:)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(131)390 299 y Ft -(_completion_loader\(\))390 408 y({)581 518 y(.)47 b -("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g -(return)f(124)390 628 y(})390 737 y(complete)g(-D)h(-F)g -(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 -972 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 -1131 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 +(the)e(compsp)s(ec)p eop end +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(133)150 299 y(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 408 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 +518 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 628 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 737 y(all)g(at)g(once.)275 869 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 978 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 1088 y(load)31 +b(completions)g(dynamically:)390 1219 y Ft(_completion_loader\(\))390 +1329 y({)581 1439 y(.)47 b("/etc/bash_completion.d/$1)o(.sh)o(")42 +b(>/dev/null)j(2>&1)i(&&)g(return)f(124)390 1548 y(})390 +1658 y(complete)g(-D)h(-F)g(_completion_loader)c(-o)k(bashdefault)e(-o) +i(default)150 1893 y Fs(8.7)68 b(Programmable)47 b(Completion)f +(Builtins)150 2052 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h -(facilities:)150 1241 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f +(facilities:)150 2162 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f (argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f -(completed,)j(and)d(t)m(w)m(o)150 1351 y(to)e(mo)s(dify)f(the)g -(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1504 y -Ft(compgen)870 1636 y(compgen)46 b([)p Fj(option)p Ft(])f([)p -Fj(word)p Ft(])630 1767 y Fu(Generate)27 b(p)s(ossible)e(completion)i +(completed,)j(and)d(t)m(w)m(o)150 2271 y(to)e(mo)s(dify)f(the)g +(completion)i(as)e(it)h(is)g(happ)s(ening.)150 2425 y +Ft(compgen)870 2556 y(compgen)46 b([)p Fj(option)p Ft(])f([)p +Fj(word)p Ft(])630 2688 y Fu(Generate)27 b(p)s(ossible)e(completion)i (matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g -Fr(option)p Fu(s,)h(whic)m(h)630 1877 y(ma)m(y)32 b(b)s(e)f(an)m(y)h +Fr(option)p Fu(s,)h(whic)m(h)630 2797 y(ma)m(y)32 b(b)s(e)f(an)m(y)h (option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g -(the)g(exception)i(of)f Ft(-p)630 1986 y Fu(and)39 b +(the)g(exception)i(of)f Ft(-p)630 2907 y Fu(and)39 b Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f -(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2096 +(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 3017 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g -(completion)630 2206 y(facilities,)g(while)d(a)m(v)-5 +(completion)630 3126 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5 -b(alues.)630 2337 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h +b(alues.)630 3258 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h (in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630 -2447 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e -(a)h(completion)h(sp)s(eci\014cation)f(with)630 2556 +3367 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 3477 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s (eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g -Fr(w)m(ord)j Fu(will)630 2666 y(b)s(e)d(displa)m(y)m(ed.)630 -2797 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +Fr(w)m(ord)j Fu(will)630 3586 y(b)s(e)d(displa)m(y)m(ed.)630 +3718 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m -(ere)630 2907 y(generated.)150 3060 y Ft(complete)870 -3192 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3302 y(G)h -Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3411 +(ere)630 3828 y(generated.)150 3981 y Ft(complete)870 +4113 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 4222 y(G)h +Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 4332 y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h -Fj(filterpat)p Ft(])870 3521 y([-P)g Fj(prefix)p Ft(])f([-S)h +Fj(filterpat)p Ft(])870 4441 y([-P)g Fj(prefix)p Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870 -3630 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 -3762 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g +4551 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 +4682 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38 -b(the)f Ft(-p)g Fu(option)630 3871 y(is)30 b(supplied,)e(or)i(if)g(no)f +b(the)f Ft(-p)g Fu(option)630 4792 y(is)30 b(supplied,)e(or)i(if)g(no)f (options)h(are)g(supplied,)f(existing)h(completion)h(sp)s -(eci\014cations)g(are)630 3981 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(eci\014cations)g(are)630 4902 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g (that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 -b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4091 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 5011 y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 -b(are)h(supplied,)g(all)g(com-)630 4200 y(pletion)k(sp)s +b(are)h(supplied,)g(all)g(com-)630 5121 y(pletion)k(sp)s (eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f -(the)h(remaining)f(options)h(and)630 4310 y(actions)27 +(the)h(remaining)f(options)h(and)630 5230 y(actions)27 b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k -(that)e(is,)g(completion)630 4419 y(attempted)g(on)f(a)h(command)f(for) +(that)e(is,)g(completion)630 5340 y(attempted)g(on)f(a)h(command)f(for) g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) -630 4529 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g -(remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630 -4639 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f -(completion)i(attempted)f(on)g(a)f(blank)g(line.)630 -4770 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s -(eci\014cations)h(when)d(w)m(ord)i(completion)630 4880 -y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f -(Section)g(8.6)g([Programmable)g(Completion],)630 4989 -y(page)31 b(129\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h -(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 5121 y(Other)d(options,)i +p eop end +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y(The)25 +b Ft(-E)g Fu(option)h(indicates)h(that)f(the)g(remaining)g(options)g +(and)f(actions)i(should)e(apply)g(to)630 408 y(\\empt)m(y")32 +b(command)e(completion;)i(that)f(is,)f(completion)i(attempted)f(on)g(a) +f(blank)g(line.)630 542 y(The)f(pro)s(cess)g(of)h(applying)g(these)g +(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i(completion)630 +651 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f +(Section)g(8.6)g([Programmable)g(Completion],)630 761 +y(page)31 b(131\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h +(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 894 y(Other)d(options,)i (if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 -b(The)29 b(argumen)m(ts)g(to)h(the)630 5230 y Ft(-G)p +b(The)29 b(argumen)m(ts)g(to)h(the)630 1003 y Ft(-G)p Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f (necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h -Fu(options\))h(should)f(b)s(e)630 5340 y(quoted)28 b(to)h(protect)g +Fu(options\))h(should)f(b)s(e)630 1113 y(quoted)28 b(to)h(protect)g (them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e -Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(132)630 299 y Ft(-o)30 -b Fj(comp-option)1110 408 y Fu(The)c Fr(comp-option)i +Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 1270 y Ft(-o)i +Fj(comp-option)1110 1379 y Fu(The)c Fr(comp-option)i Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g -(b)s(eha)m(v-)1110 518 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(b)s(eha)m(v-)1110 1489 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h (generation)h(of)e(completions.)41 b Fr(comp-option)27 -b Fu(ma)m(y)1110 628 y(b)s(e)j(one)g(of:)1110 782 y Ft(bashdefault)1590 -892 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h -(completions)g(if)g(the)1590 1002 y(compsp)s(ec)i(generates)i(no)e -(matc)m(hes.)1110 1156 y Ft(default)144 b Fu(Use)22 b(Readline's)g -(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590 -1266 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -1421 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h -(completion)g(if)f(the)g(compsp)s(ec)1590 1530 y(generates)32 -b(no)e(matc)m(hes.)1110 1685 y Ft(filenames)1590 1794 +b Fu(ma)m(y)1110 1598 y(b)s(e)j(one)g(of:)1110 1755 y +Ft(bashdefault)1590 1864 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g +(default)f(Bash)h(completions)g(if)g(the)1590 1974 y(compsp)s(ec)i +(generates)i(no)e(matc)m(hes.)1110 2131 y Ft(default)144 +b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g +(the)g(comp-)1590 2240 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +2397 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h +(completion)g(if)f(the)g(compsp)s(ec)1590 2506 y(generates)32 +b(no)e(matc)m(hes.)1110 2663 y Ft(filenames)1590 2772 y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j -(\014lenames,)1590 1904 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(\014lenames,)1590 2882 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h (\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590 -2014 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s -(ecial)g(c)m(har-)1590 2123 y(acters,)39 b(or)d(suppressing)f(trailing) -i(spaces\).)59 b(This)35 b(option)i(is)1590 2233 y(in)m(tended)30 +2992 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s +(ecial)g(c)m(har-)1590 3101 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 3211 y(in)m(tended)30 b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with) -1590 2342 y Ft(-F)p Fu(.)1110 2497 y Ft(noquote)144 b +1590 3320 y Ft(-F)p Fu(.)1110 3477 y Ft(noquote)144 b Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m -(ords)f(if)h(they)1590 2607 y(are)j(\014lenames)f(\(quoting)h -(\014lenames)g(is)f(the)h(default\).)1110 2761 y Ft(nosort)192 +(ords)f(if)h(they)1590 3587 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 3743 y Ft(nosort)192 b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s -(ossible)g(completions)1590 2871 y(alphab)s(etically)-8 -b(.)1110 3026 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(ossible)g(completions)1590 3853 y(alphab)s(etically)-8 +b(.)1110 4009 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g (to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590 -3135 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 -3290 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d -(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3400 y(ated,)g +4119 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 +4275 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d +(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 4385 y(ated,)g (directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 -3509 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h -(other)g(actions.)630 3664 y Ft(-A)f Fj(action)66 b Fu(The)25 +4495 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h +(other)g(actions.)630 4651 y Ft(-A)f Fj(action)66 b Fu(The)25 b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e -(generate)i(a)e(list)h(of)f(p)s(ossible)1110 3773 y(completions:)1110 -3928 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 4761 y(completions:)1110 +4917 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110 -4083 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 -b(names.)1110 4238 y Ft(binding)144 b Fu(Readline)30 +5074 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 +b(names.)1110 5230 y Ft(binding)144 b Fu(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 -4347 y(Readline)h(Commands],)f(page)h(119\).)1110 4502 -y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 -b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4612 -y(as)31 b Ft(-b)p Fu(.)1110 4766 y Ft(command)144 b Fu(Command)29 -b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i -Ft(-c)p Fu(.)1110 4921 y Ft(directory)1590 5031 y Fu(Directory)h -(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g -Ft(-d)p Fu(.)1110 5185 y Ft(disabled)96 b Fu(Names)31 -b(of)g(disabled)f(shell)g(builtins.)1110 5340 y Ft(enabled)144 -b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)p eop -end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(133)1110 299 y Ft(export)192 -b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49 -b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 408 y(\014ed)d(as)g -Ft(-e)p Fu(.)1110 567 y Ft(file)288 b Fu(File)32 b(names.)40 +5340 y(Readline)h(Commands],)f(page)h(121\).)p eop end +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(135)1110 299 y Ft(builtin)144 +b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 b(Ma)m(y)21 +b(also)h(b)s(e)e(sp)s(eci\014ed)1590 408 y(as)31 b Ft(-b)p +Fu(.)1110 581 y Ft(command)144 b Fu(Command)29 b(names.)41 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-c)p +Fu(.)1110 753 y Ft(directory)1590 862 y Fu(Directory)h(names.)40 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-d)p +Fu(.)1110 1035 y Ft(disabled)96 b Fu(Names)31 b(of)g(disabled)f(shell)g +(builtins.)1110 1207 y Ft(enabled)144 b Fu(Names)31 b(of)g(enabled)f +(shell)g(builtins.)1110 1379 y Ft(export)192 b Fu(Names)34 +b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49 b(Ma)m(y)35 +b(also)e(b)s(e)g(sp)s(eci-)1590 1489 y(\014ed)d(as)g +Ft(-e)p Fu(.)1110 1661 y Ft(file)288 b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-f)p -Fu(.)1110 725 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f(functions.) -1110 883 y Ft(group)240 b Fu(Group)30 b(names.)40 b(Ma)m(y)32 -b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-g)p Fu(.)1110 -1042 y Ft(helptopic)1590 1151 y Fu(Help)37 b(topics)g(as)g(accepted)h -(b)m(y)e(the)h Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 -1261 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(49\).)1110 -1419 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f -(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1529 y(the)55 -b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 1638 y(V)-8 b(ariables],)32 b(page)f(71\).)1110 -1797 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f -(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 -1906 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2064 y Ft(keyword)144 -b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 -b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110 -2223 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f -(con)m(trol)h(is)g(activ)m(e.)1110 2381 y Ft(service)144 -b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s -(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2539 y Ft(setopt)192 -b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e -Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2649 -y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(60\).) -1110 2807 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +Fu(.)1110 1833 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f +(functions.)1110 2005 y Ft(group)240 b Fu(Group)30 b(names.)40 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-g)p +Fu(.)1110 2178 y Ft(helptopic)1590 2287 y Fu(Help)37 +b(topics)g(as)g(accepted)h(b)m(y)e(the)h Ft(help)f Fu(builtin)g(\(see)h +(Sec-)1590 2397 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(50\).) +1110 2569 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 +b(tak)m(en)h(from)f(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 +2679 y(the)55 b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 +b(\(see)g(Section)g(5.2)h([Bash)1590 2788 y(V)-8 b(ariables],)32 +b(page)f(72\).)1110 2960 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f +(con)m(trol)i(is)f(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s +(eci-)1590 3070 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 3242 +y Ft(keyword)144 b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p +Fu(.)1110 3414 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i +(if)h(job)f(con)m(trol)h(is)g(activ)m(e.)1110 3587 y +Ft(service)144 b Fu(Service)31 b(names.)41 b(Ma)m(y)31 +b(also)g(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 +3759 y Ft(setopt)192 b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h +Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 +3868 y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f +(61\).)1110 4041 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g (accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590 -2917 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(49\).) -1110 3075 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 -3233 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g -(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3392 y Ft(user)288 +4150 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).) +1110 4322 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 +4495 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g +(job)g(con)m(trol)i(is)f(activ)m(e.)1110 4667 y Ft(user)288 b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i Ft(-u)p Fu(.)1110 3550 y Ft(variable)96 b Fu(Names)36 +(as)i Ft(-u)p Fu(.)1110 4839 y Ft(variable)96 b Fu(Names)36 b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37 -b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3660 y Ft(-v)p -Fu(.)630 3818 y Ft(-C)30 b Fj(command)1110 3927 y Fr(command)35 +b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 4949 y Ft(-v)p +Fu(.)630 5121 y Ft(-C)30 b Fj(command)1110 5230 y Fr(command)35 b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f -(its)g(output)g(is)1110 4037 y(used)e(as)g(the)h(p)s(ossible)f -(completions.)630 4195 y Ft(-F)g Fj(function)1110 4305 -y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f -(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 4415 y(ronmen)m(t.)72 -b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g -(command)1110 4524 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f -(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110 -4634 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h -(w)m(ord)f(b)s(eing)h(completed,)1110 4743 y(as)g(describ)s(ed)f(ab)s -(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110 -4853 y(page)30 b(129\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s -(ossible)g(completions)h(are)g(retriev)m(ed)1110 4963 -y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e -Fu(arra)m(y)j(v)-5 b(ariable.)630 5121 y Ft(-G)30 b Fj(globpat)1110 -5230 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g -Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 5340 -y(the)31 b(p)s(ossible)e(completions.)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y Ft(-P)30 -b Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s -(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 -408 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -567 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +(its)g(output)g(is)1110 5340 y(used)e(as)g(the)h(p)s(ossible)f +(completions.)p eop end +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(136)630 299 y Ft(-F)30 +b Fj(function)1110 408 y Fu(The)39 b(shell)g(function)g +Fr(function)g Fu(is)g(executed)h(in)f(the)g(curren)m(t)g(shell)g(en)m +(vi-)1110 518 y(ronmen)m(t.)72 b(When)41 b(it)g(is)g(executed,)k($1)c +(is)g(the)g(name)g(of)g(the)g(command)1110 628 y(whose)34 +b(argumen)m(ts)h(are)g(b)s(eing)f(completed,)j($2)e(is)f(the)h(w)m(ord) +f(b)s(eing)g(com-)1110 737 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m +(ord)g(preceding)f(the)h(w)m(ord)f(b)s(eing)h(completed,)1110 +847 y(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(\(see)g(Section)f(8.6)h +([Programmable)g(Completion],)1110 956 y(page)30 b(131\).)42 +b(When)29 b(it)h(\014nishes,)e(the)h(p)s(ossible)g(completions)h(are)g +(retriev)m(ed)1110 1066 y(from)g(the)g(v)-5 b(alue)31 +b(of)g(the)f Ft(COMPREPLY)e Fu(arra)m(y)j(v)-5 b(ariable.)630 +1240 y Ft(-G)30 b Fj(globpat)1110 1350 y Fu(The)39 b(\014lename)h +(expansion)g(pattern)g Fr(globpat)j Fu(is)d(expanded)f(to)h(generate) +1110 1459 y(the)31 b(p)s(ossible)e(completions.)630 1633 +y Ft(-P)h Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f +(b)s(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 +1743 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +1917 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g -(other)g(options)1110 677 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -835 y Ft(-W)h Fj(wordlist)1110 945 y Fu(The)24 b Fr(w)m(ordlist)k +(other)g(options)1110 2027 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +2201 y Ft(-W)h Fj(wordlist)1110 2310 y Fu(The)24 b Fr(w)m(ordlist)k Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1054 y(as)36 +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 2420 y(as)36 b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h -(expanded.)57 b(The)35 b(p)s(ossible)1110 1164 y(completions)c(are)e +(expanded.)57 b(The)35 b(p)s(ossible)1110 2529 y(completions)c(are)e (the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f -(matc)m(h)i(the)1110 1274 y(w)m(ord)f(b)s(eing)g(completed.)630 -1432 y Ft(-X)g Fj(filterpat)1110 1542 y Fr(\014lterpat)d +(matc)m(h)i(the)1110 2639 y(w)m(ord)f(b)s(eing)g(completed.)630 +2813 y Ft(-X)g Fj(filterpat)1110 2923 y Fr(\014lterpat)d Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 -b(It)25 b(is)g(applied)f(to)1110 1651 y(the)30 b(list)f(of)h(p)s +b(It)25 b(is)g(applied)f(to)1110 3032 y(the)30 b(list)f(of)h(p)s (ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) -1110 1761 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m -(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1871 +1110 3142 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 3251 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) -1110 1980 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g -Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2139 y(The)35 +1110 3361 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 3535 y(The)35 b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 -2248 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +3645 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 -2358 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +3754 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) -630 2468 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 2626 y Ft(compopt)870 2760 y(compopt)46 +630 3864 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 4038 y Ft(compopt)870 4180 y(compopt)46 b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p -Ft(])f([)p Fj(name)p Ft(])630 2894 y Fu(Mo)s(dify)33 +Ft(])f([)p Fj(name)p Ft(])630 4321 y Fu(Mo)s(dify)33 b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 -3004 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +4431 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fr(option)p Fu(s)h(are)630 3114 y(giv)m(en,)30 b(displa)m(y)e(the)g +Fr(option)p Fu(s)h(are)630 4541 y(giv)m(en,)30 b(displa)m(y)e(the)g (completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b -Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3223 y(The)f(p)s(ossible) +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 4650 y(The)f(p)s(ossible) g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 -3333 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h +4760 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h (that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630 -3442 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g -(attempted)g(on)f(a)g(command)630 3552 y(for)g(whic)m(h)g(no)g +4869 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g +(attempted)g(on)f(a)g(command)630 4979 y(for)g(whic)m(h)g(no)g (completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 -b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3662 y(that)24 +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 5089 y(that)24 b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g -(command)e(completion;)k(that)630 3771 y(is,)k(completion)g(attempted)h -(on)e(a)h(blank)f(line.)630 3905 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i -(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4039 y(The)23 +(command)e(completion;)k(that)630 5198 y(is,)k(completion)g(attempted)h +(on)e(a)h(blank)f(line.)630 5340 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i +(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)p eop end +%%Page: 137 143 +TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(137)630 299 y(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f(made)630 -4149 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h -Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f -(exists,)630 4259 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 -4499 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -4658 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h -(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i -(default)150 4768 y(actions)29 b Ft(complete)d Fu(and)i -Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g -(and)g(bind)e(it)j(to)g(a)g(particular)150 4877 y(command)h(using)g -Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) -m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 -b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)e(of)f -(what)g(shell)g(functions)g(m)m(ust)f(do)h(when)f(used)h(for)f -(completion.)42 b(This)29 b(function)h(uses)g(the)150 -5230 y(w)m(ord)38 b(passsed)g(as)h Ft($2)g Fu(to)g(determine)g(the)g -(directory)g(name)g(to)g(complete.)67 b(Y)-8 b(ou)40 -b(can)f(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)28 -b Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g -(indexed)g(b)m(y)g(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p -eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(135)275 299 y(The)42 +408 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h Fr(name)k +Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f(exists,) +630 518 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 772 +y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +931 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h(additional) +g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i(default)150 +1041 y(actions)29 b Ft(complete)d Fu(and)i Ft(compgen)e +Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g(and)g(bind)e(it) +j(to)g(a)g(particular)150 1151 y(command)h(using)g Ft(complete)e(-F)p +Fu(.)275 1294 y(The)j(follo)m(wing)j(function)e(pro)m(vides)g +(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 b(It)32 +b(is)h(a)f(reasonably)h(go)s(o)s(d)150 1403 y(example)41 +b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g +(completion.)73 b(This)39 b(function)h(uses)150 1513 +y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f +(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32 +b(can)g(also)g(use)g(the)150 1623 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 +b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g +(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 1766 y(The)42 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 1875 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g -(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g -([Tilde)g(Expansion],)g(page)g(22\),)i(searc)m(hing)e(directories)g(in) -e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed) -e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f -(Builtins],)j(page)e(42\),)j(and)c(basic)h(supp)s(ort)150 -737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h -(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(64\).)46 -b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +(names:)38 b(tilde)150 1985 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +([Tilde)g(Expansion],)g(page)g(23\),)i(searc)m(hing)e(directories)g(in) +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 2095 y(whic)m(h)21 b(is)h(describ)s +(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f +(Builtins],)j(page)e(43\),)j(and)c(basic)h(supp)s(ort)150 +2204 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(65\).)46 +b Ft(_comp_)150 2314 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 b(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 +2423 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 2533 y(line.)275 2676 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 +2786 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 +2895 y(the)h(function)f(returns.)390 3039 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 3148 y(#)g(based)g(on)g(the)g (cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) -390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g -(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h -(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581 -2491 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f -(tilde)g(to)h(full)g(pathname)581 2600 y(case)g("$2")f(in)581 -2710 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 -y(*\))286 b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e +390 3258 y(_comp_cd\(\))390 3367 y({)581 3477 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 3587 y(local)g(cur)h +(_skipdot)f(_cdpath)581 3696 y(local)g(i)i(j)f(k)581 +3915 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f +(tilde)g(to)h(full)g(pathname)581 4025 y(case)g("$2")f(in)581 +4134 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 4244 +y(*\))286 b(cur=$2)46 b(;;)581 4354 y(esac)581 4573 y(#)h(no)h(cdpath)e (or)h(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 -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) +4682 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h +(@\(./*|../*|/*\))d(]];)j(then)772 4792 y(#)g(compgen)f(prints)g(paths) h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 -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 +4902 y(IFS=$'\\n')772 5011 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g +("$cur"\))f(\))772 5121 y(IFS=$')g(\\t\\n')581 5230 y(#)h (CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i -(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134 -y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d -(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:}) -772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y -(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963 -5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 5230 y(done)772 5340 y(done)p eop end -%%Page: 136 142 -TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(136)772 299 y Ft($_skipdot)45 -b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g +(CDPATH)581 5340 y(else)p eop end +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(138)772 299 y Ft(IFS=$'\\n')772 +408 y(_skipdot=false)772 518 y(#)47 b(preprocess)e(CDPATH)h(to)i +(convert)d(null)i(directory)e(names)i(to)g(.)772 628 +y(_cdpath=${CDPATH/#:/.:})772 737 y(_cdpath=${_cdpath//::/:.)o(:})772 +847 y(_cdpath=${_cdpath/\045:/:.})772 956 y(for)g(i)g(in)g +(${_cdpath//:/$'\\n'};)c(do)963 1066 y(if)k([[)g($i)g(-ef)g(.)h(]];)f +(then)f(_skipdot=true;)e(fi)963 1176 y(k="${#COMPREPLY[@]}")963 +1285 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) +1154 1395 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) +963 1504 y(done)772 1614 y(done)772 1724 y($_skipdot)f(||)i +(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 +1833 y(IFS=$')g(\\t\\n')581 1943 y(fi)581 2162 y(#)h(variable)f(names)g (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 +2271 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c +(-eq)k(0)g(]];)g(then)772 2381 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g +("$cur"\))f(\))581 2491 y(fi)581 2710 y(return)g(0)390 +2819 y(})275 2973 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h (function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p -Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f -(and)i(append)f(slashes)g(to)h(directories;)390 1773 +Fu(:)390 3126 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f +(and)i(append)f(slashes)g(to)h(directories;)390 3236 y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33 +(arguments)390 3345 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h +(bashdefault)e(-F)i(_comp_cd)f(cd)150 3499 y Fu(Since)33 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 +3608 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f (Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39 -b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g +b Fu(option)150 3718 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g (completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d -(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34 +(quoted)150 3828 y(appropriately)-8 b(.)53 b(That)34 b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash) -g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories) +g(to)h(\014lenames)g(it)g(can)150 3937 y(determine)i(are)g(directories) h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g -(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565 +(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 4047 y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g -(completions)h(are)150 2675 y(directories\).)45 b(The)31 +(completions)h(are)150 4156 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 +(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 4266 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 +4376 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g -(to)h(the)g(default)150 3004 y(Readline)40 b(set.)68 +(to)h(the)g(default)150 4485 y(Readline)40 b(set.)68 b(These)39 b(include)g(things)g(lik)m(e)i(command)e(name)g(completion,) -44 b(v)-5 b(ariable)40 b(completion)150 3113 y(for)i(w)m(ords)g(b)s +44 b(v)-5 b(ariable)40 b(completion)150 4595 y(for)i(w)m(ords)g(b)s (eginning)f(with)h(`)p Ft({)p Fu(',)k(completions)e(con)m(taining)f -(pathname)g(expansion)f(patterns)g(\(see)150 3223 y(Section)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)i(30\),)f(and)f(so)h(on.)275 -3357 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h +(pathname)g(expansion)f(patterns)g(\(see)150 4704 y(Section)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)i(31\),)f(and)f(so)h(on.)275 +4858 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m(e)g -(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h -Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g +(attempt)h(w)m(ord)150 4967 y(completion)32 b(for)e(a)h +Ft(cd)e Fu(command.)275 5121 y(Man)m(y)34 b(more)g(examples)g({)g(an)g (extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g -(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g +(common)150 5230 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g (a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p -2943 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 5230 28 4 v 39 w(completion)i(pro)5 b(ject.)150 +5340 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g -(Ian)150 3930 y(Macdonald,)44 b(the)d(pro)5 b(ject)41 -b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 b(/)g(/)g(bash-completion)g(.)g -(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 4040 -y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g(as)h -(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 b(older)h(v)m(ersion)h -(of)f(the)g(bash)p 1532 4174 V 40 w(completion)h(pac)m(k)-5 -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 -b(.)p eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 3614 -116 a Fu(137)150 299 +(Ian)p eop end +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(139)150 299 y(Macdonald,)44 +b(the)d(pro)5 b(ject)41 b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 +b(/)g(/)g(bash-completion)g(.)g(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h +Fu(.)150 408 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc) +m(h)g(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 543 y(An)54 +b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 543 28 +4 v 40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h +(bash)f(in)h(the)150 653 y Ft(examples/complete)26 b +Fu(sub)s(directory)-8 b(.)p eop end +%%Page: 140 146 +TeXDict begin 140 145 bop 3614 -116 a Fu(140)150 299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 -498 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) +554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 -b(,)50 b(from)42 b(a)h(user's)150 607 y(standp)s(oin)m(t.)76 +b(,)50 b(from)42 b(a)h(user's)150 664 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150 -717 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 944 y -Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 -1103 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) +774 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025 +y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 +1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e -(Set)150 1213 y(Builtin],)32 b(page)g(60\),)h(the)e(shell)h(pro)m +(Set)150 1294 y(Builtin],)32 b(page)g(61\),)h(the)e(shell)h(pro)m (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h -(of)f(commands)150 1322 y(previously)h(t)m(yp)s(ed.)47 +(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e -(of)i(com-)150 1432 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(of)i(com-)150 1513 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d -Fu(commands)i(\(default)g(500\))150 1541 y(is)h(sa)m(v)m(ed.)61 +Fu(commands)i(\(default)g(500\))150 1623 y(is)h(sa)m(v)m(ed.)61 b(The)36 b(shell)h(stores)h(eac)m(h)g(command)e(in)h(the)g(history)g (list)g(prior)f(to)i(parameter)f(and)f(v)-5 b(ari-)150 -1651 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g +1732 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g (p)s(erformed,)e(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)33 -b(of)g(the)g(shell)150 1760 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d -Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1888 y(When)g(the)g(shell)h(starts)g +b(of)g(the)g(shell)150 1842 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d +Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1984 y(When)g(the)g(shell)h(starts)g (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g -(b)m(y)h(the)f Ft(HISTFILE)150 1998 y Fu(v)-5 b(ariable)26 +(b)m(y)h(the)f Ft(HISTFILE)150 2093 y Fu(v)-5 b(ariable)26 b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24 b(\014le)i(named)e(b)m(y)h(the)h(v)-5 b(alue)25 b(of)h -Ft(HISTFILE)c Fu(is)k(truncated,)150 2107 y(if)42 b(necessary)-8 +Ft(HISTFILE)c Fu(is)k(truncated,)150 2203 y(if)42 b(necessary)-8 b(,)45 b(to)e(con)m(tain)g(no)f(more)g(than)f(the)h(n)m(um)m(b)s(er)f (of)h(lines)g(sp)s(eci\014ed)f(b)m(y)h(the)g(v)-5 b(alue)42 -b(of)g(the)150 2217 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 +b(of)g(the)150 2312 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last) -h Ft($HISTSIZE)c Fu(lines)150 2326 y(are)35 b(copied)g(from)g(the)g +h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d -Fu(shell)150 2436 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h -([Bash)f(Builtins],)h(page)g(49\),)h(the)e(lines)g(are)g(app)s(ended)e -(to)i(the)g(history)150 2545 y(\014le,)36 b(otherwise)f(the)g(history)f +Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h +([Bash)f(Builtins],)h(page)g(50\),)h(the)e(lines)g(are)g(app)s(ended)e +(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 -2655 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 +2751 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 b(After)34 b(sa)m(ving)g(the)f(history)-8 b(,)34 b(the)g(history)f -(\014le)g(is)g(truncated)150 2765 y(to)g(con)m(tain)h(no)f(more)g(than) +(\014le)g(is)g(truncated)150 2860 y(to)g(con)m(tain)h(no)f(more)g(than) f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c -Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2874 +Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2970 y(non-n)m(umeric)c(v)-5 b(alue,)31 b(or)f(a)h(n)m(umeric)f(v)-5 b(alue)31 b(less)g(than)f(zero,)h(the)g(history)f(\014le)h(is)f(not)h -(truncated.)275 3002 y(If)g(the)h Ft(HISTTIMEFORMAT)d +(truncated.)275 3112 y(If)g(the)h Ft(HISTTIMEFORMAT)d Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3111 y(en)m(try)d(is)h(written)f(to)h(the)f +e(eac)m(h)h(history)150 3221 y(en)m(try)d(is)h(written)f(to)h(the)f (history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c) -m(haracter.)43 b(When)30 b(the)150 3221 y(history)22 +m(haracter.)43 b(When)30 b(the)150 3331 y(history)22 b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h (commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150 -3330 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h +3440 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h (for)f(the)h(follo)m(wing)h(history)e(en)m(try)-8 b(.)275 -3458 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f +3582 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f (to)i(list)g(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h -(history)150 3567 y(list.)41 b(The)27 b Ft(history)f +(history)150 3692 y(list.)41 b(The)27 b Ft(history)f Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f -(the)h(history)g(list)h(and)f(manipulate)150 3677 y(the)j(history)g +(the)h(history)g(list)h(and)f(manipulate)150 3801 y(the)j(history)g (\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f (commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150 -3787 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g +3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g (history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 -b(or)150 3896 y(History],)31 b(page)h(120\).)275 4024 +b(or)150 4020 y(History],)31 b(page)h(122\).)275 4162 y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e (commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 -b(The)150 4133 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e +b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g -(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4243 +(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4381 y(of)e(the)g(commands)f(en)m(tered.)40 b(The)26 b Ft(cmdhist)f Fu(shell)i(option,)h(if)f(enabled,)g(causes)h(the)e(shell)h(to)h -(attempt)150 4352 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m +(attempt)150 4491 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m (ulti-line)g(command)f(in)g(the)h(same)f(history)g(en)m(try)-8 -b(,)25 b(adding)d(semicolons)h(where)150 4462 y(necessary)37 +b(,)25 b(adding)d(semicolons)h(where)150 4600 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h(correctness.)58 b(The)36 b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150 -4572 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em)m(b)s(edded)f -(newlines)h(instead)h(of)f(semicolons.)40 b(The)23 b -Ft(shopt)e Fu(builtin)i(is)h(used)150 4681 y(to)31 b(set)g(these)g -(options.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g -(49,)h(for)e(a)h(description)f(of)h Ft(shopt)p Fu(.)150 -4908 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 5067 -y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g(whic)m(h) -g(manipulate)g(the)h(history)f(list)h(and)f(history)g(\014le.)150 -5213 y Ft(fc)870 5340 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p -Fj(first)p Ft(])g([)p Fj(last)p Ft(])p eop end -%%Page: 138 144 -TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(138)870 -299 y Ft(fc)47 b(-s)g([)p Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p -Fj(command)p Ft(])630 429 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f -(range)g(of)f(commands)g(from)g Fr(\014rst)i Fu(to)f -Fr(last)i Fu(from)d(the)h(history)f(list)630 539 y(and)i(displa)m(ys)h -(or)g(edits)h(and)e(re-executes)j(them.)39 b(Both)25 -b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s(eci\014ed) -630 648 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d(most)h(recen)m -(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g(or)630 -758 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f +4710 y(sa)m(v)m(e)41 b(the)e(command)g(with)f(em)m(b)s(edded)g +(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b +Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g +(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j +(page)f(65,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p +Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 +5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g +(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g +(\014le.)p eop end +%%Page: 141 147 +TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(141)150 +299 y Ft(fc)870 425 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p +Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 535 y(fc)h(-s)g([)p +Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630 +661 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f(range)g(of)f(commands) +g(from)g Fr(\014rst)i Fu(to)f Fr(last)i Fu(from)d(the)h(history)f(list) +630 771 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39 +b(Both)25 b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s +(eci\014ed)630 881 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d +(most)h(recen)m(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g +(or)630 990 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f (history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)d(is)h -(used)f(as)630 867 y(an)g(o\013set)i(from)e(the)h(curren)m(t)f(command) -h(n)m(um)m(b)s(er\).)39 b(If)27 b Fr(last)j Fu(is)e(not)f(sp)s -(eci\014ed)g(it)h(is)g(set)g(to)630 977 y Fr(\014rst)p -Fu(.)47 b(If)32 b Fr(\014rst)i Fu(is)f(not)g(sp)s(eci\014ed)f(it)h(is)g -(set)g(to)h(the)f(previous)f(command)h(for)f(editing)i(and)630 -1087 y Fq(\000)p Fu(16)j(for)g(listing.)61 b(If)36 b(the)h -Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f(are)i(listed)f -(on)g(standard)630 1196 y(output.)59 b(The)36 b Ft(-n)h -Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e(when)h -(listing.)60 b(The)37 b Ft(-r)630 1306 y Fu(\015ag)e(rev)m(erses)f(the) -h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 b(the)f(editor)h(giv)m -(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 1415 y(in)m(v)m(ok)m(ed)33 -b(on)f(a)g(\014le)g(con)m(taining)h(those)f(commands.)44 -b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)d(v)-5 -b(alue)630 1525 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29 -b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})p -Fu(.)34 b(This)630 1634 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 +(used)f(as)630 1100 y(an)f(o\013set)g(from)g(the)g(curren)m(t)f +(command)h(n)m(um)m(b)s(er\).)38 b(If)25 b Fr(last)k +Fu(is)d(not)g(sp)s(eci\014ed,)g(it)g(is)g(set)g(to)630 +1209 y Fr(\014rst)p Fu(.)43 b(If)30 b Fr(\014rst)j Fu(is)e(not)h(sp)s +(eci\014ed,)f(it)g(is)h(set)f(to)h(the)g(previous)f(command)g(for)g +(editing)h(and)630 1319 y Fq(\000)p Fu(16)37 b(for)g(listing.)61 +b(If)36 b(the)h Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f +(are)i(listed)f(on)g(standard)630 1428 y(output.)59 b(The)36 +b Ft(-n)h Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e +(when)h(listing.)60 b(The)37 b Ft(-r)630 1538 y Fu(\015ag)e(rev)m +(erses)f(the)h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 +b(the)f(editor)h(giv)m(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 +1648 y(in)m(v)m(ok)m(ed)33 b(on)f(a)g(\014le)g(con)m(taining)h(those)f +(commands.)44 b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the) +d(v)-5 b(alue)630 1757 y(of)29 b(the)g(follo)m(wing)i(v)-5 +b(ariable)29 b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}}) +p Fu(.)34 b(This)630 1867 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 b(alue)34 b(of)f(the)h Ft(FCEDIT)e Fu(v)-5 b(ariable)34 b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g -Ft(EDITOR)630 1744 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) +Ft(EDITOR)630 1976 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) e Ft(vi)f Fu(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g -(complete,)k(the)630 1854 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h -(and)f(executed.)630 1984 y(In)k(the)g(second)g(form,)h +(complete,)k(the)630 2086 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h +(and)f(executed.)630 2212 y(In)k(the)g(second)g(form,)h Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f -Fr(pat)j Fu(in)d(the)630 2093 y(selected)e(command)e(is)h(replaced)g(b) +Fr(pat)j Fu(in)d(the)630 2322 y(selected)e(command)e(is)h(replaced)g(b) m(y)f Fr(rep)p Fu(.)41 b Fr(command)34 b Fu(is)c(in)m(tepreted)h(the)g -(same)g(as)g Fr(\014rst)630 2203 y Fu(ab)s(o)m(v)m(e.)630 -2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f +(same)g(as)g Fr(\014rst)630 2432 y Fu(ab)s(o)m(v)m(e.)630 +2558 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f Fu(command)h(is)g Ft(r='fc)e(-s')p Fu(,)h(so)h(that)h(t)m(yping)f(`)p -Ft(r)f(cc)p Fu(')630 2443 y(runs)35 b(the)h(last)h(command)f(b)s +Ft(r)f(cc)p Fu(')630 2668 y(runs)35 b(the)h(last)h(command)f(b)s (eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p -Fu(')h(re-executes)h(the)e(last)630 2552 y(command)30 -b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(90\).)150 -2703 y Ft(history)870 2833 y(history)46 b([)p Fj(n)p -Ft(])870 2943 y(history)g(-c)870 3052 y(history)g(-d)h -Fj(offset)870 3162 y Ft(history)f([-anrw])g([)p Fj(filename)p -Ft(])870 3271 y(history)g(-ps)h Fj(arg)630 3402 y Fu(With)26 +Fu(')h(re-executes)h(the)e(last)630 2777 y(command)30 +b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(92\).)150 +2921 y Ft(history)870 3047 y(history)46 b([)p Fj(n)p +Ft(])870 3157 y(history)g(-c)870 3266 y(history)g(-d)h +Fj(offset)870 3376 y Ft(history)f(-d)h Fj(start)p Ft(-)p +Fj(end)870 3485 y Ft(history)f([-anrw])g([)p Fj(filename)p +Ft(])870 3595 y(history)g(-ps)h Fj(arg)630 3721 y Fu(With)26 b(no)g(options,)h(displa)m(y)f(the)g(history)g(list)g(with)f(line)h(n)m (um)m(b)s(ers.)38 b(Lines)26 b(pre\014xed)e(with)630 -3511 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) +3831 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) 53 b(An)34 b(argumen)m(t)h(of)g Fr(n)f Fu(lists)i(only)f(the)g(last)g -Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3621 y(shell)30 +Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3941 y(shell)30 b(v)-5 b(ariable)31 b Ft(HISTTIMEFORMAT)26 b Fu(is)k(set)h(and)e(not)i (n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630 -3730 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h +4050 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h (stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630 -3840 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g +4160 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g (prin)m(ted)g(b)s(et)m(w)m(een)h(the)g(formatted)f(time)h(stamp)g(and) -630 3950 y(the)e(history)f(line.)630 4080 y(Options,)g(if)h(supplied,)e -(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4230 +630 4269 y(the)e(history)f(line.)630 4396 y(Options,)g(if)h(supplied,)e +(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4539 y Ft(-c)384 b Fu(Clear)23 b(the)g(history)g(list.)39 b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h -(options)1110 4340 y(to)31 b(replace)g(the)g(history)f(list)h -(completely)-8 b(.)630 4491 y Ft(-d)30 b Fj(offset)66 -b Fu(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f -Fr(o\013set)p Fu(.)39 b Fr(o\013set)27 b Fu(should)22 -b(b)s(e)h(sp)s(eci\014ed)1110 4600 y(as)31 b(it)g(app)s(ears)e(when)h -(the)g(history)g(is)h(displa)m(y)m(ed.)630 4751 y Ft(-a)384 +(options)1110 4649 y(to)31 b(replace)g(the)g(history)f(list)h +(completely)-8 b(.)630 4792 y Ft(-d)30 b Fj(offset)66 +b Fu(Delete)38 b(the)f(history)f(en)m(try)h(at)f(p)s(osition)h +Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j +(it)1110 4902 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s +(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50 +b(If)1110 5011 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m +(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110 +5121 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e +(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 5230 y(of)h(the)g(history) +-8 b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i +(the)f(curren)m(t)f Ft(history)1110 5340 y(-d)30 b Fu(command.)p +eop end +%%Page: 142 148 +TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)630 +299 y Ft(-d)30 b Fj(start)p Ft(-)p Fj(end)1110 408 y +Fu(Delete)23 b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s +(ositions)g Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110 +518 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38 +b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110 +628 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 789 y Ft(-a)384 b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h -(\014le.)41 b(These)29 b(are)h(history)1110 4861 y(lines)36 +(\014le.)41 b(These)29 b(are)h(history)1110 899 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f -(Bash)h(session,)h(but)1110 4970 y(not)31 b(already)g(app)s(ended)d(to) -j(the)g(history)f(\014le.)630 5121 y Ft(-n)384 b Fu(App)s(end)32 +(Bash)h(session,)h(but)1110 1008 y(not)31 b(already)g(app)s(ended)d(to) +j(the)g(history)f(\014le.)630 1170 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f -(\014le)h(to)1110 5230 y(the)26 b(curren)m(t)f(history)g(list.)40 +(\014le)h(to)1110 1280 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le) -1110 5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f -(Bash)h(session.)p eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(139)630 -299 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h(and)f(app)s -(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)630 -483 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f(history) -g(list)h(to)h(the)e(history)g(\014le.)630 668 y Ft(-p)384 -b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h -Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -777 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 962 y Ft(-s)384 b Fu(The)30 +1110 1389 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f +(Bash)h(session.)630 1551 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g +(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f +(list.)630 1713 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m +(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630 +1874 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f +(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 +1984 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 2146 y Ft(-s)384 b Fu(The)30 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1146 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p +2307 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 -1256 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 +2417 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d -Fu(v)-5 b(ariable)29 b(is)f(used.)150 1534 y Fs(9.3)68 -b(History)46 b(Expansion)150 1693 y Fu(The)f(History)h(library)e(pro)m +Fu(v)-5 b(ariable)29 b(is)f(used.)150 2661 y Fs(9.3)68 +b(History)46 b(Expansion)150 2820 y Fu(The)f(History)h(library)e(pro)m (vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g -(the)f(history)150 1803 y(expansion)g(pro)m(vided)f(b)m(y)h +(the)f(history)150 2930 y(expansion)g(pro)m(vided)f(b)m(y)h Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 1912 y(history)30 b(information.)275 -2072 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(used)e(to)i(manipulate)f(the)150 3040 y(history)30 b(information.)275 +3176 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -2182 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +3286 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2291 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2451 y(History)40 b(expansion)g(is)h(p)s -(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b) -s(efore)d(the)150 2560 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.) -275 2720 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i -(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h -(from)f(the)150 2829 y(history)i(list)g(should)f(b)s(e)g(used)g(during) -g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e -(of)h(that)h(line)150 2939 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m -(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h -(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3048 -y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s -(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21 -b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150 -3158 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 +3395 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 3532 y(History)24 b(expansion)f(is)h(p)s +(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b) +s(efore)e(the)h(shell)150 3642 y(breaks)30 b(it)h(in)m(to)h(w)m(ords,)e +(and)g(is)g(p)s(erformed)f(on)i(eac)m(h)g(line)g(individually)f +(without)h(taking)g(quoting)g(on)150 3751 y(previous)f(lines)g(in)m(to) +i(accoun)m(t.)275 3888 y(History)27 b(expansion)f(tak)m(es)i(place)f +(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g +(whic)m(h)f(line)h(from)f(the)150 3998 y(history)i(list)g(should)f(b)s +(e)g(used)g(during)g(substitution.)39 b(The)27 b(second)h(is)g(to)h +(select)g(p)s(ortions)e(of)h(that)h(line)150 4107 y(for)d(inclusion)f +(in)m(to)i(the)f(curren)m(t)f(one.)40 b(The)25 b(line)h(selected)h +(from)f(the)g(history)f(is)h(called)h(the)f Fr(ev)m(en)m(t)p +Fu(,)j(and)150 4217 y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h +(are)g(acted)g(up)s(on)e(are)h(called)h Fr(w)m(ords)p +Fu(.)38 b(V)-8 b(arious)21 b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 +b(ailable)150 4327 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g -(same)h(fashion)e(that)150 3268 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m +(same)h(fashion)e(that)150 4436 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m (eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g -(one)g(w)m(ord.)54 b(History)150 3377 y(expansions)34 +(one)g(w)m(ord.)54 b(History)150 4546 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g (history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150 -3487 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 +4655 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g (to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150 -3596 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h +4765 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h (treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150 -3706 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 -3865 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h -Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3975 y(page)32 b(49\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s -(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Ft(histverify)d Fu(shell)150 4085 y(option)39 b(is)f(enabled,)i(and)e -(Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g -(not)h(immediately)150 4194 y(passed)30 b(to)h(the)g(shell)g(parser.)40 -b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 4304 y(bu\013er)e(for)i(further)e(mo)s -(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Ft(histreedit)e Fu(shell)i(option)150 4413 y(is)k(enabled,)h(a)g -(failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 4523 y(correction.)68 -b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e -Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150 -4633 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63 -b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e -Fu(builtin)h(ma)m(y)i(b)s(e)150 4742 y(used)21 b(to)i(add)f(commands)g -(to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i -(executing)f(them,)h(so)e(that)150 4852 y(they)31 b(are)f(a)m(v)-5 +4874 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 +5011 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h +Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150 +5121 y(Builtin],)24 b(page)e(65\))h(ma)m(y)e(b)s(e)g(used)g(to)h +(tailor)g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37 +b(If)21 b(the)h Ft(histverify)150 5230 y Fu(shell)35 +b(option)f(is)h(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h +(history)g(substitutions)e(are)i(not)g(immedi-)150 5340 +y(ately)i(passed)d(to)i(the)g(shell)f(parser.)55 b(Instead,)37 +b(the)e(expanded)g(line)g(is)h(reloaded)g(in)m(to)g(the)f(Readline)p +eop end +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)150 +299 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 +b(If)28 b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h +Ft(histreedit)d Fu(shell)150 408 y(option)e(is)g(enabled,)h(a)g(failed) +f(history)g(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h(the)f +(Readline)g(editing)h(bu\013er)150 518 y(for)31 b(correction.)43 +b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f Ft(history)e +Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f(what)g(a)150 +628 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g(using)f(it.)40 +b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f Ft(history)e +Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 737 y(to)36 b(add)f(commands)g +(to)h(the)g(end)f(of)g(the)h(history)f(list)i(without)e(actually)i +(executing)g(them,)g(so)e(that)150 847 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275 -5011 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 +980 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion) -g(mec)m(h-)150 5121 y(anism)h(with)g(the)g Ft(histchars)d +g(mec)m(h-)150 1090 y(anism)h(with)g(the)g Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f -(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 5230 y(page)32 -b(71\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m +(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 1199 y(page)32 +b(72\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m (haracter)f(to)g(mark)f(history)g(timestamps)h(when)150 -5340 y(writing)e(the)h(history)f(\014le.)p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(140)150 -299 y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 -446 y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h -(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 -b(Unless)33 b(the)150 555 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f -(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h -(history)f(list.)150 712 y Ft(!)432 b Fu(Start)34 b(a)f(history)h -(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h -(tab,)f(the)g(end)f(of)630 822 y(the)i(line,)g(`)p Ft(=)p -Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d -Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630 -931 y Fu(builtin\).)150 1088 y Ft(!)p Fj(n)384 b Fu(Refer)30 -b(to)i(command)e(line)g Fr(n)p Fu(.)150 1245 y Ft(!-)p -Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g -Fu(lines)h(bac)m(k.)150 1401 y Ft(!!)384 b Fu(Refer)30 -b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f -(for)g(`)p Ft(!-1)p Fu('.)150 1558 y Ft(!)p Fj(string)144 -b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g -(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -1668 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 -1824 y Ft(!?)p Fj(string)p Ft([?])630 1934 y Fu(Refer)25 -b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) -g(p)s(osition)g(in)g(the)g(history)630 2044 y(list)32 -b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p -Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39 -b Fu(is)32 b(follo)m(w)m(ed)630 2153 y(immediately)g(b)m(y)e(a)h -(newline.)150 2310 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p -Ft(^)630 2420 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 -b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b -Fu(with)31 b Fr(string2)p Fu(.)630 2529 y(Equiv)-5 b(alen)m(t)31 -b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p -Fu(.)150 2686 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t) -m(yp)s(ed)f(so)h(far.)150 2882 y Fk(9.3.2)63 b(W)-10 -b(ord)41 b(Designators)150 3029 y Fu(W)-8 b(ord)27 b(designators)h(are) -g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.) -41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 -3139 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +1309 y(writing)e(the)h(history)f(\014le.)150 1505 y Fk(9.3.1)63 +b(Ev)m(en)m(t)39 b(Designators)150 1652 y Fu(An)32 b(ev)m(en)m(t)j +(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g +(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150 +1762 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i +(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h(history)f(list.)150 +1919 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g +(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630 +2028 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p +Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f +(using)g(the)g Ft(shopt)630 2138 y Fu(builtin\).)150 +2294 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g +Fr(n)p Fu(.)150 2451 y Ft(!-)p Fj(n)336 b Fu(Refer)30 +b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150 +2608 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40 +b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Ft(!-1)p +Fu('.)150 2765 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h +(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in) +g(the)g(history)630 2874 y(list)31 b(starting)g(with)f +Fr(string)p Fu(.)150 3031 y Ft(!?)p Fj(string)p Ft([?])630 +3141 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) +g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 +3250 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45 +b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f +(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 3360 +y(immediately)g(b)m(y)e(a)h(newline.)150 3516 y Ft(^)p +Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 3626 y Fu(Quic)m(k)h +(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g +Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 3736 +y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p +Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 3892 y Ft(!#)384 +b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 +4089 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 +4236 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h +(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 +b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 +4345 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g -(b)s(egins)150 3248 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p +(b)s(egins)150 4455 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i (the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -3358 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) +4565 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) 41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f -(line)g(separated)h(b)m(y)150 3468 y(single)h(spaces.)275 -3601 y(F)-8 b(or)31 b(example,)150 3758 y Ft(!!)384 b +(line)g(separated)h(b)m(y)150 4674 y(single)h(spaces.)275 +4807 y(F)-8 b(or)31 b(example,)150 4964 y Ft(!!)384 b Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3867 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4024 +5074 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 5230 y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -4133 y(to)31 b Ft(!$)p Fu(.)150 4290 y Ft(!fi:2)240 b -Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 4400 -y(letters)j Ft(fi)p Fu(.)275 4556 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 4713 y Ft(0)g(\(zero\))114 b Fu(The)30 +5340 y(to)31 b Ft(!$)p Fu(.)p eop end +%%Page: 144 150 +TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)150 +299 y Ft(!fi:2)240 b Fu(designates)30 b(the)g(second)f(argumen)m(t)h +(of)f(the)h(most)f(recen)m(t)i(command)e(starting)h(with)f(the)630 +408 y(letters)j Ft(fi)p Fu(.)275 556 y(Here)e(are)h(the)g(w)m(ord)f +(designators:)150 704 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 4870 y Fj(n)432 -b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 5027 y Ft(^)432 +(this)e(is)g(the)h(command)f(w)m(ord.)150 851 y Fj(n)432 +b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 999 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -5183 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 -5340 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h -(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)p -eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(141)150 -299 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p +1146 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 +1294 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150 +1441 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p -Fu('.)150 458 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h +Fu('.)150 1589 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h (the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -568 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m +1698 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 677 y(that)j(case.)150 837 y Fj(x)p +(returned)e(in)630 1808 y(that)j(case.)150 1955 y Fj(x)p Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150 -996 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p +2103 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f -(last)h(w)m(ord.)275 1156 y(If)i(a)h(w)m(ord)g(designator)g(is)g +(last)h(w)m(ord.)275 2250 y(If)i(a)h(w)m(ord)g(designator)g(is)g (supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e -(previous)f(command)150 1265 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 -1465 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 1611 y Fu(After)29 +(previous)f(command)150 2360 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 +2547 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2694 y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h (sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150 -1721 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p -Ft(:)p Fu('.)150 1880 y Ft(h)432 b Fu(Remo)m(v)m(e)32 +2804 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p +Ft(:)p Fu('.)150 2951 y Ft(h)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 2040 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h +h(head.)150 3099 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h (pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -2199 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g +3246 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g (the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f -(basename.)150 2359 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h -(trailing)g(su\016x.)150 2518 y Ft(p)432 b Fu(Prin)m(t)30 +(basename.)150 3394 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h +(trailing)g(su\016x.)150 3541 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150 -2677 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g -(escaping)h(further)e(substitutions.)150 2837 y Ft(x)432 +3689 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g +(escaping)h(further)e(substitutions.)150 3837 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,) -630 2946 y(and)d(newlines.)150 3106 y Ft(s/)p Fj(old)p -Ft(/)p Fj(new)p Ft(/)630 3215 y Fu(Substitute)i Fr(new)40 +630 3946 y(and)d(newlines.)150 4094 y Ft(s/)p Fj(old)p +Ft(/)p Fj(new)p Ft(/)630 4203 y Fu(Substitute)i Fr(new)40 b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37 b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32 -b(delimiter)630 3325 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p +b(delimiter)630 4313 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630 -3435 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p +4422 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g -Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 3544 +Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 4532 y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m -(haracter)g(on)630 3654 y(the)31 b(input)e(line.)150 -3813 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -3973 y Ft(g)150 4082 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f +(haracter)g(on)630 4642 y(the)31 b(input)e(line.)150 +4789 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 +4937 y Ft(g)150 5046 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f (applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 -b(Used)39 b(in)f(conjunction)630 4192 y(with)30 b(`)p +b(Used)39 b(in)f(conjunction)630 5156 y(with)30 b(`)p Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p -Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4351 y +Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 5303 y Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m (en)m(t.)p eop end -%%Page: 142 148 -TeXDict begin 142 147 bop 3614 -116 a Fu(142)150 299 -y Fp(10)80 b(Installing)52 b(Bash)150 554 y Fu(This)31 +%%Page: 145 151 +TeXDict begin 145 150 bop 3614 -116 a Fu(145)150 299 +y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31 b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i (Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150 -664 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j +643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f -(of)h(Unix,)150 773 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g +(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g (as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s -(orts)h(exist)i(for)150 883 y Fm(ms-dos)p Fu(,)h Fm(os/2)p -Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1134 y Fs(10.1)68 -b(Basic)45 b(Installation)150 1294 y Fu(These)30 b(are)h(installation)h -(instructions)e(for)h(Bash.)275 1435 y(The)e(simplest)i(w)m(a)m(y)g(to) -g(compile)h(Bash)e(is:)199 1577 y(1.)61 b Ft(cd)38 b +(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 -1686 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1796 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 -1906 y Fu(itself.)330 2044 y(Running)30 b Ft(configure)f +1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f -(messages)h(telling)h(whic)m(h)330 2153 y(features)e(it)g(is)f(c)m(hec) -m(king)i(for.)199 2291 y(2.)61 b(T)m(yp)s(e)30 b(`)p +(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2429 +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p -Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2567 +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509 y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2677 y(pages)31 b(and)f(Info)g(\014le.)275 2847 y(The)20 +2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20 b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i (v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -2956 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 +2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e -Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3066 y(tory)k(of)g(the)g +Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g (pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e -Fu(directories,)39 b(eac)m(h)150 3176 y(directory)29 +Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29 b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) -g(system-)150 3285 y(dep)s(enden)m(t)e(de\014nitions.)40 +g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40 b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g -Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3395 y(run)h(in)h(the)h +Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h (future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f (\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 -3504 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g +3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g (recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e -Fu(con)m(taining)j(compiler)150 3614 y(output)30 b(\(useful)h(mainly)g +Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g (for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s -(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3724 +(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655 y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m -(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3865 y(T)-8 b(o)37 +(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g -(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3975 -y(stands,)30 b(t)m(yp)s(e)390 4116 y Ft(bash-2.04$)45 -b(./configure)g(--help)150 4258 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4399 -y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g(things)g(to)i(compile) -g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h(ho)m(w)150 -4509 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h -(to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to) -150 4619 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 -b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275 -4760 y(The)e(\014le)g Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g -Ft(configure)c Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 -b(Y)-8 b(ou)150 4870 y(only)34 b(need)g Ft(configure.ac)d -Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i -Ft(configure)31 b Fu(using)j(a)g(new)m(er)150 4979 y(v)m(ersion)25 -b(of)f(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f -(y)m(ou)h(are)f(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m -(er.)275 5121 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g -(binaries)f(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s -(de)h(directory)g(b)m(y)150 5230 y(t)m(yping)j(`)p Ft(make)d(clean)p +(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899 +y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45 +b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g +(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303 +y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory) +g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150 +4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g +(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41 +b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in) +g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23 +b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4) +o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390 +4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g +(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096 +y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8 +b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(146,)j(for)c(more)i +(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h +(separate)h(from)e(the)g(source.)p eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(146)275 299 y(If)53 b(y)m(ou)h(need)f(to) +i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i +(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b +Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55 +b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150 +518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e +(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g +Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c +Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8 +b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m +(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 +b Fu(using)j(a)g(new)m(er)150 878 y(v)m(ersion)25 b(of)f(Auto)s(conf.) +39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f +(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m(er.)275 +1018 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f +(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h +(directory)g(b)m(y)150 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150 -5340 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m -(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)p eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(143)150 299 y Fs(10.2)68 -b(Compilers)46 b(and)f(Options)150 458 y Fu(Some)28 b(systems)h -(require)f(un)m(usual)f(options)i(for)f(compilation)i(or)f(linking)f -(that)h(the)g Ft(configure)d Fu(script)150 568 y(do)s(es)32 -b(not)g(kno)m(w)g(ab)s(out.)44 b(Y)-8 b(ou)33 b(can)f(giv)m(e)h -Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5 -b(ariables)32 b(b)m(y)g(setting)h(them)150 677 y(in)k(the)g(en)m -(vironmen)m(t.)62 b(Using)38 b(a)f(Bourne-compatible)i(shell,)g(y)m(ou) -f(can)g(do)f(that)h(on)f(the)g(command)150 787 y(line)31 -b(lik)m(e)g(this:)390 926 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g -(./configure)275 1065 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +1237 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m +(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 1487 y +Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y +Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f +(compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d +Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44 +b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5 +b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 +1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f +(Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g +(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115 +y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275 +2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -1204 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 1343 y Fu(The)29 b(con\014guration)i +2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i (pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5 -b(ailable.)150 1590 y Fs(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 1750 y Fu(Y)-8 +b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8 b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g (computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150 -1859 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) +3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31 b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150 -1969 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h -Ft(VPATH)e Fu(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h -Ft(make)p Fu(.)37 b Ft(cd)25 b Fu(to)h(the)f(directory)g(where)g(y)m -(ou)150 2078 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f -(executables)i(to)g(go)g(and)e(run)g(the)h Ft(configure)d -Fu(script)j(from)g(the)g(source)150 2188 y(directory)-8 -b(.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(need)f(to)h(supply)e(the)i -Ft(--srcdir=PATH)27 b Fu(argumen)m(t)32 b(to)g(tell)h -Ft(configure)28 b Fu(where)150 2297 y(the)36 b(source)g(\014les)f(are.) -57 b Ft(configure)33 b Fu(automatically)39 b(c)m(hec)m(ks)e(for)e(the)h -(source)g(co)s(de)f(in)h(the)f(directory)150 2407 y(that)c -Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2546 +3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i +Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g +Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150 +3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f +(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c +Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g +(Section)f(10.1)i([Basic)f(Installation],)i(page)e(145\).)47 +b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493 +y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g +Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78 +b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e +(the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h +Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -2656 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +3853 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h (source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m -(e)h(installed)f(Bash)150 2765 y(for)c(one)h(arc)m(hitecture,)h(use)e +(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 2904 y(Alternativ)m(ely)-8 +(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) -g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 3014 +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g -(source)g(directory)-8 b(.)150 3123 y(Here's)41 b(an)f(example)i(that)f +(source)g(directory)-8 b(.)150 4322 y(Here's)41 b(an)f(example)i(that)f (creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h -(from)f(a)h(source)150 3233 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p -Fu(:)390 3372 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 -3511 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) -h(one)150 3620 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +h(one)150 4821 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f (create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150 -3868 y Fs(10.4)68 b(Installation)47 b(Names)150 4027 +5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230 y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d -Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4137 +Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340 y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e -Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)150 -4246 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h -(a)f(v)-5 b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p -Ft(make)p Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 -4356 y(`)p Ft(make)29 b(install)p Fu('.)275 4495 y(Y)-8 -b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d -(for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150 -4604 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 -b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g -Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4714 y(`)p Ft(make)29 -b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75 -b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h -(libraries.)150 4824 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g -(\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)150 -5071 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 -5230 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f +Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p +eop end +%%Page: 147 153 +TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(147)150 299 y Ft(--prefix=)p +Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5 +b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p +Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p +Ft(make)29 b(install)p Fu('.)275 566 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify) +f(separate)h(installation)h(pre\014xes)d(for)h(arc)m(hitecture-sp)s +(eci\014c)i(\014les)f(and)150 676 y(arc)m(hitecture-indep)s(enden)m(t) +44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c +Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 +785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f +Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h +(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32 +b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f +(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T) +l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 5340 y(determine)26 b(b)m(y)g(the)g(t)m +b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m (yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 -b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)p -eop end -%%Page: 144 150 -TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(144)150 299 y(if)28 b(it)g(prin)m(ts)f(a) -h(message)g(sa)m(ying)h(it)f(can)g(not)f(guess)h(the)g(host)f(t)m(yp)s -(e,)i(giv)m(e)g(it)f(the)g Ft(--host=TYPE)c Fu(option.)150 -408 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h -(for)f(the)h(system)g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p -Ft(sun4)p Fu(',)g(or)f(a)h(canonical)i(name)150 518 y(with)e(three)h -(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 -b(`)p Ft(i386-unknown-freebsd4.2)p Fu('\).)275 663 y(See)e(the)h -(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 -b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 919 y Fs(10.6)68 -b(Sharing)45 b(Defaults)150 1078 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 +1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f +(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g +Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p +Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) +g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h +(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40 +b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p +Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f +Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f (set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 -1188 y(shell)48 b(script)f(called)i Ft(config.site)44 +2471 y(shell)48 b(script)f(called)i Ft(config.site)44 b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 -1298 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 -b Fu(if)46 b(it)g(exists,)k(then)150 1407 y Ft(PREFIX/etc/config.site) +b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site) 24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -1517 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c -Fu(lo)s(oks)k(for)f(a)h(site)150 1626 y(script,)31 b(but)e(not)i(all)g -Ft(configure)d Fu(scripts)i(do.)150 1883 y Fs(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 2042 y Ft(configure)28 +Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28 b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m -(w)e(it)h(op)s(erates.)150 2217 y Ft(--cache-file=)p -Fj(file)630 2326 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g +(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p +Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g (the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 -2436 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e -(debugging)g Ft(configure)p Fu(.)150 2606 y Ft(--help)192 +3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e +(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Ft(configure)p Fu(,)d(and)i(exit.)150 2775 y Ft(--quiet)150 -2885 y(--silent)150 2995 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f +Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150 +4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f (messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f -(made.)150 3164 y Ft(--srcdir=)p Fj(dir)630 3274 y Fu(Lo)s(ok)i(for)g +(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g (the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 -3383 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 -3553 y Ft(--version)630 3663 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g +4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 +4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g (Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d -Fu(script,)j(and)f(exit.)275 3838 y Ft(configure)34 b +Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Ft(configure)150 3947 -y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 -4203 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 -4363 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f -(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g -Fr(feature)35 b Fu(indicates)150 4472 y(an)e(optional)i(part)e(of)h -(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p -Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 -b(age)150 4582 y Fu(is)32 b(something)h(lik)m(e)h(`)p -Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 -b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) --5 b(age,)35 b(use)150 4692 y Ft(--without-)p Fj(package)p -Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f -(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4801 -y Ft(--disable-)p Fj(feature)p Fu(.)275 4946 y(Here)28 -b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c -Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g -Ft(configure)150 5056 y Fu(recognizes.)150 5230 y Ft(--with-afs)630 -5340 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j -(System)e(from)g(T)-8 b(ransarc.)p eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(145)150 299 y Ft(--with-bash-malloc)630 -408 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e -Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 -b(is)g(not)g(the)630 518 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e -(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i -(originally)g(deriv)m(ed)630 628 y(from)f(the)h(4.2)g -Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g -Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 -737 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g -(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) -630 847 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s -(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 -956 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i -(systems.)150 1120 y Ft(--with-curses)630 1230 y Fu(Use)h(the)h(curses) +(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340 +y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p +eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(148)150 299 y Fs(10.8)68 +b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h +Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p +Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35 +b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50 +b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29 +b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677 +y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p +Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i +(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35 +b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46 +b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is) +g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p +Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f +(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f +(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306 +y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g +(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150 +1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m +(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h +Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630 +1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g +Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g +(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p +Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m +(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58 +b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56 +b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630 +2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e) +i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 +2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses) e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 -b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1339 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i -(termcap)e(database.)150 1503 y Ft(--with-gnu-malloc)630 -1613 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p -Fu(.)150 1776 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p -Ft(])630 1886 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630 +2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 -1996 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e -(later)630 2105 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 +(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f -Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 2215 y(mak)m(e)28 +Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28 b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f -Fu(b)m(y)630 2324 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m +Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m (ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 -2434 y(system)35 b(include)f(and)g(library)g(directories.)54 +3705 y(system)35 b(include)f(and)g(library)g(directories.)54 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) -f(the)630 2544 y(v)m(ersion)42 b(in)e Ft(lib/readline)p +f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f -(v)-5 b(alue,)44 b Ft(configure)630 2653 y Fu(treats)27 +(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27 b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g -(installed)h(v)m(ersion)g(of)f(Readline)630 2763 y(in)34 +(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34 b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 -2872 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 -3036 y Ft(--with-purify)630 3146 y Fu(De\014ne)23 b(this)g(to)h(use)f +4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 +4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f (the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e -(Rational)i(Soft)m(w)m(are.)150 3309 y Ft(--enable-minimal-config)630 -3419 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h +(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630 +4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h (close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 -3585 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h +4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h (alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 -3694 y(than)h(c)m(hanging)h(run-time)f(features.)150 -3860 y Ft(--enable-largefile)630 3970 y Fu(Enable)e(supp)s(ort)f(for)h +4958 y(than)h(c)m(hanging)h(run-time)f(features.)150 +5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)e(supp)s(ort)f(for)h (large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o -(rge_)o(file)o(/)630 4079 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p +(rge_)o(file)o(/)630 5340 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p Fu(\))31 b(if)36 b(the)g(op)s(erating)h(system)f(requires)g(sp)s(ecial) -h(compiler)g(op-)630 4189 y(tions)27 b(to)h(build)e(programs)h(whic)m -(h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m -(y)f(default,)630 4299 y(if)k(the)h(op)s(erating)g(system)f(pro)m -(vides)h(large)g(\014le)g(supp)s(ort.)150 4462 y Ft(--enable-profiling) -630 4572 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e -(pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 -4682 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 -4845 y Ft(--enable-static-link)630 4955 y Fu(This)37 -b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 +h(compiler)g(op-)p eop end +%%Page: 149 155 +TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(149)630 299 y(tions)27 +b(to)h(build)e(programs)h(whic)m(h)g(can)g(access)h(large)h(\014les.)39 +b(This)26 b(is)i(enabled)f(b)m(y)f(default,)630 408 y(if)k(the)h(op)s +(erating)g(system)f(pro)m(vides)h(large)g(\014le)g(supp)s(ort.)150 +570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i(Bash)g +(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h(b)s(e)d +(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is) +f(executed.)150 951 y Ft(--enable-static-link)630 1061 +y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 5064 y(used)30 b(to)h(build)e(a)i(v)m -(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 5230 +b(This)37 b(could)h(b)s(e)630 1171 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 1334 y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f (to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 -5340 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m (y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p -Fu('.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(146)275 299 y(All)26 b(of)f(the)h(follo)m -(wing)h(options)f(except)g(for)g(`)p Ft(disabled-builtins)p -Fu(',)c(`)p Ft(direxpand-default)p Fu(',)h(and)150 408 -y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g -(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro) -m(vide)150 518 y(the)e(necessary)f(supp)s(ort.)150 698 -y Ft(--enable-alias)630 807 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and) -f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see) -g(Sec-)630 917 y(tion)31 b(6.6)g([Aliases],)i(page)e(90\).)150 -1090 y Ft(--enable-arith-for-comma)o(nd)630 1200 y Fu(Include)21 +Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g +(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p +Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28 +b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f +(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp) +s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41 +b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f +Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 +2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(92\).)150 +2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -1309 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f (3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -1482 y Ft(--enable-array-variables)630 1592 y Fu(Include)h(supp)s(ort)g +2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 1701 y(ra)m(ys],)c(page)g(91\).)150 -1874 y Ft(--enable-bang-history)630 1984 y Fu(Include)36 +b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(93\).)150 +3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36 b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 2093 y(teraction],)c(page)e -(139\).)150 2266 y Ft(--enable-brace-expansion)630 2376 +(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e +(142\).)150 3487 y Ft(--enable-brace-expansion)630 3597 y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 -b(Section)h(3.5.1)630 2485 y([Brace)32 b(Expansion],)e(page)h(21,)h -(for)e(a)g(complete)i(description.)150 2658 y Ft -(--enable-casemod-attribu)o(tes)630 2768 y Fu(Include)37 +b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(22,)h +(for)e(a)g(complete)i(description.)150 3868 y Ft +(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37 b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Ft(declare)e Fu(builtin)i(and)f(as-)630 2878 y(signmen)m(t)29 +Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29 b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 -2987 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f -(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 3160 y Ft -(--enable-casemod-expansi)o(on)630 3270 y Fu(Include)h(supp)s(ort)e +4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f +(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft +(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e (for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -3443 y Ft(--enable-command-timing)630 3552 y Fu(Include)43 +4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43 b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 3662 y(timing)37 +(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37 b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 -3771 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) +4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) -150 3944 y Ft(--enable-cond-command)630 4054 y Fu(Include)33 +150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33 b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 4164 y(tional)c -(Constructs],)e(page)h(10\).)150 4337 y Ft(--enable-cond-regexp)630 -4446 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h +b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 5340 y(tional)c +(Constructs],)e(page)h(11\).)p eop end +%%Page: 150 156 +TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(150)150 299 y Ft(--enable-cond-regexp)630 +408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p -Ft(=~)p Fu(')g(binary)630 4556 y(op)s(erator)25 b(in)f(the)h +Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h -([Conditional)e(Con-)630 4665 y(structs],)31 b(page)g(10\).)150 -4838 y Ft(--enable-coprocesses)630 4948 y Fu(Include)23 +([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150 +774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23 b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 -5057 y([Pip)s(elines],)31 b(page)g(8\).)150 5230 y Ft -(--enable-debugger)630 5340 y Fu(Include)f(supp)s(ort)e(for)i(the)h -(bash)f(debugger)g(\(distributed)g(separately\).)p eop -end -%%Page: 147 153 -TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(147)150 299 y Ft -(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53 +993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger) +630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g +(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o +(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p +Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j +Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p +Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5 +b(around.)39 b(This)27 b(has)g(implications)630 1724 +y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150 +1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53 b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(64\))g(to)f(b)s(e)f +([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(65\))g(to)f(b)s(e)f (enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 -b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150 -774 y Ft(--enable-directory-stack)630 883 y Fu(Include)j(supp)s(ort)g +b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150 +2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g (for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 -993 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(93\).)150 1139 y Ft(--enable-disabled-builti)o(ns)630 -1249 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(95\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630 +2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m (ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f -Ft(xxx)e Fu(has)630 1358 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(49,)630 1468 y(for)e(details)i(of)e(the)h +(Builtins],)i(page)f(50,)630 3039 y(for)e(details)i(of)e(the)h Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 -1614 y Ft(--enable-dparen-arithmet)o(ic)630 1724 y Fu(Include)42 +3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42 b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i -(Section)f(3.2.4.2)i([Conditional)630 1833 y(Constructs],)30 -b(page)h(10\).)150 1979 y Ft(--enable-extended-glob)630 -2089 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(Section)f(3.2.4.2)i([Conditional)630 3404 y(Constructs],)30 +b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630 +3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h (matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 -2198 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(31.)150 2345 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 -2454 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g +3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(32.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 2564 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(64,)h(to)f(b)s(e)f(enabled.)150 2710 y Ft(--enable-function-import)630 -2819 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(65,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630 +4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g (de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 -2929 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 -3075 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 -3185 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g +4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m -(v)m(e)h(under)630 3294 y(Section)39 b(4.3.2)h([The)e(Shopt)g -(Builtin],)j(page)e(64,)i(to)f(b)s(e)d(enabled.)65 b(This)37 -b(con)m(trols)j(the)630 3404 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h +(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g +(Builtin],)j(page)e(65,)i(to)f(b)s(e)d(enabled.)65 b(This)37 +b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h (ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g -(expressions.)150 3550 y Ft(--enable-help-builtin)630 -3660 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m +(expressions.)150 5121 y Ft(--enable-help-builtin)630 +5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m (ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 -b(\(see)630 3769 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f -(49\).)150 3915 y Ft(--enable-history)630 4025 y Fu(Include)e(command)g -(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e -Fu(builtin)j(commands)f(\(see)h(Sec-)630 4134 y(tion)h(9.1)g([Bash)g -(History)g(F)-8 b(acilities],)34 b(page)d(137\).)150 -4281 y Ft(--enable-job-control)630 4390 y Fu(This)h(enables)i(the)f -(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m -(trol],)i(page)f(100\),)630 4500 y(if)c(the)h(op)s(erating)g(system)f -(supp)s(orts)f(them.)150 4646 y Ft(--enable-multibyte)630 -4756 y Fu(This)g(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m -(haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630 -4865 y(the)h(necessary)f(supp)s(ort.)150 5011 y Ft -(--enable-net-redirection)o(s)630 5121 y Fu(This)23 b(enables)h(the)g -(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g -Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 5230 y Fu(and)31 -b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31 -b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630 -5340 y(tions],)e(page)g(32\).)p eop end -%%Page: 148 154 -TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(148)150 299 y Ft -(--enable-process-substit)o(utio)o(n)630 408 y Fu(This)49 +b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f +(50\).)p eop end +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(151)150 299 y Ft(--enable-history)630 +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(140\).)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(102\),)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(33\).)150 1870 +y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49 b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) -s(cess)e(Substitution],)630 518 y(page)31 b(30\))h(if)e(the)h(op)s +s(cess)e(Substitution],)630 2089 y(page)31 b(30\))h(if)e(the)h(op)s (erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 -677 y Ft(--enable-progcomp)630 787 y Fu(Enable)d(the)g(programmable)g +2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g (completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -897 y(Completion],)i(page)h(129\).)42 b(If)30 b(Readline)h(is)f(not)h +2454 y(Completion],)i(page)h(131\).)42 b(If)30 b(Readline)h(is)f(not)h (enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 -1056 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 1166 +2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m (b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 -1275 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p +2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 -b(Section)h(6.9)g([Con)m(trolling)g(the)630 1385 y(Prompt],)30 -b(page)h(94,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g -(escap)s(e)h(sequences.)150 1544 y Ft(--enable-readline)630 -1654 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f -(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1763 +b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30 +b(page)h(96,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630 +3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f +(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(104\).)150 1923 y Ft(--enable-restricted)630 -2032 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p +(Editing],)h(page)g(106\).)150 3440 y Ft(--enable-restricted)630 +3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 -2142 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 +3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 -2252 y(page)31 b(95,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s -(de.)150 2411 y Ft(--enable-select)630 2521 y Fu(Include)25 +3769 y(page)31 b(97,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s +(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25 b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j -(the)e(generation)h(of)f(simple)630 2630 y(men)m(us)k(\(see)h(Section)g -(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150 -2790 y Ft(--enable-separate-helpfi)o(les)630 2899 y Fu(Use)h(external)h +(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g +(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(11\).)150 +4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h (\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g -(the)g Ft(help)f Fu(builtin)h(instead)630 3009 y(of)f(storing)f(the)h -(text)g(in)m(ternally)-8 b(.)150 3168 y Ft(--enable-single-help-str)o -(ings)630 3278 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e +(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h +(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o +(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e (the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) -i(help)630 3387 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g +i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g (text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 -b(ma)m(y)g(need)630 3497 y(to)c(disable)g(this)f(if)g(y)m(our)h +b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h (compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150 -3656 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3766 +5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230 y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h (\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 -3875 y(page)31 b(96\).)150 4035 y Ft(--enable-usg-echo-defaul)o(t)630 -4144 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p -Fu(.)150 4304 y Ft(--enable-xpg-echo-defaul)o(t)630 4413 -y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m -(kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630 -4523 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 -b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g -Ft(xpg_echo)e Fu(shell)h(option)630 4633 y(to)28 b Ft(on)p -Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e) -i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s(eci\014ed)f(in)g(the)630 -4742 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 -b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(49,)630 -4852 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g -(that)g Ft(echo)e Fu(recognizes.)275 5011 y(The)f(\014le)i -Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p -Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150 -5121 y(are)35 b(not)g(settable)i(from)d Ft(configure)p -Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c) -m(hanged;)k(b)s(ew)m(are)d(of)150 5230 y(the)h(consequences)g(if)f(y)m -(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e -(eac)m(h)i(de\014nition)e(for)g(more)150 5340 y(information)c(ab)s(out) -f(its)h(e\013ect.)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 3614 -116 a Fu(149)150 299 +5340 y(page)31 b(98\).)p eop end +%%Page: 152 158 +TeXDict begin 152 157 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(152)150 299 y Ft +(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g +Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft +(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f +Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m +(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h +Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 +b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630 +897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f +Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s +(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s +(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g +(Builtins],)h(page)f(50,)630 1116 y(for)30 b(a)h(description)f(of)h +(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275 +1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 +b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f +(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d +Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g +(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494 +y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36 +b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e +(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p +eop end +%%Page: 153 159 +TeXDict begin 153 158 bop 3614 -116 a Fu(153)150 299 y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150 533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i (Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e @@ -18629,8 +18943,8 @@ s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f (vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m (ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 3614 -116 a Fu(150)150 141 +%%Page: 154 160 +TeXDict begin 154 159 bop 3614 -116 a Fu(154)150 141 y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f @@ -18651,20 +18965,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(96\).)225 1565 y Fq(\017)60 +(POSIX)g(Mo)s(de],)h(page)g(98\).)225 1565 y Fq(\017)60 b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g (options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e -(82\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h +(84\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h (editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d -(104\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 +(106\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m (ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 -2052 y(grammable)39 b(Completion],)i(page)e(129\),)i(and)d(builtin)g +2052 y(grammable)39 b(Completion],)i(page)e(131\),)i(and)d(builtin)g (commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330 2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225 2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i (Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 -b(page)c(137\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h +b(page)c(140\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 @@ -18672,9 +18986,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32 b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48 b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h (Section)g(9.3)h([History)f(In)m(teraction],)330 2759 -y(page)31 b(139\).)225 2892 y Fq(\017)60 b Fu(Bash)33 +y(page)31 b(142\).)225 2892 y Fq(\017)60 b Fu(Bash)33 b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 -b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(91\),)h(and)e(the)330 +b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(93\),)h(and)e(the)330 3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g (assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40 b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h @@ -18715,30 +19029,30 @@ y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.4.1)i([Lo)s b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i (whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330 5340 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i([Conditional)e -(Constructs],)g(page)g(10\).)p eop end -%%Page: 151 157 -TeXDict begin 151 156 bop 150 -116 a Fu(App)s(endix)29 +(Constructs],)g(page)g(11\).)p eop end +%%Page: 155 161 +TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(151)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(155)225 299 y Fq(\017)60 b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.4.2)j([Conditional) -d(Constructs],)i(page)f(10\),)i(including)330 518 y(optional)32 +d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32 b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60 b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m (hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225 789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h -(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(21\))h(and)d(tilde)330 +(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(22\))h(and)d(tilde)330 898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f -(page)h(22\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h +(page)h(23\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h (command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(90\).)225 1279 y Fq(\017)60 +1143 y([Aliases],)32 b(page)f(92\).)225 1279 y Fq(\017)60 b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j([Con-) -330 1388 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e(arithmetic)i +330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(89\).)225 1633 y Fq(\017)60 b +1498 y(metic],)h(page)f(91\).)225 1633 y Fq(\017)60 b Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g @@ -18754,39 +19068,39 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f (trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5 b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -2452 y(Expansion],)30 b(page)h(23\).)225 2587 y Fq(\017)60 +2452 y(Expansion],)30 b(page)h(24\).)225 2587 y Fq(\017)60 b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i (length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330 2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i -(23\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g +(24\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m -(arameter)330 3051 y(Expansion],)30 b(page)h(23\).)225 +(arameter)330 3051 y(Expansion],)30 b(page)h(24\).)225 3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e (matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296 y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5 b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31 b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330 -3406 y(Expansion],)h(page)h(23\).)225 3541 y Fq(\017)60 +3406 y(Expansion],)h(page)h(24\).)225 3541 y Fq(\017)60 b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h (shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g (with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39 b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330 -3761 y(Expansion],)30 b(page)h(23\).)225 3896 y Fq(\017)60 +3761 y(Expansion],)30 b(page)h(24\).)225 3896 y Fq(\017)60 b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22 b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i -([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(23\).)225 +([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(24\).)225 4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h (parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27 b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h (implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330 -4386 y(mand)38 b(Substitution],)k(page)e(29\),)j(and)38 +4386 y(mand)38 b(Substitution],)k(page)e(30\),)j(and)38 b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is) f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h (compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31 @@ -18800,17 +19114,17 @@ Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f (that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(71,)g(for)f +b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(72,)g(for)f (details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g (of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 -y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(30\).)41 +y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(31\).)41 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 156 162 +TeXDict begin 156 161 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(152)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(156)225 299 y Fq(\017)60 b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h (the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f @@ -18820,11 +19134,11 @@ Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g (erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37 b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h -([Filename)330 756 y(Expansion],)30 b(page)h(30\).)225 +([Filename)330 756 y(Expansion],)30 b(page)h(31\).)225 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g (matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option) 330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f -(Matc)m(hing],)g(page)f(31\).)225 1121 y Fq(\017)60 b +(Matc)m(hing],)g(page)f(32\).)225 1121 y Fq(\017)60 b Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31 @@ -18833,24 +19147,24 @@ Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s (cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g (functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g -(Builtins],)g(page)h(49\).)225 1596 y Fq(\017)60 b Fu(V)-8 +(Builtins],)g(page)h(50\).)225 1596 y Fq(\017)60 b Fu(V)-8 b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) -e(38\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 +e(39\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h (unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h (system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename) i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e (to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g -(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(32\).)225 +(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(33\).)225 2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g (to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290 y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection) g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330 2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i -(Section)f(3.6)g([Redirections],)h(page)g(32\).)225 2527 +(Section)f(3.6)g([Redirections],)h(page)g(33\).)225 2527 y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s (e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e @@ -18861,20 +19175,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330 3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i (\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g (redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f -([Redirections],)h(page)f(32\).)225 3240 y Fq(\017)60 +([Redirections],)h(page)f(33\).)225 3240 y Fq(\017)60 b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h (arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330 3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h -([Redirections],)g(page)f(32\).)225 3477 y Fq(\017)60 +([Redirections],)g(page)f(33\).)225 3477 y Fq(\017)60 b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5 b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g (\014les)e(with)h(output)f(redi-)330 3587 y(rection)39 -b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(60\).)66 +b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(61\).)66 b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330 3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34 b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(42\))h(eac)m(h)330 +g([Bourne)g(Shell)f(Builtins],)h(page)g(43\))h(eac)m(h)330 3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g (b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225 4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v) @@ -18882,28 +19196,28 @@ m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides) h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h (within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(49\).)225 4408 y Fq(\017)60 b Fu(The)35 +(Builtins],)g(page)g(50\).)225 4408 y Fq(\017)60 b Fu(The)35 b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f (functions)g(when)g(command)g(lo)s(okup)g(is)330 4518 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g -(49\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i +(50\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i (b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 -b(Builtins],)g(page)g(49\).)225 4883 y Fq(\017)60 b Fu(The)26 +b(Builtins],)g(page)g(50\).)225 4883 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that) g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g (command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f -([Bourne)f(Shell)h(Builtins],)g(page)g(42\).)225 5230 +([Bourne)f(Shell)h(Builtins],)g(page)g(43\).)225 5230 y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g (to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 b(unctions],)32 b(page)f(17\).)p eop end -%%Page: 153 159 -TeXDict begin 153 158 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 157 163 +TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(153)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(157)225 299 y Fq(\017)60 b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30 @@ -18919,15 +19233,15 @@ Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d (an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h (\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330 -984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(42\).)225 +984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).)225 1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i -(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(49\).)225 +(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(50\).)225 1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5 b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g -(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(49\).)225 +(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(50\).)225 1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i -(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(49\))g(will)f(read)g(a)g +(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(50\))g(will)f(read)g(a)g (line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330 @@ -18950,23 +19264,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab) s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f -(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)225 +(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)225 2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g (capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f -(Builtin],)k(page)d(64\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f +(Builtin],)k(page)d(65\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f (b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s (cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h -(82\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h +(84\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h (optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 3477 +b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225 3477 y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f (commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) -f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 +f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)225 3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(42\))g(is)f(sligh)m(tly)h +f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(43\))g(is)f(sligh)m(tly)h (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m (vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 @@ -18977,7 +19291,7 @@ b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26 b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section) -f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(42\))h(allo)m(ws)g(a)e +f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(43\))h(allo)m(ws)g(a)e Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e (to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h @@ -18993,20 +19307,20 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330 Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f (the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j -(page)e(42\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 +(page)e(43\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h (with)g(an)g Ft(ERR)g Fu(trap)p eop end -%%Page: 154 160 -TeXDict begin 154 159 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 158 164 +TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(154)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(158)330 299 y(are)40 b(executed)g(after)g (a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h (shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37 b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h -(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(42\))g(allo)m(ws)g(a)g +(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(43\))g(allo)m(ws)g(a)g Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j (similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y @@ -19021,30 +19335,30 @@ g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i (and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(49\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h +(page)f(50\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 -1789 y(Builtins],)g(page)g(42\).)225 1921 y Fq(\017)60 +1789 y(Builtins],)g(page)g(43\).)225 1921 y Fq(\017)60 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i (manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m -(k],)i(page)d(93\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g +(k],)i(page)d(95\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h (when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h -([Con)m(trolling)f(the)g(Prompt],)f(page)h(94\).)225 +([Con)m(trolling)f(the)g(Prompt],)f(page)h(96\).)225 2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2622 y(page)31 b(95\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s +330 2622 y(page)31 b(97\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s (de)f(is)h(to)s(o)g(limited.)225 2754 y Fq(\017)60 b Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(101\))g(or)g +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(103\))g(or)g (suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f (the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) @@ -19061,7 +19375,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(82.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(84.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f @@ -19082,10 +19396,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f (with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end -%%Page: 155 161 -TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 159 165 +TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(155)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(159)225 299 y Fq(\017)60 b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8 b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e (the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and) @@ -19116,8 +19430,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h (when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g (con)m(trol\).)p eop end -%%Page: 156 162 -TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 299 +%%Page: 160 166 +TeXDict begin 160 165 bop 3614 -116 a Fu(160)150 299 y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 @@ -19198,10 +19512,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 157 163 -TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 161 167 +TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(157)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(161)330 299 y(under)26 b(this)i(License.)40 b(If)27 b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h (de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408 y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5 @@ -19292,10 +19606,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 158 164 -TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 162 168 +TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(158)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(162)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h (the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h (or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42 b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j @@ -19385,10 +19699,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 159 165 -TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 163 169 +TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(159)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(163)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g (the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same) h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original) i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360 @@ -19467,10 +19781,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 160 166 -TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 164 170 +TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(160)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(164)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8 b(ersion's)36 b(license)g(notice.)57 b(These)330 408 y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g @@ -19555,10 +19869,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 161 167 -TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 165 171 +TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(161)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(165)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h (W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f (its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep) s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h @@ -19643,10 +19957,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 162 168 -TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 166 172 +TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(162)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +b(166)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) 330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8 b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g (the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34 @@ -19710,10 +20024,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 163 169 -TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 167 173 +TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(163)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(167)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 @@ -19748,199 +20062,199 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end -%%Page: 164 170 -TeXDict begin 164 169 bop 3614 -116 a Fu(164)150 299 +%%Page: 168 174 +TeXDict begin 168 173 bop 3614 -116 a Fu(168)150 299 y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806 y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)33 b Fb(42)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 +(:)33 b Fb(43)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(42)146 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(43)146 1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(46)146 1881 y Fs(A)150 1998 y Fe(alias)9 +(:)g(:)g(:)33 b Fb(47)146 1881 y Fs(A)150 1998 y Fe(alias)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)146 2239 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)146 2239 y Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 -b Fb(101)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(103)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(49)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(50)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(43)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(44)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(50)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 +b Fb(51)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(51)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(52)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)31 b Fb(43)150 3151 y Fe(command)22 +g(:)g(:)g(:)g(:)g(:)31 b Fb(44)150 3151 y Fe(command)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)35 b Fb(51)150 3238 y Fe(compgen)18 +h(:)f(:)g(:)g(:)g(:)35 b Fb(52)150 3238 y Fe(compgen)18 b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)33 b Fb(131)150 3326 y Fe(complete)16 +(:)h(:)f(:)g(:)33 b Fb(133)150 3326 y Fe(complete)16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(131)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) +(:)g(:)g(:)31 b Fb(133)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 -b Fb(134)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(136)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(43)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 +Fb(44)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)35 b Fb(51)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f +g(:)g(:)g(:)35 b Fb(52)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(93)150 4033 y Fe(disown)d Fc(:)13 +(:)g(:)h(:)25 b Fb(95)150 4033 y Fe(disown)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)36 b Fb(102)146 4274 y Fs(E)150 4391 y Fe(echo)11 +g(:)g(:)g(:)36 b Fb(104)146 4274 y Fs(E)150 4391 y Fe(echo)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(53)150 4478 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(54)150 4478 y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(54)150 4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(43)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(44)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(44)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(45)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(44)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g +b Fb(45)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 -b Fb(44)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +b Fb(45)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(137)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)29 b Fb(141)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)29 b Fb(101)2021 871 y Fs(G)2025 988 y Fe(getopts)22 +g(:)g(:)g(:)29 b Fb(103)2021 871 y Fs(G)2025 988 y Fe(getopts)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(44)2021 1250 y Fs(H)2025 +g(:)g(:)h(:)f(:)g(:)35 b Fb(45)2021 1250 y Fs(H)2025 1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(45)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(46)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(54)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(55)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b -Fb(138)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 +Fb(141)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(101)2021 2186 y Fs(K)2025 +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(103)2021 2186 y Fs(K)2025 2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(102)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) +b Fb(104)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)28 b Fb(54)2025 2760 y Fe(local)9 b Fc(:)14 +g(:)g(:)h(:)f(:)28 b Fb(55)2025 2760 y Fe(local)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(54)2025 2848 y Fe(logout)6 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(55)2025 2848 y Fe(logout)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(55)2021 3110 y Fs(M)2025 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(56)2021 3110 y Fs(M)2025 3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(55)2021 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(56)2021 3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(93)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(95)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(55)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(56)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(93)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(96)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(45)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) +b Fb(46)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)26 b Fb(56)2025 4339 y Fe(readarray)15 b +g(:)g(:)g(:)26 b Fb(57)2025 4339 y Fe(readarray)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)30 b Fb(57)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g +g(:)g(:)30 b Fb(59)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(45)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(46)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(46)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(47)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(60)2025 4972 y Fe(shift)9 b Fc(:)14 +(:)g(:)h(:)f(:)28 b Fb(61)2025 4972 y Fe(shift)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(46)2025 5060 y Fe(shopt)9 +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(47)2025 5060 y Fe(shopt)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(64)2025 5148 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(65)2025 5148 y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(58)2025 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(59)2025 5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(102)p eop end -%%Page: 165 171 -TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(165)146 294 y Fs(T)150 410 y Fe(test)11 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(105)p eop end +%%Page: 169 175 +TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(169)146 294 y Fs(T)150 410 y Fe(test)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(46)150 497 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(47)150 497 y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)150 584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(48)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(49)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(58)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(59)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(58)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 +b Fb(59)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(58)150 1206 y Fe(umask)9 +g(:)g(:)g(:)h(:)f(:)20 b Fb(59)150 1206 y Fe(umask)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 1293 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)150 1293 y Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(60)150 1380 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(61)150 1380 y Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)2021 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)2021 294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 -b Fb(102)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h +b Fb(104)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h (W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) @@ -19955,11 +20269,11 @@ g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(12)146 3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(14)146 4125 y Fa(})150 4241 y Fe(})19 +(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(14)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16 @@ -19972,16 +20286,16 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)25 b Fb(10)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)25 b Fb(10)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(10)2025 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025 2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 @@ -19991,7 +20305,7 @@ g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(17)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)31 b Fb(10)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025 @@ -20001,7 +20315,7 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)26 b Fb(10)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h +(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y @@ -20012,452 +20326,460 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021 (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)p eop end -%%Page: 166 172 -TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(166)150 299 y Fs(D.3)68 b(P)l(arameter)47 +%%Page: 170 176 +TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(170)150 299 y Fs(D.3)68 b(P)l(arameter)47 b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073 y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 +b Fb(21)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)146 1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)33 b Fb(20)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)33 b Fb(21)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)31 b Fb(20)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)31 b Fb(21)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2173 y Fe($*)16 +(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2173 y Fe($*)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(21)150 2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 -b Fb(20)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +b Fb(21)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -31 b Fb(20)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +31 b Fb(21)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)31 b Fb(20)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)31 b Fb(21)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)31 b Fb(20)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h +(:)g(:)31 b Fb(21)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)31 b Fb(20)146 2876 y Fs(*)150 2994 y Fe(*)19 +(:)g(:)g(:)31 b Fb(21)146 2876 y Fs(*)150 2994 y Fe(*)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b -Fb(20)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) +Fb(21)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 3620 y Fs(?)150 3738 +g(:)h(:)f(:)g(:)g(:)33 b Fb(21)146 3620 y Fs(?)150 3738 y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 +b Fb(21)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)p +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(21)p 156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)33 b Fb(20)146 4736 y Fs(0)150 4854 y +(:)f(:)g(:)g(:)33 b Fb(21)146 4736 y Fs(0)150 4854 y Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 -b Fb(20)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b +b Fb(21)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -23 b Fb(103)2021 954 y Fs(B)2025 1076 y Fe(BASH)11 b +23 b Fb(105)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(71)2025 1165 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(72)2025 1163 y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1254 y Fe(BASH_ARGC)15 +g(:)g(:)g(:)g(:)h(:)22 b Fb(73)2025 1251 y Fe(BASH_ARGC)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)30 b Fb(72)2025 1343 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)30 b Fb(73)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(72)2025 1432 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(72)2025 -1521 y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1611 y Fe(BASH_COMPAT)10 +b Fb(73)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(73)2025 +1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(73)2025 1606 +y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1695 y Fe(BASH_COMPAT)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 1700 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +g(:)25 b Fb(74)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 -b Fb(73)2025 1789 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 +b Fb(74)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)34 b Fb(73)2025 1878 y Fe(BASH_LINENO)10 +(:)g(:)g(:)g(:)g(:)34 b Fb(74)2025 1960 y Fe(BASH_LINENO)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 1967 y Fe(BASH_LOADABLES_PATH)7 b +g(:)25 b Fb(74)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(73)2025 -2056 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(74)2025 +2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(73)2025 2145 y Fe(BASH_SOURCE)10 +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 2226 y Fe(BASH_SOURCE)10 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(73)2025 2235 y Fe(BASH_SUBSHELL)g Fc(:)13 +g(:)25 b Fb(74)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(73)2025 2324 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +b Fb(75)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(73)2025 2413 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(75)2025 2492 y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 2502 y Fe(BASH_XTRACEFD)j +g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 2581 y Fe(BASH_XTRACEFD)j Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(74)2025 2591 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(75)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b -Fb(72)2025 2680 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(73)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(72)2025 2769 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f +b Fb(73)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(108)2025 -2858 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(110)2025 +2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(108)2025 2946 y Fe(blink-matching-paren)24 b Fc(:)13 +b Fb(110)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)34 b Fb(108)2021 3231 y Fs(C)2025 -3353 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)h(:)34 b Fb(110)2021 3297 y Fs(C)2025 +3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b -Fb(71)2025 3442 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +Fb(72)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 -3531 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 +3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(108)2025 3621 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(110)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(108)2025 3710 y Fe(COLUMNS)22 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(110)2025 3772 y Fe(COLUMNS)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(74)2025 3799 y Fe(comment-begin)23 +g(:)g(:)h(:)f(:)g(:)35 b Fb(75)2025 3860 y Fe(comment-begin)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(108)2025 3888 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(110)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025 -3977 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(76)2025 +4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(75)2025 4066 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(76)2025 4126 y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 4155 y Fe(COMP_POINT)13 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(76)2025 4215 y Fe(COMP_POINT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(75)2025 4244 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g +(:)h(:)27 b Fb(76)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(75)2025 4334 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g +b Fb(76)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(75)2025 4423 y Fe(COMP_WORDS)13 +h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(76)2025 4481 y Fe(COMP_WORDS)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(75)2025 4512 y Fe(completion-display-width)9 +(:)h(:)27 b Fb(76)2025 4569 y Fe(completion-display-width)9 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)24 b Fb(108)2025 4601 y Fe(completion-ignore-case)14 +(:)h(:)f(:)g(:)24 b Fb(110)2025 4658 y Fe(completion-ignore-case)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)29 b Fb(109)2025 4690 y Fe(completion-map-case)d +(:)g(:)g(:)h(:)f(:)29 b Fb(111)2025 4747 y Fe(completion-map-case)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(109)2025 4779 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2025 4835 y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(109)2025 4868 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(111)2025 4924 y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 -b Fb(109)2025 4958 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(111)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b -Fb(75)2025 5047 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +Fb(76)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(109)2025 5134 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(111)2025 5188 y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(75)p +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(76)p eop end -%%Page: 167 173 -TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(167)146 294 y Fs(D)150 419 y Fe(DIRSTACK)18 +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(171)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)32 b Fb(75)150 506 y Fe(disable-completion)7 +(:)g(:)h(:)f(:)32 b Fb(76)150 503 y Fe(disable-completion)7 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(109)146 -810 y Fs(E)150 935 y Fe(echo-control-characters)12 b +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(111)146 +791 y Fs(E)150 913 y Fe(echo-control-characters)12 b Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)26 b Fb(109)150 1025 y Fe(editing-mode)f +g(:)g(:)g(:)h(:)26 b Fb(111)150 1002 y Fe(editing-mode)f Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(109)150 1115 y Fe(emacs-mode-string)10 b Fc(:)17 +b Fb(111)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17 b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(109)150 1205 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(111)150 1181 y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(75)150 -1295 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(77)150 +1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 -b Fb(110)150 1385 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +b Fb(112)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(110)150 1475 y Fe(ENV)14 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(112)150 1449 y Fe(ENV)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(76)150 -1565 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(77)150 +1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(76)150 1655 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)37 b Fb(77)150 1627 y Fe(EPOCHSECONDS)8 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +22 b Fb(77)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(77)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 -1742 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(77)150 +1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)37 b Fb(110)146 2046 y Fs(F)150 2171 +g(:)g(:)g(:)h(:)37 b Fb(112)146 2180 y Fs(F)150 2303 y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(76)150 -2261 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(77)150 +2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(76)150 -2351 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(77)150 +2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)150 2438 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(77)150 2568 y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)146 2731 y -Fs(G)150 2855 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)146 2844 y +Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 -2942 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150 +3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b -Fb(76)146 3235 y Fs(H)150 3360 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g +Fb(78)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(76)150 3450 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) +b Fb(78)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(77)150 3540 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) +b Fb(78)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(77)150 -3630 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(78)150 +3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(77)150 3720 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 3809 y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)22 b Fb(77)150 3810 y Fe(HISTIGNORE)13 +g(:)g(:)h(:)f(:)g(:)22 b Fb(79)150 3899 y Fe(HISTIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)27 b Fb(77)150 3900 y Fe(history-preserve-point)14 +(:)g(:)27 b Fb(79)150 3988 y Fe(history-preserve-point)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(110)150 3990 y Fe(history-size)c +h(:)f(:)g(:)g(:)29 b Fb(112)150 4077 y Fe(history-size)c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 -b Fb(110)150 4080 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(112)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b -Fb(78)150 4170 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +Fb(79)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(78)150 4260 y Fe(HOME)11 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(79)150 4345 y Fe(HOME)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(71)150 4350 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(72)150 4434 y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(110)150 -4440 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(112)150 +4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4530 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 4613 y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4617 y +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 4700 y Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)2021 294 y Fs(I)2025 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)2021 294 y Fs(I)2025 421 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 -b Fb(71)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(72)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(78)2025 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(80)2025 602 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(110)2025 693 y Fe(INPUTRC)c +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(112)2025 693 y Fe(INPUTRC)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)35 b Fb(78)2025 780 y Fe(isearch-terminators)26 +g(:)g(:)h(:)f(:)g(:)35 b Fb(80)2025 780 y Fe(isearch-terminators)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2021 1088 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(113)2021 1088 y Fs(K)2025 1211 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(111)2021 1531 y Fs(L)2025 1658 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g +b Fb(113)2021 1531 y Fs(L)2025 1658 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)26 b Fb(78)2025 1748 y Fe(LC_ALL)6 b Fc(:)14 +(:)g(:)g(:)g(:)26 b Fb(80)2025 1748 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 1839 y Fe(LC_COLLATE)13 +g(:)g(:)g(:)g(:)g(:)21 b Fb(80)2025 1839 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(78)2025 1930 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)h(:)27 b Fb(80)2025 1930 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(78)2025 2021 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +b Fb(80)2025 2021 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(7,)26 b(79)2025 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(7,)26 b(80)2025 2111 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(79)2025 2202 y +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(80)2025 2202 y Fe(LC_TIME)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(79)2025 2293 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(80)2025 2293 y Fe(LINENO)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(79)2025 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(80)2025 2380 y Fe(LINES)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 -b Fb(79)2021 2688 y Fs(M)2025 2815 y Fe(MACHTYPE)18 b +b Fb(80)2021 2688 y Fs(M)2025 2815 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)33 b Fb(79)2025 2906 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g +g(:)g(:)g(:)33 b Fb(80)2025 2906 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)26 b Fb(71)2025 2996 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)26 b Fb(72)2025 2996 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(79)2025 3087 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(80)2025 3087 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(71)2025 3178 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(72)2025 3178 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(79)2025 3269 y Fe(mark-modified-lines)26 b Fc(:)13 +b Fb(80)2025 3269 y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2025 3359 y Fe +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(113)2025 3359 y Fe (mark-symlinked-directories)27 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(111)2025 3450 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(113)2025 3450 y Fe(match-hidden-files)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(111)2025 3541 y Fe(menu-complete-display-prefix)17 +b Fb(113)2025 3541 y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 -b Fb(112)2025 3628 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g +b Fb(114)2025 3628 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(110)2021 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(112)2021 3947 y Fs(O)2025 4074 y Fe(OLDPWD)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4165 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(81)2025 4165 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(71)2025 4256 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(72)2025 4256 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4347 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(81)2025 4347 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(71)2025 4437 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(72)2025 4437 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(79)2025 4525 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:) +b Fb(81)2025 4525 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(112)p +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(114)p eop end -%%Page: 168 174 -TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(168)146 294 y Fs(P)150 410 y Fe(page-completions) +%%Page: 172 178 +TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(172)146 294 y Fs(P)150 410 y Fe(page-completions) 13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(112)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(114)150 497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 -b Fb(71)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(72)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(81)150 671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)32 b Fb(79)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)32 b Fb(81)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)25 b Fb(79)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 +(:)h(:)25 b Fb(81)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 -b Fb(79)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(81)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 1020 y Fe(PS0)14 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(81)150 1020 y Fe(PS0)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(80)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(81)150 1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(71)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(72)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(71)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(72)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(81)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(81)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 -b Fb(80)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 +b Fb(81)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)20 b Fb(80)150 1892 y Fe(READLINE_LINE)25 +g(:)g(:)g(:)h(:)f(:)20 b Fb(81)150 1892 y Fe(READLINE_LINE)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(80)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(81)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 2066 y Fe(REPLY)9 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(82)150 2066 y Fe(REPLY)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2153 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(82)150 2153 y Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(112)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13 +b Fb(114)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)35 b Fb(80)150 2589 y Fe(SHELL)9 b Fc(:)14 +g(:)g(:)g(:)35 b Fb(82)150 2589 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2676 y Fe(SHELLOPTS)15 +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(82)150 2676 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)30 b Fb(80)150 2763 y Fe(SHLVL)9 b Fc(:)14 +(:)g(:)g(:)30 b Fb(82)150 2763 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2851 y Fe(show-all-if-ambiguous) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(82)150 2851 y Fe(show-all-if-ambiguous) 17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 2938 y Fe +(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(114)150 2938 y Fe (show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(112)2025 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(114)2025 260 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 -b Fb(112)2025 347 y Fe(skip-completed-text)26 b Fc(:)13 +b Fb(114)2025 347 y Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2021 675 y Fs(T)2025 +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(114)2021 675 y Fs(T)2025 803 y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(7)2025 894 y @@ -20466,334 +20788,338 @@ Fe(TEXTDOMAINDIR)7 b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 985 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)27 b Fb(81)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +(:)h(:)27 b Fb(82)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)23 b Fb(81)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +g(:)23 b Fb(83)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 -b Fb(81)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g +b Fb(83)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)28 b Fb(81)2021 1920 y Fs(V)2025 2049 +(:)g(:)h(:)f(:)28 b Fb(83)2021 1920 y Fs(V)2025 2049 y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 -b Fb(113)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17 +b Fb(115)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(113)2025 2227 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(115)2025 2227 y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(113)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44 +f(:)g(:)35 b Fb(115)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44 b(Index)146 4147 y(A)150 4273 y Fe(abort)27 b(\(C-g\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 -b Fb(126)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 +b Fb(128)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27 -b Fb(120)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 +b Fb(122)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)146 4762 y Fs(B)150 +(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(130)146 4762 y Fs(B)150 4888 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)26 b Fb(119)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22 +(:)26 b Fb(121)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 -b Fb(121)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e +b Fb(124)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(122)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11 +Fb(125)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -26 b Fb(123)150 5250 y Fe(backward-word)j(\(M-b\))12 +26 b Fb(125)150 5250 y Fe(backward-word)j(\(M-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(119)150 5340 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(121)150 5340 y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(120)2025 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(122)2025 4117 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(119)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16 +b Fb(121)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)31 b Fb(122)2021 4499 y Fs(C)2025 4623 y Fe +g(:)g(:)31 b Fb(124)2021 4499 y Fs(C)2025 4623 y Fe (call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(126)2025 4713 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(128)2025 4713 y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(122)2025 4802 y Fe(character-search)29 b(\(C-]\))22 +b Fb(124)2025 4802 y Fe(character-search)29 b(\(C-]\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 4892 y Fe +(:)h(:)f(:)g(:)g(:)36 b Fb(129)2025 4892 y Fe (character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15 -b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(127)2025 4981 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(129)2025 4981 y Fe(clear-screen)j(\(C-l\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 -b Fb(119)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15 +b Fb(122)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(124)2025 5161 y Fe(complete-command)29 b(\(M-!\))22 +b Fb(126)2025 5161 y Fe(complete-command)29 b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)36 b Fb(125)2025 5250 y Fe(complete-filename)29 +(:)h(:)f(:)g(:)g(:)36 b Fb(127)2025 5250 y Fe(complete-filename)29 b(\(M-/\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(125)2025 5340 y Fe +f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(127)2025 5340 y Fe (complete-hostname)29 b(\(M-@\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(125)p eop end -%%Page: 169 175 -TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(169)150 264 y Fe(complete-into-braces)30 +b Fb(127)p eop end +%%Page: 173 179 +TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(173)150 264 y Fe(complete-into-braces)30 b(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)26 b Fb(125)150 354 y Fe(complete-username)j(\(M-~\))20 +(:)g(:)g(:)g(:)26 b Fb(128)150 354 y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(125)150 444 y Fe(complete-variable)c(\(M-$\))20 +(:)g(:)h(:)f(:)33 b Fb(127)150 444 y Fe(complete-variable)c(\(M-$\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)33 b Fb(125)150 534 y Fe(copy-backward-word)d(\(\))7 +(:)g(:)h(:)f(:)33 b Fb(127)150 534 y Fe(copy-backward-word)d(\(\))7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(123)150 624 y Fe(copy-forward-word) +(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(125)150 624 y Fe(copy-forward-word) 29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(126)150 711 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(123)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29 +b Fb(125)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(125)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) +b Fb(128)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)32 b Fb(121)150 1322 y Fe(delete-char-or-list)e +(:)g(:)g(:)g(:)g(:)32 b Fb(123)150 1322 y Fe(delete-char-or-list)e (\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)150 1412 y Fe +g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(127)150 1412 y Fe (delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(125)150 1502 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) -26 b Fb(124)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c +26 b Fb(126)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b -Fb(128)150 1673 y Fe(do-uppercase-version)30 b(\(M-a,)227 -1761 y(M-b,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +Fb(130)150 1673 y Fe(do-lowercase-version)30 b(\(M-A,)227 +1761 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)25 b Fb(126)150 1851 y Fe(downcase-word)k(\(M-l\)) +g(:)g(:)g(:)g(:)g(:)25 b Fb(128)150 1851 y Fe(downcase-word)k(\(M-l\)) 12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 1941 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(124)150 1941 y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -32 b Fb(127)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14 +32 b Fb(129)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(127)150 2121 y Fe(dump-variables)29 b(\(\))17 b +b Fb(129)150 2121 y Fe(dump-variables)29 b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(127)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(129)150 2208 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(125)146 2514 y Fs(E)150 -2639 y Fe(edit-and-execute-command)k(\(C-xC-e\))10 b -Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(128)150 -2729 y Fe(end-kbd-macro)k(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 -b Fb(126)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 +(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(127)146 2514 y Fs(E)150 +2639 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14 +b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(130)150 2729 +y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 +b Fb(128)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)35 b Fb(121)150 2909 y Fe(end-of-history)29 b(\(M->\))9 +(:)g(:)35 b Fb(123)150 2909 y Fe(end-of-history)29 b(\(M->\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(120)150 2999 y +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(122)150 2999 y Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(119)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26 +b Fb(121)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26 b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(126)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g +b Fb(129)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g (\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(121)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g +b Fb(124)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)29 b Fb(119)150 3697 y Fe(forward-search-history)i +h(:)f(:)g(:)g(:)29 b Fb(121)150 3697 y Fe(forward-search-history)i (\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)38 b Fb(120)150 3784 y Fe(forward-word)28 b(\(M-f\))14 +(:)38 b Fb(122)150 3784 y Fe(forward-word)28 b(\(M-f\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(119)146 4079 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(121)146 4079 y Fs(G)150 4204 y Fe(glob-complete-word)h(\(M-g\))16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)31 b Fb(127)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c +g(:)g(:)31 b Fb(130)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)38 b Fb(127)150 4382 y Fe(glob-list-expansions)30 +(:)g(:)g(:)38 b Fb(130)150 4382 y Fe(glob-list-expansions)30 b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)27 b Fb(128)2021 294 y Fs(H)2025 423 y Fe +(:)g(:)h(:)27 b Fb(130)2021 294 y Fs(H)2025 422 y Fe (history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)28 b Fb(128)2025 514 y Fe(history-expand-line)i +g(:)g(:)g(:)g(:)28 b Fb(130)2025 513 y Fe(history-expand-line)i (\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)28 b Fb(128)2025 606 y Fe(history-search-backward)j +g(:)g(:)g(:)h(:)28 b Fb(130)2025 604 y Fe(history-search-backward)j (\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)26 b Fb(120)2025 697 y Fe(history-search-forward)k(\(\))13 +(:)g(:)g(:)26 b Fb(123)2025 695 y Fe(history-search-forward)k(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(120)2025 789 y Fe(history-substr-search-backward)k(\(\))10 -b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(121)2025 -876 y Fe(history-substr-search-forward)32 b(\(\))13 b -Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(120)2021 -1210 y Fs(I)2025 1339 y Fe(insert-comment)h(\(M-#\))9 -b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 1431 -y Fe(insert-completions)29 b(\(M-*\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b -Fb(124)2025 1518 y Fe(insert-last-argument)f(\(M-.)c(or)g(M-_\))7 -b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(128)2021 -1852 y Fs(K)2025 1981 y Fe(kill-line)27 b(\(C-k\))c Fc(:)14 -b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025 -2073 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f +h(:)28 b Fb(122)2025 786 y Fe(history-substring-search-backw)q(ard)k +(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(123)2025 874 +y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b +Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(123)2021 1200 y Fs(I)2025 +1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(123)2025 2164 y Fe(kill-whole-line)29 -b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025 -2251 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +24 b Fb(129)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(126)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(130)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(125)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(125)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(125)2025 +2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)37 b Fb(123)2021 2575 y Fs(M)2025 2704 y +g(:)g(:)g(:)37 b Fb(125)2021 2548 y Fs(M)2025 2676 y Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)22 b Fb(128)2025 2796 y Fe(menu-complete)28 +g(:)g(:)h(:)f(:)22 b Fb(130)2025 2767 y Fe(menu-complete)28 b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 -b Fb(124)2025 2883 y Fe(menu-complete-backward)c(\(\))13 +b Fb(126)2025 2854 y Fe(menu-complete-backward)c(\(\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)28 b Fb(124)2021 3217 y Fs(N)2025 3346 y Fe(next-history)g(\(C-n\)) +h(:)28 b Fb(127)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\)) 14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(120)2025 -3429 y Fe(non-incremental-forward-)2102 3516 y(search-history)f -(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2025 3603 -y Fe(non-incremental-reverse-)2102 3690 y(search-history)28 -b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2021 4033 -y Fs(O)2025 4162 y Fe(operate-and-get-next)30 b(\(C-o\))11 -b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -26 b Fb(128)2025 4249 y Fe(overwrite-mode)j(\(\))17 b -Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(122)p +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(122)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(122)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(122)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(122)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(130)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(124)p eop end -%%Page: 170 176 -TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(170)146 294 y Fs(P)150 414 y Fe +%%Page: 174 180 +TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(174)146 294 y Fs(P)150 414 y Fe (possible-command-completions)32 b(\(C-x)26 b(!\))9 b -Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(125)150 502 y Fe +Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(127)150 503 y Fe (possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(124)150 -591 y Fe(possible-filename-completions)32 b(\(C-x)27 -b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 679 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(126)150 +592 y Fe(possible-filename-completions)32 b(\(C-x)27 +b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(127)150 680 y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 768 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(127)150 769 y Fe (possible-username-completions)32 b(\(C-x)27 b(~\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 857 y Fe +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(127)150 858 y Fe (possible-variable-completions)32 b(\(C-x)27 b($\))7 -b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 945 y Fe(prefix-meta)28 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(127)150 946 y Fe(prefix-meta)28 b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 -b Fb(126)150 1034 y Fe(previous-history)d(\(C-p\))23 +b Fb(128)150 1035 y Fe(previous-history)d(\(C-p\))23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(120)150 1121 y Fe(print-last-kbd-macro)30 +(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 1124 y Fe(previous-screen-line)30 b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(126)146 1393 y Fs(Q)150 -1512 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 b Fc(:)14 -b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(121)146 1785 y Fs(R)150 1905 y Fe(re-read-init-file)29 +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(121)150 1211 y Fe +(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(128)146 +1487 y Fs(Q)150 1606 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)22 b Fb(124)146 1881 y Fs(R)150 2002 y Fe(re-read-init-file)29 b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)30 b Fb(126)150 1993 y Fe(redraw-current-line)g(\(\))22 +(:)g(:)g(:)g(:)30 b Fb(128)150 2091 y Fe(redraw-current-line)g(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2082 y Fe(reverse-search-history)31 +(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 2179 y Fe(reverse-search-history)31 b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)38 b Fb(120)150 2169 y Fe(revert-line)28 b(\(M-r\))17 +g(:)38 b Fb(122)150 2266 y Fe(revert-line)28 b(\(M-r\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)146 -2431 y Fs(S)150 2552 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(128)146 +2532 y Fs(S)150 2652 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f (...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(122)150 2640 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 +b Fb(124)150 2741 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 -b Fb(126)150 2729 y Fe(shell-backward-kill-word)31 b(\(\))8 +b Fb(129)150 2830 y Fe(shell-backward-kill-word)31 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -23 b Fb(123)150 2817 y Fe(shell-backward-word)30 b(\(\))22 +23 b Fb(125)150 2918 y Fe(shell-backward-word)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2906 y Fe(shell-expand-line)29 +(:)f(:)g(:)g(:)g(:)36 b Fb(121)150 3007 y Fe(shell-expand-line)29 b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)28 b Fb(128)150 2994 y Fe(shell-forward-word)i(\(\)) +(:)g(:)h(:)f(:)g(:)28 b Fb(130)150 3096 y Fe(shell-forward-word)i(\(\)) 7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(119)150 3083 y +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(121)150 3184 y Fe(shell-kill-word)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 -b Fb(123)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14 +b Fb(125)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 351 y Fe(start-kbd-macro)29 +(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(129)2025 351 y Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(126)2021 -794 y Fs(T)2025 941 y Fe(tilde-expand)28 b(\(M-&\))14 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(128)2021 +821 y Fs(T)2025 972 y Fe(tilde-expand)28 b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025 -1038 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025 +1070 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 -b Fb(122)2025 1125 y Fe(transpose-words)29 b(\(M-t\))7 +b Fb(124)2025 1157 y Fe(transpose-words)29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(122)2021 1578 y Fs(U)2025 -1725 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(124)2021 1638 y Fs(U)2025 +1788 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)25 b Fb(126)2025 1822 y Fe(universal-argument)k(\(\))7 +g(:)25 b Fb(128)2025 1887 y Fe(universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(124)2025 1920 y Fe +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(126)2025 1985 y Fe (unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(123)2025 2017 y Fe(unix-line-discard)29 b(\(C-u\))20 +b Fb(125)2025 2084 y Fe(unix-line-discard)29 b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)34 b Fb(123)2025 2114 y Fe(unix-word-rubout)29 +(:)g(:)g(:)g(:)34 b Fb(125)2025 2182 y Fe(unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(123)2025 2201 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(125)2025 2269 y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)32 b Fb(122)2021 2654 y Fs(Y)2025 2801 y Fe(yank)26 +g(:)32 b Fb(124)2021 2750 y Fs(Y)2025 2900 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)33 b Fb(123)2025 2898 y Fe(yank-last-arg)28 +g(:)g(:)g(:)g(:)33 b Fb(126)2025 2999 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(121)2025 2996 +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(123)2025 3097 y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 -b Fb(121)2025 3083 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 +b Fb(123)2025 3184 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 -b Fb(123)150 3832 y Fs(D.5)68 b(Concept)45 b(Index)146 -4425 y(A)150 4553 y Fb(alias)27 b(expansion)7 b Fc(:)14 +b Fb(126)150 3933 y Fs(D.5)68 b(Concept)45 b(Index)146 +4527 y(A)150 4652 y Fb(alias)27 b(expansion)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 -b Fb(90)150 4644 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 +b Fb(92)150 4742 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(89)150 4735 y(arithmetic)26 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(91)150 4832 y(arithmetic)26 b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 -b Fb(29)150 4826 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +b Fb(30)150 4923 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(89)150 4914 +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(91)150 5010 y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(91)2021 -4425 y Fs(B)2025 4551 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(93)2021 +4527 y Fs(B)2025 4650 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(100)2025 -4641 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(102)2025 +4739 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)26 b Fb(142)2025 4732 y(Bash)g(installation)9 +g(:)g(:)26 b Fb(145)2025 4829 y(Bash)g(installation)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 -b Fb(142)2025 4822 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(145)2025 4918 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b -Fb(5)2025 4913 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) +Fb(5)2025 5008 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(21)2025 5000 y(builtin)15 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(22)2025 5095 y(builtin)15 b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end -%%Page: 171 177 -TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(171)146 294 y Fs(C)150 418 y Fb(command)26 +%%Page: 175 181 +TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(175)146 294 y Fs(C)150 418 y Fb(command)26 b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 -b Fb(105)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g +b Fb(107)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)26 b Fb(37)150 597 y(command)g(expansion)c +g(:)h(:)f(:)g(:)g(:)26 b Fb(38)150 597 y(command)g(expansion)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(36)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(37)150 687 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)33 b Fb(137)150 777 y(command)26 b(searc)n(h)16 +g(:)g(:)g(:)33 b Fb(140)150 777 y(command)26 b(searc)n(h)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 -b Fb(37)150 866 y(command)c(substitution)21 b Fc(:)13 +b Fb(38)150 866 y(command)c(substitution)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(29)150 956 y(command)26 +(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(30)150 956 y(command)26 b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)28 b Fb(8)150 1046 y(commands,)e(comp)r(ound)7 b Fc(:)14 @@ -20801,7 +21127,7 @@ b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(9)150 1135 y(commands,)k(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 -b Fb(10)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +b Fb(11)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)29 b Fb(14)150 1315 y(commands,)d(lists)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) @@ -20821,10 +21147,10 @@ b Fb(8)150 1764 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150 1853 y(completion)f(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)36 b Fb(131)150 1943 y(con\014guration)22 b Fc(:)13 +g(:)36 b Fb(133)150 1943 y(con\014guration)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(142)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b Fb(145)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(3)150 2120 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g @@ -20833,44 +21159,44 @@ f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b Fb(15)146 2416 y Fs(D)150 2537 y Fb(directory)26 b(stac)n(k)11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 -b Fb(93)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17 +b Fb(95)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(105)150 3046 y(en)n(vironmen)n(t)18 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(107)150 3046 y(en)n(vironmen)n(t)18 b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)32 b Fb(38)150 3136 y(ev)l(aluation,)26 b(arithmetic)12 +f(:)32 b Fb(39)150 3136 y(ev)l(aluation,)26 b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(89)150 3226 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(91)150 3226 y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)34 b Fb(140)150 3316 y(execution)26 b(en)n(vironmen)n(t)17 +g(:)h(:)34 b Fb(143)150 3316 y(execution)26 b(en)n(vironmen)n(t)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(37)150 3405 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(38)150 3405 y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(39)150 3495 y(expansion)9 +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(40)150 3495 y(expansion)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)24 b Fb(21)150 3585 y(expansion,)i(arithmetic)18 +g(:)g(:)g(:)g(:)24 b Fb(22)150 3585 y(expansion,)i(arithmetic)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(29)150 3674 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(30)150 3674 y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)30 b Fb(21)150 3764 y(expansion,)c(\014lename)18 +f(:)g(:)g(:)30 b Fb(22)150 3764 y(expansion,)c(\014lename)18 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(30)150 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3854 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)34 b Fb(23)150 3944 y(expansion,)26 b(pathname)7 +g(:)34 b Fb(24)150 3944 y(expansion,)26 b(pathname)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(30)150 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(31)150 4033 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)28 b Fb(22)150 4123 y(expressions,)f(arithmetic)13 +h(:)f(:)g(:)g(:)g(:)28 b Fb(23)150 4123 y(expressions,)f(arithmetic)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(89)150 4210 y(expressions,)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(91)150 4210 y(expressions,)g (conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(87)2021 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(89)2021 294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g @@ -20879,40 +21205,40 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(30)2025 682 y(foreground)9 +g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(31)2025 682 y(foreground)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)24 b Fb(100)2025 769 y(functions,)i(shell)9 b +h(:)f(:)24 b Fb(102)2025 769 y(functions,)i(shell)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 b Fb(17)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 -b Fb(137)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 +b Fb(140)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 -b Fb(140)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) +b Fb(143)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(139)2025 1436 y(history)c(list)9 +(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(142)2025 1436 y(history)c(list)9 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)24 b Fb(137)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) +g(:)g(:)24 b Fb(140)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) 19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(136)2021 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(139)2021 1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)32 b Fb(107)2025 2102 y(installation)21 +f(:)g(:)g(:)g(:)32 b Fb(109)2025 2102 y(installation)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)34 b Fb(142)2025 2191 y(in)n(teraction,)26 b(readline)7 +g(:)34 b Fb(145)2025 2191 y(in)n(teraction,)26 b(readline)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(104)2025 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(106)2025 2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)34 b Fb(84,)27 b(85)2025 2367 y(in)n(ternationalization)22 +h(:)f(:)g(:)34 b Fb(86,)27 b(87)2025 2367 y(in)n(ternationalization)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13 @@ -20921,29 +21247,29 @@ b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845 y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(100)2021 3124 y Fs(K)2025 +g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(102)2021 3124 y Fs(K)2025 3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(106)2025 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(108)2025 3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(106)2021 3612 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(108)2021 3612 y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 -b Fb(84)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 +b Fb(86)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 -b Fb(31)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +b Fb(32)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p eop end -%%Page: 172 178 -TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(172)146 294 y Fs(N)150 410 y Fb(name)19 +%%Page: 176 182 +TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(176)146 294 y Fs(N)150 410 y Fb(name)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497 @@ -20952,26 +21278,26 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27 b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 -b Fb(105)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c +b Fb(107)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) 37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26 b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 -b Fb(23)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(24)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(18)150 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(19)150 1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)21 b Fb(19)150 1562 y(parameters,)27 b(sp)r(ecial)7 +f(:)g(:)21 b Fb(20)150 1562 y(parameters,)27 b(sp)r(ecial)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 -b Fb(20)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g +b Fb(21)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)32 b Fb(30)150 1736 y(pattern)25 b(matc)n(hing)c +h(:)f(:)g(:)32 b Fb(31)150 1736 y(pattern)25 b(matc)n(hing)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(31)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(32)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g @@ -20979,7 +21305,7 @@ b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(96)150 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(98)150 2085 y(pro)r(cess)c(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d @@ -20990,9 +21316,9 @@ b Fc(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(30)150 2347 y(programmable)i(completion)8 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 -b Fb(129)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(131)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(94)146 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(96)146 2676 y Fs(Q)150 2792 y Fb(quoting)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 @@ -21001,50 +21327,50 @@ b Fb(6)150 2879 y(quoting,)26 b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)146 3121 y Fs(R)150 3237 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(103)150 3325 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(105)150 3325 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(32)150 3412 y(reserv)n(ed)f(w)n +g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(33)150 3412 y(reserv)n(ed)f(w)n (ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)28 b Fb(3)150 3499 y(restricted)e(shell)14 b Fc(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)29 -b Fb(95)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(97)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021 294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(89)2025 520 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(91)2025 520 y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(17)2025 613 y(shell)26 b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(40)2025 706 y(shell)h(v)l(ariable)7 +(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(41)2025 706 y(shell)h(v)l(ariable)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)22 b Fb(18)2025 799 y(shell,)k(in)n(teractiv)n(e)21 +g(:)22 b Fb(19)2025 799 y(shell,)k(in)n(teractiv)n(e)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(85)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(87)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(39)2025 1077 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(40)2025 1077 y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(70)2025 1170 y(startup)f(\014les)10 +g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(71)2025 1170 y(startup)f(\014les)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)25 b Fb(84)2025 1257 y(susp)r(ending)g(jobs)10 +(:)g(:)25 b Fb(86)2025 1257 y(susp)r(ending)g(jobs)10 b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 -b Fb(100)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7 +b Fb(102)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 -b Fb(22)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(23)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(4)2025 1932 y(translation,)27 b(nativ)n(e)e(languages)c @@ -21052,19 +21378,19 @@ Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)34 b Fb(7)2021 2294 y Fs(V)2025 2427 y Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(18)2025 2515 y(v)l(ariables,)f +g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(19)2025 2515 y(v)l(ariables,)f (readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 -b Fb(108)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b +b Fb(110)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3097 y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(30)2021 3458 y Fs(Y)2025 +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(31)2021 3458 y Fs(Y)2025 3586 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(106)p eop end +g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(108)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/bashref.texi b/doc/bashref.texi index c0f4a2f8a..c97e1175c 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -14,7 +14,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. -Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2018 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -508,7 +508,7 @@ double quote question mark @item \@var{nnn} the eight-bit character whose value is the octal value @var{nnn} -(one to three digits) +(one to three octal digits) @item \x@var{HH} the eight-bit character whose value is the hexadecimal value @var{HH} (one or two hex digits) @@ -659,8 +659,13 @@ the time information. If the pipeline is not executed asynchronously (@pxref{Lists}), the shell waits for all commands in the pipeline to complete. -Each command in a pipeline is executed in its own subshell -(@pxref{Command Execution Environment}). The exit +Each command in a pipeline is executed in its own subshell, which is a +separate process (@pxref{Command Execution Environment}). +If the @code{lastpipe} option is enabled using the @code{shopt} builtin +(@pxref{The Shopt Builtin}), +the last element of a pipeline may be run by the shell process. + +The exit status of a pipeline is the exit status of the last command in the pipeline, unless the @code{pipefail} option is enabled (@pxref{The Set Builtin}). @@ -714,7 +719,7 @@ An @sc{and} list has the form @noindent @var{command2} is executed if, and only if, @var{command1} -returns an exit status of zero. +returns an exit status of zero (success). An @sc{or} list has the form @example @@ -739,7 +744,7 @@ executed in the list. * Command Grouping:: Ways to group commands. @end menu -Compound commands are the shell programming constructs. +Compound commands are the shell programming language constructs. Each construct begins with a reserved word or control operator and is terminated by a corresponding reserved word or operator. Any redirections (@pxref{Redirections}) associated with a compound command @@ -798,12 +803,14 @@ The syntax of the @code{for} command is: for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done @end example -Expand @var{words}, and execute @var{commands} once for each member +Expand @var{words} (@pxref{Shell Expansions}), and execute @var{commands} +once for each member in the resultant list, with @var{name} bound to the current member. If @samp{in @var{words}} is not present, the @code{for} command executes the @var{commands} once for each positional parameter that is set, as if @samp{in "$@@"} had been specified (@pxref{Special Parameters}). + The return status is the exit status of the last command that executes. If there are no items in the expansion of @var{words}, no commands are executed, and the return status is zero. @@ -874,6 +881,8 @@ case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-li @code{case} will selectively execute the @var{command-list} corresponding to the first @var{pattern} that matches @var{word}. +The match is performed according +to the rules described below in @ref{Pattern Matching}. If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case @@ -885,7 +894,9 @@ as a @var{clause}. Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}. The @var{word} undergoes tilde expansion, parameter expansion, command -substitution, arithmetic expansion, and quote removal before matching is +substitution, arithmetic expansion, and quote removal +(@pxref{Shell Parameter Expansion}) +before matching is attempted. Each @var{pattern} undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. @@ -1010,7 +1021,7 @@ If the @code{nocasematch} shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (@samp{==}) or does not -match (@samp{!=})the pattern, and 1 otherwise. +match (@samp{!=}) the pattern, and 1 otherwise. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. @@ -1045,7 +1056,7 @@ if there is a sequence of characters in the value consisting of any number, including zero, of space characters, zero or one instances of @samp{a}, then a @samp{b}: @example -[[ $line =~ [[:space:]]*(a)?b ]] +[[ $line =~ [[:space:]]*?(a)b ]] @end example @noindent @@ -1061,7 +1072,7 @@ expressions while paying attention to the shell's quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: @example -pattern='[[:space:]]*(a)?b' +pattern='[[:space:]]*?(a)b' [[ $line =~ $pattern ]] @end example @@ -1197,7 +1208,8 @@ This pipe is established before any redirections specified by the command (@pxref{Redirections}). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. -The file descriptors are not available in subshells. +Other than those created to execute command and process substitutions, +the file descriptors are not available in subshells. The process ID of the shell spawned to execute the coprocess is available as the value of the variable @env{NAME}_PID. @@ -1308,7 +1320,7 @@ will ensure that the output of @code{traceroute foss.org.my} is displayed first. Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to @samp{cat file | bash}. It is not uncommon to take a list of filenames, create a series of shell -commands to operate on them, and feed that list of commnds to a shell. +commands to operate on them, and feed that list of commands to a shell. Parallel can speed this up. Assuming that @file{file} contains a list of shell commands, one per line, @@ -1424,7 +1436,66 @@ before the @code{return}. Variables local to the function may be declared with the @code{local} builtin. These variables are visible only to -the function and the commands it invokes. +the function and the commands it invokes. This is particularly +important when a shell function calls other functions. + +Local variables "shadow" variables with the same name declared at +previous scopes. For instance, a local variable declared in a function +hides a global variable of the same name: references and assignments +refer to the local variable, leaving the global variable unmodified. +When the function returns, the global variable is once again visible. + +The shell uses @var{dynamic scoping} to control a variable's visibility +within functions. +With dynamic scoping, visible variables and their values +are a result of the sequence of function calls that caused execution +to reach the current function. +The value of a variable that a function sees depends +on its value within its caller, if any, whether that caller is +the "global" scope or another shell function. +This is also the value that a local variable +declaration "shadows", and the value that is restored when the function +returns. + +For example, if a variable @var{var} is declared as local in function +@var{func1}, and @var{func1} calls another function @var{func2}, +references to @var{var} made from within @var{func2} will resolve to the +local variable @var{var} from @var{func1}, shadowing any global variable +named @var{var}. + +The following script demonstrates this behavior. +When executed, the script displays + +@example +In func2, var = func1 local +@end example + +@example +func1() +@{ + local var='func1 local' + func2 +@} + +func2() +@{ + echo "In func2, var = $var" +@} + +var=global +func1 +@end example + +The @code{unset} builtin also acts using the same dynamic scope: if a +variable is local to the current scope, @code{unset} will unset it; +otherwise the unset will refer to the variable found in any calling scope +as described above. +If a variable at the current local scope is unset, it will remain so +until it is reset in that scope or until the function returns. +Once the function returns, any instance of the variable at a previous +scope will become visible. +If the unset acts on a variable at a previous scope, any instance of a +variable with that name that had been shadowed will become visible. Function names and definitions may be listed with the @option{-f} option to the @code{declare} (@code{typeset}) @@ -1437,10 +1508,6 @@ Functions may be exported so that subshells automatically have them defined with the @option{-f} option to the @code{export} builtin (@pxref{Bourne Shell Builtins}). -Note that shell functions and variables with the same name may result -in multiple identically-named entries in the environment passed to the -shell's children. -Care should be taken in cases where this may cause a problem. Functions may be recursive. The @code{FUNCNEST} variable may be used to limit the depth of the @@ -1708,10 +1775,11 @@ original word are removed unless they have been quoted themselves (@var{quote removal}). Only brace expansion, word splitting, and filename expansion -can change the number of words of the expansion; other expansions +can increase the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -@code{"$@@"} (@pxref{Special Parameters}) and @code{"$@{@var{name}[@@]@}"} +@code{"$@@"} and @code{$*} (@pxref{Special Parameters}), and +@code{"$@{@var{name}[@@]@}"} and @code{$@{@var{name}[*]@}} (@pxref{Arrays}). After all expansions, @code{quote removal} (@pxref{Quote Removal}) @@ -1765,8 +1833,6 @@ and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. -To avoid conflicts with parameter expansion, the string @samp{$@{} -is not considered eligible for brace expansion. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid @@ -1776,7 +1842,8 @@ Any incorrectly formed brace expansion is left unchanged. A @{ or @samp{,} may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with parameter expansion, the string @samp{$@{} -is not considered eligible for brace expansion. +is not considered eligible for brace expansion, +and inhibits brace expansion until the closing @samp{@}}.. This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the @@ -1893,6 +1960,8 @@ Bash uses the value of the variable formed from the rest of expanded and that value is used in the rest of the substitution, rather than the value of @var{parameter} itself. This is known as @code{indirect expansion}. +The value is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. If @var{parameter} is a nameref, this expands to the name of the variable referenced by @var{parameter} instead of performing the complete indirect expansion. @@ -2120,8 +2189,8 @@ array, and an index of -1 references the last element. @item $@{@var{parameter}#@var{word}@} @itemx $@{@var{parameter}##@var{word}@} The @var{word} -is expanded to produce a pattern just as in filename -expansion (@pxref{Filename Expansion}). If the pattern matches +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). If the pattern matches the beginning of the expanded value of @var{parameter}, then the result of the expansion is the expanded value of @var{parameter} with the shortest matching pattern (the @samp{#} case) or the @@ -2136,8 +2205,9 @@ array in turn, and the expansion is the resultant list. @item $@{@var{parameter}%@var{word}@} @itemx $@{@var{parameter}%%@var{word}@} -The @var{word} is expanded to produce a pattern just as in -filename expansion. +The @var{word} +is expanded to produce a pattern and matched according to the rules +described below (@pxref{Pattern Matching}). If the pattern matches If the pattern matches a trailing portion of the expanded value of @var{parameter}, then the result of the expansion is the value of @var{parameter} with the shortest matching pattern (the @samp{%} case) @@ -2156,6 +2226,8 @@ The @var{pattern} is expanded to produce a pattern just as in filename expansion. @var{Parameter} is expanded and the longest match of @var{pattern} against its value is replaced with @var{string}. +The match is performed according to the rules described below +(@pxref{Pattern Matching}). If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are replaced with @var{string}. Normally only the first match is replaced. If @var{pattern} begins with @samp{#}, it must match at the beginning @@ -2213,7 +2285,7 @@ The expansion is a string that is the value of @var{parameter} quoted in a format that can be reused as input. @item E The expansion is a string that is the value of @var{parameter} with backslash -escape sequences expanded as with the @code{$'@dots{}'} quoting mechansim. +escape sequences expanded as with the @code{$'@dots{}'} quoting mechanism. @item P The expansion is a string that is the result of expanding the value of @var{parameter} as if it were a prompt string (@pxref{Controlling the Prompt}). @@ -2410,18 +2482,23 @@ without regard to the case of alphabetic characters. When a pattern is used for filename expansion, the character @samp{.} at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option @code{dotglob} is set. -When matching a filename, the slash character must always be -matched explicitly. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. In other cases, the @samp{.} character is not treated specially. +When matching a filename, the slash character must always be +matched explicitly by a slash in the pattern, but in other matching +contexts it can be matched by a special pattern character as described +below (@pxref{Pattern Matching}). + See the description of @code{shopt} in @ref{The Shopt Builtin}, for a description of the @code{nocaseglob}, @code{nullglob}, @code{failglob}, and @code{dotglob} options. The @env{GLOBIGNORE} -shell variable may be used to restrict the set of filenames matching a +shell variable may be used to restrict the set of file names matching a pattern. If @env{GLOBIGNORE} -is set, each matching filename that also matches one of the patterns in +is set, each matching file name that also matches one of the patterns in @env{GLOBIGNORE} is removed from the list of matches. If the @code{nocaseglob} option is set, the matching against the patterns in @env{GLOBIGNORE} is performed without regard to case. @@ -2533,6 +2610,12 @@ Matches one of the given patterns. Matches anything except one of the given patterns. @end table +Complicated extended pattern matching against long strings is slow, +especially when the patterns contain alternations and the strings +contain multiple matches. +Using separate matches against shorter strings, or using arrays of +strings instead of a single long string, may be faster. + @node Quote Removal @subsection Quote Removal @@ -2565,6 +2648,9 @@ In this case, for each redirection operator except than 10 and assign it to @{@var{varname}@}. If >&- or <&- is preceded by @{@var{varname}@}, the value of @var{varname} defines the file descriptor to close. +If @{@var{varname}@} is supplied, the redirection persists beyond +the scope of the command, allowing the shell programmer to manage +the file descriptor himself. In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is @@ -2761,7 +2847,7 @@ A variant of here documents, the format is: @end example The @var{word} undergoes -brace expansion, tilde expansion, parameter and variable expansion, +tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. The result is supplied as a single string, @@ -2922,9 +3008,10 @@ A full search of the directories in @env{$PATH} is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named @code{command_not_found_handle}. -If that function exists, it is invoked with the original command and +If that function exists, it is invoked in a separate execution environment +with the original command and the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. +exit status becomes the exit status of that subshell. If that function is not defined, the shell prints an error message and returns an exit status of 127. @@ -3262,7 +3349,7 @@ Many of the builtins have been extended by @sc{posix} or Bash. Unless otherwise noted, each builtin command documented as accepting options preceded by @samp{-} accepts @samp{--} to signify the end of the options. -The @code{:}, @code{true}, @code{false}, and @code{test} +The @code{:}, @code{true}, @code{false}, and @code{test}/@code{[} builtins do not accept options and do not treat @samp{--} specially. The @code{exit}, @code{logout}, @code{return}, @code{break}, @code{continue}, @code{let}, @@ -3417,6 +3504,7 @@ cannot be executed for some reason, a non-interactive shell exits, unless the @code{execfail} shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. +A subshell exits unconditionally if @code{exec} fails. If no @var{command} is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero. @@ -3525,7 +3613,7 @@ The @option{-d} option causes the shell to forget the remembered location of each @var{name}. If the @option{-t} option is supplied, the full pathname to which each @var{name} corresponds is printed. If multiple @var{name} arguments are -supplied with @option{-t} the @var{name} is printed before the hashed +supplied with @option{-t}, the @var{name} is printed before the hashed full pathname. The @option{-l} option causes output to be displayed in a format that may be reused as input. @@ -3587,7 +3675,7 @@ If @var{n} is not supplied, the return value is the exit status of the last command executed in the function. If @code{return} is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if @code{return} is executed during a @code{DEBUG} trap, the last command +If @code{return} is executed during a @code{DEBUG} trap, the last command used to determine the status is the last command executed by the trap handler before @code{return} was invoked. @code{return} may also be used to terminate execution of a script @@ -3668,7 +3756,7 @@ expressions using a set of rules based on the number of arguments. The expression is false. @item 1 argument -The expression is true if and only if the argument is not null. +The expression is true if, and only if, the argument is not null. @item 2 arguments If the first argument is @samp{!}, the expression is true if and @@ -4280,6 +4368,8 @@ Options, if supplied, have the following meanings: @item -d The first character of @var{delim} is used to terminate each input line, rather than newline. +If @var{delim} is the empty string, @code{mapfile} will terminate a line +when it reads a NUL character. @item -n Copy at most @var{count} lines. If @var{count} is 0, all lines are copied. @item -O @@ -4292,7 +4382,7 @@ Remove a trailing @var{delim} (default newline) from each line read. @item -u Read lines from file descriptor @var{fd} instead of the standard input. @item -C -Evaluate @var{callback} each time @var{quantum}P lines are read. +Evaluate @var{callback} each time @var{quantum} lines are read. The @option{-c} option specifies @var{quantum}. @item -c Specify the number of lines read between each call to @var{callback}. @@ -4405,11 +4495,13 @@ Other @var{name} arguments are ignored. @item -d @var{delim} The first character of @var{delim} is used to terminate the input line, rather than newline. +If @var{delim} is the empty string, @code{read} will terminate a line +when it reads a NUL character. @item -e Readline (@pxref{Command Line Editing}) is used to obtain the line. Readline uses the current (or default, if line editing was not previously -active) editing settings. +active) editing settings, but uses Readline's default filename completion. @item -i @var{text} If Readline is being used to read the line, @var{text} is placed into @@ -4972,7 +5064,8 @@ The settings can be either those listed below, or, if the @option{-o} option is used, those available with the @option{-o} option to the @code{set} builtin command (@pxref{The Set Builtin}). With no options, or with the @option{-p} option, a list of all settable -options is displayed, with an indication of whether or not each is set. +options is displayed, with an indication of whether or not each is set; +if @var{optnames} are supplied, the output is restricted to those options. The @option{-p} option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: @@ -5012,6 +5105,11 @@ option. The list of @code{shopt} options is: @table @code +@item assoc_expand_once +If set, the shell suppresses multiple evaluation of associative array +subscripts during arithmetic expression evaluation and while executing +builtins that can perform variable assignments. + @item autocd If set, a command name that is the name of a directory is executed as if it were the argument to the @code{cd} command. @@ -5044,8 +5142,8 @@ intervening command (@pxref{Job Control}). The shell always postpones exiting if any jobs are stopped. @item checkwinsize -If set, Bash checks the window size after each command - and, if necessary, updates the values of +If set, Bash checks the window size after each external (non-builtin) +command and, if necessary, updates the values of @env{LINES} and @env{COLUMNS}. @item cmdhist @@ -5053,6 +5151,8 @@ If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. +This option is enabled by default, but only has an effect if command +history is enabled (@pxref{Bash History Facilities}). @item compat31 If set, Bash @@ -5106,6 +5206,11 @@ and does not reset the loop state when a shell function is executed (this allows @code{break} or @code{continue} in a shell function to affect loops in the caller's context). +@item compat44 +If set, Bash +saves the positional parameters to BASH_ARGV and BASH_ARGC before they are +used, regardless of whether or not extended debugging mode is enabled. + @item complete_fullquote If set, Bash quotes all shell metacharacters in filenames and directory names when @@ -5138,6 +5243,8 @@ if the directory name initially supplied does not exist. @item dotglob If set, Bash includes filenames beginning with a `.' in the results of filename expansion. +The filenames @samp{.} and @samp{..} must always be matched explicitly, +even if @code{dotglob} is set. @item execfail If this is set, a non-interactive shell will not exit if @@ -5271,6 +5378,11 @@ If enabled, and the @code{cmdhist} option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. +@item localvar_inherit +If set, local variables inherit the value and attributes of a variable of +the same name that exists at a previous scope before any new value is +assigned. The @var{nameref} attribute is not inherited. + @item login_shell The shell sets this option if it is started as a login shell (@pxref{Invoking Bash}). @@ -5444,6 +5556,8 @@ sequences that are expanded before @env{PS1} is displayed. @item PS2 The secondary prompt string. The default value is @samp{> }. +@env{PS2} is expanded in the same way as @env{PS1} before being +displayed. @end vtable @@ -5476,6 +5590,10 @@ reading any startup files. This variable is readonly. Expands to the process ID of the current Bash process. This differs from @code{$$} under certain circumstances, such as subshells that do not require Bash to be re-initialized. +Assignments to @env{BASHPID} have no effect. +If @code{BASHPID} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_ALIASES An associative array variable whose members correspond to the internal @@ -5499,6 +5617,8 @@ The shell sets @code{BASH_ARGC} only when in extended debugging mode (see @ref{The Shopt Builtin} for a description of the @code{extdebug} option to the @code{shopt} builtin). +Setting @code{extdebug} after the shell has started to execute a script +may result in inconsistent values. @item BASH_ARGV An array variable containing all of the parameters in the current bash @@ -5510,6 +5630,18 @@ The shell sets @code{BASH_ARGV} only when in extended debugging mode (see @ref{The Shopt Builtin} for a description of the @code{extdebug} option to the @code{shopt} builtin). +Setting @code{extdebug} after the shell has started to execute a script +may result in inconsistent values. + +@item BASH_ARGV0 +When referenced, this variable expands to the name of the shell or shell +script (identical to @code{$0}; @xref{Special Parameters}, +for the description of special parameter 0). +Assignment to @code{BASH_ARGV0} +causes the value assigned to also be assigned to @code{$0}. +If @code{BASH_ARGV0} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_CMDS An associative array variable whose members correspond to the internal @@ -5726,6 +5858,23 @@ Emacs shell buffer and disables line editing. Similar to @code{BASH_ENV}; used when the shell is invoked in @sc{posix} Mode (@pxref{Bash POSIX Mode}). +@item EPOCHREALTIME +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch as a floating point value with micro-second granularity +(see the documentation for the C library function @var{time} for the +definition of Epoch). +Assignments to @env{EPOCHREALTIME} are ignored. +If @env{EPOCHREALTIME} is unset, it loses its special properties, even if +it is subsequently reset. + +@item EPOCHSECONDS +Each time this parameter is referenced, it expands to the number of seconds +since the Unix Epoch (see the documentation for the C library function +@var{time} for the definition of Epoch). +Assignments to @env{EPOCHSECONDS} are ignored. +If @env{EPOCHSECONDS} is unset, it loses its special properties, even if +it is subsequently reset. + @item EUID The numeric effective user id of the current user. This variable is readonly. @@ -5783,9 +5932,9 @@ nesting level. Function invocations that exceed this nesting level will cause the current command to abort. @item GLOBIGNORE -A colon-separated list of patterns defining the set of filenames to +A colon-separated list of patterns defining the set of file names to be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one +If a file name matched by a filename expansion pattern also matches one of the patterns in @env{GLOBIGNORE}, it is removed from the list of matches. The pattern matching honors the setting of the @code{extglob} shell @@ -5916,7 +6065,7 @@ as the sole input. If set, the value denotes the number of consecutive @code{EOF} characters that can be read as the first character on an input line before the shell will exit. If the variable exists but does not -have a numeric value (or has no value) then the default is 10. +have a numeric value, or has no value, then the default is 10. If the variable does not exist, then @code{EOF} signifies the end of input to the shell. This is only in effect for interactive shells. @@ -6034,10 +6183,11 @@ The value of this variable is used as the prompt for the @code{select} command prompts with @samp{#? } @item PS4 -The value is the prompt printed before the command line is echoed -when the @option{-x} option is set (@pxref{The Set Builtin}). -The first character of @env{PS4} is replicated multiple times, as -necessary, to indicate multiple levels of indirection. +The value of this parameter is expanded like @var{PS1} +and the expanded value is the prompt printed before the command line +is echoed when the @option{-x} option is set (@pxref{The Set Builtin}). +The first character of the expanded value is replicated multiple times, +as necessary, to indicate multiple levels of indirection. The default is @samp{+ }. @item PWD @@ -6286,7 +6436,8 @@ Make the shell a restricted shell (@pxref{The Restricted Shell}). If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set -when invoking an interactive shell. +when invoking an interactive shell or when reading input +through a pipe. @item -D A list of all double-quoted strings preceded by @samp{$} @@ -6526,7 +6677,10 @@ signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. Bash expands and displays @env{PS1} before reading the first line of a command, and expands and displays @env{PS2} before reading the second and subsequent lines of a multi-line command. -Bash displays @env{PS0} after it reads a command but before executing it. +Bash expands and displays @env{PS0} after it reads a command but before +executing it. +See @ref{Controlling the Prompt}, for a complete list of prompt +string escape sequences. @item Bash executes the value of the @env{PROMPT_COMMAND} variable as a command @@ -6558,7 +6712,7 @@ In the absence of any traps, Bash ignores @code{SIGTERM} @item In the absence of any traps, @code{SIGINT} is caught and handled -((@pxref{Signals}). +(@pxref{Signals}). @code{SIGINT} will interrupt some shell builtins. @item @@ -6758,6 +6912,8 @@ is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to @var{arg2}, respectively. @var{Arg1} and @var{arg2} may be positive or negative integers. +When used with the @code{[[} command, @var{Arg1} and @var{Arg2} +are evaluated as arithmetic expressions (@pxref{Shell Arithmetic}). @end table @node Shell Arithmetic @@ -7047,12 +7203,16 @@ The @code{unset} builtin is used to destroy arrays. @code{unset @var{name}[@var{subscript}]} destroys the array element at index @var{subscript}. Negative subscripts to indexed arrays are interpreted as described above. -Care must be taken to avoid unwanted side effects caused by filename -expansion. +Unsetting the last element of an array variable does not unset the variable. @code{unset @var{name}}, where @var{name} is an array, removes the entire array. A subscript of @samp{*} or @samp{@@} also removes the entire array. +When using a variable name with a subscript as an argument to a command, +such as with @code{unset}, without using the word expansion syntax +described above, the argument is subject to the shell's filename expansion. +If filename expansion is not desired, the argument should be quoted. + The @code{declare}, @code{local}, and @code{readonly} builtins each accept a @option{-a} option to specify an indexed array and a @option{-A} option to specify an associative array. @@ -7186,7 +7346,8 @@ has a non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters which -can appear in the prompt variables @env{PS1} to @env{PS4}: +can appear in the prompt variables @env{PS0}, @env{PS1}, @env{PS2}, and +@env{PS4}: @table @code @item \a @@ -7738,6 +7899,11 @@ The @code{jobs} command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. +When the shell is waiting for a job or process using the @code{wait} +builtin, and job control is enabled, @code{wait} will return when the +job changes state. The @option{-f} option will force @code{wait} to wait +until the job or process terminates before returning. + @node Job Control Builtins @section Job Control Builtins @@ -7834,7 +8000,7 @@ or non-zero if an error occurs or an invalid option is encountered. @item wait @btindex wait @example -wait [-n] [@var{jobspec} or @var{pid} @dots{}] +wait [-fn] [@var{jobspec} or @var{pid} @dots{}] @end example Wait until the child process specified by each process @sc{id} @var{pid} @@ -7845,6 +8011,9 @@ If no arguments are given, all currently active child processes are waited for, and the return status is zero. If the @option{-n} option is supplied, @code{wait} waits for any job to terminate and returns its exit status. +If the @option{-f} option is supplied, and job control is enabled, +@code{wait} forces each @var{pid} or @var{jobspec} to terminate before +returning its status, intead of returning when it changes status. If neither @var{jobspec} nor @var{pid} specifies an active child process of the shell, the return status is 127. @@ -7997,12 +8166,28 @@ To find out more about the options and arguments that the @code{configure} script understands, type @example -bash-2.04$ ./configure --help +bash-4.2$ ./configure --help @end example @noindent at the Bash prompt in your Bash source directory. +If you want to build Bash in a directory separate from the source +directory -- to build for multiple architectures, for example -- +just use the full path to the configure script. The following commands +will build bash in a directory under @file{/usr/local/build} from +the source code in @file{/usr/local/src/bash-4.4}: + +@example +mkdir /usr/local/build/bash-4.4 +cd /usr/local/build/bash-4.4 +bash /usr/local/src/bash-4.4/configure +make +@end example + +See @ref{Compiling For Multiple Architectures} for more information +about building in a directory separate from the source. + If you need to do unusual things to compile Bash, please try to figure out how @code{configure} could check whether or not to do them, and mail diffs or instructions to @@ -8052,7 +8237,9 @@ own directory. To do this, you must use a version of @code{make} that supports the @code{VPATH} variable, such as GNU @code{make}. @code{cd} to the directory where you want the object files and executables to go and run -the @code{configure} script from the source directory. You may need to +the @code{configure} script from the source directory +(@pxref{Basic Installation}). +You may need to supply the @option{--srcdir=PATH} argument to tell @code{configure} where the source files are. @code{configure} automatically checks for the source code in the directory that @code{configure} is in and in `..'. @@ -8224,7 +8411,7 @@ compiled and linked, rather than changing run-time features. @table @code @item --enable-largefile -Enable support for @uref{http://www.sas.com/standards/large_file/x_open.20Mar96.html, +Enable support for @uref{http://www.unix.org/version2/whatsnew/lfs20mar.html, large files} if the operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. @@ -8301,6 +8488,12 @@ Include support for coprocesses and the @code{coproc} reserved word @item --enable-debugger Include support for the bash debugger (distributed separately). +@item --enable-dev-fd-stat-broken +If calling @code{stat} on /dev/fd/@var{N} returns different results than +calling @code{fstat} on file descriptor @var{N}, supply this option to +enable a workaround. +This has implications for conditional commands that test file attributes. + @item --enable-direxpand-default Cause the @code{direxpand} shell option (@pxref{The Shopt Builtin}) to be enabled by default when the shell starts. @@ -8373,7 +8566,7 @@ If Readline is not enabled, this option has no effect. @item --enable-prompt-string-decoding Turn on the interpretation of a number of backslash-escaped characters -in the @env{$PS1}, @env{$PS2}, @env{$PS3}, and @env{$PS4} prompt +in the @env{$PS0}, @env{$PS1}, @env{$PS2}, and @env{$PS4} prompt strings. See @ref{Controlling the Prompt}, for a complete list of prompt string escape sequences. diff --git a/doc/builtins.0 b/doc/builtins.0 index 3706dad49..4614dc504 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -14,7 +14,7 @@ NNAAMMEE BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -- accepts ---- to signify the end of the - options. The ::, ttrruuee, ffaallssee, and tteesstt builtins do not accept options + options. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning with -- without requiring ----. Other builtins that accept arguments but @@ -334,9 +334,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --WW _w_o_r_d_l_i_s_t The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS special variable as delimiters, and each resultant word - is expanded. The possible completions are the members - of the resultant list which match the word being com- - pleted. + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, + in order to provide a mechanism for the words to contain + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- + tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- @@ -552,141 +554,142 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS not be executed for some reason, a non-interactive shell exits, unless the eexxeeccffaaiill shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the - file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- - rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + file cannot be executed. A subshell exits unconditionally if + eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take + effect in the current shell, and the return status is 0. If + there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate - the last command beginning with that string) or as a number (an - index into the history list, where a negative number is used as - an offset from the current command number). If _l_a_s_t is not - specified it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). If _l_a_s_t is not + specified, it is set to the current command for listing (so that + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + wise. If _f_i_r_s_t is not specified, it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is intepreted the same as - _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', - so that typing ``r cc'' runs the last command beginning with + In the second form, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', + so that typing ``r cc'' runs the last command beginning with ``cc'' and typing ``r'' re-executes the last command. - If the first form is used, the return value is 0 unless an - invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history - lines out of range. If the --ee option is supplied, the return + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e - is determined by searching the directories in $$PPAATTHH and remem- + is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full filename of the command. The --rr option - causes the shell to forget all remembered locations. The --dd - option causes the shell to forget the remembered location of - each _n_a_m_e. If the --tt option is supplied, the full pathname to - which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- - ments are supplied with --tt, the _n_a_m_e is printed before the - hashed full pathname. The --ll option causes output to be dis- + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd + option causes the shell to forget the remembered location of + each _n_a_m_e. If the --tt option is supplied, the full pathname to + which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- + ments are supplied with --tt, the _n_a_m_e is printed before the + hashed full pathname. The --ll option causes output to be dis- played in a format that may be reused as input. If no arguments - are given, or if only --ll is supplied, information about remem- - bered commands is printed. The return status is true unless a + are given, or if only --ll is supplied, information about remem- + bered commands is printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ddmmss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control structures is printed. --dd Display a short description of each _p_a_t_t_e_r_n --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like @@ -698,50 +701,59 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy [[_n]] hhiissttoorryy --cc hhiissttoorryy --dd _o_f_f_s_e_t + hhiissttoorryy --dd _s_t_a_r_t-_e_n_d hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e] hhiissttoorryy --pp _a_r_g [_a_r_g _._._.] hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- - played history entry. No intervening blank is printed between - the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis- + played history entry. No intervening blank is printed between + the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + is negative, it is interpreted as relative to one greater + than the last history position, so negative indices count + back from the end of the history, and an index of -1 + refers to the current hhiissttoorryy --dd command. + --dd _s_t_a_r_t-_e_n_d + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + and _e_n_d are interpreted as described above. + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + file into the current history list. These are lines + appended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- - tion associated with each history entry is written to the his- - tory file, marked with the history comment character. When the - history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -750,208 +762,210 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed + --nn Display information only about jobs that have changed status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. --rr Display only running jobs. --ss Display only stopped jobs. - If _j_o_b_s_p_e_c is given, output is restricted to information about - that job. The return status is 0 unless an invalid option is + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. The --LL option is - equivalent to --ll. kkiillll returns true if at least one signal was - successfully sent, or false if an error occurs or an invalid + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. If _n_a_m_e is -, the set of shell options - is made local to the function in which llooccaall is invoked: shell - options changed using the sseett builtin inside the function are - restored to their original values when the function returns. - With no operands, llooccaall writes a list of local variables to the - standard output. It is an error to use llooccaall when not within a + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless llooccaall is used outside a - function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input into the indexed array vari- - able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- - plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: - --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty + string, mmaappffiillee will terminate a line when it reads a NUL + character. + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index is 0. --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line + --tt Remove a trailing _d_e_l_i_m (default newline) from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd returns false if an invalid option is encountered, the directory stack is empty, a non-exis- tent directory stack entry is specified, or the directory change fails. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The --vv option causes the output to be - assigned to the variable _v_a_r rather than being printed to the + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The --vv option causes the output to be + assigned to the variable _v_a_r rather than being printed to the standard output. - The _f_o_r_m_a_t is a character string which contains three types of - objects: plain characters, which are simply copied to standard - output, character escape sequences, which are converted and - copied to the standard output, and format specifications, each - of which causes printing of the next successive _a_r_g_u_m_e_n_t. In + The _f_o_r_m_a_t is a character string which contains three types of + objects: plain characters, which are simply copied to standard + output, character escape sequences, which are converted and + copied to the standard output, and format specifications, each + of which causes printing of the next successive _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff interprets the following extensions: %%bb causes pprriinnttff to expand backslash escape sequences in the corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. Two special argument - values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. If no - argument is specified, conversion behaves as if -1 had - been given. This is an exception to the usual pprriinnttff + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no + argument is specified, conversion behaves as if -1 had + been given. This is an exception to the usual pprriinnttff behavior. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working - directory. With no arguments, ppuusshhdd exchanges the top two - directories and returns 0, unless the directory stack is empty. + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when rotating - or adding directories to the stack, so that only the + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied + new current working directory as if it had been supplied as the argument to the ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, split - into words as described above under WWoorrdd SSpplliittttiinngg, and the + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the second _n_a_m_e, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in IIFFSS are used to split the line into + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into words using the same rules the shell uses for expansion (described above under WWoorrdd SSpplliittttiinngg). The backslash character (\\) may be used to remove any special meaning for the next char- - acter read and for line continuation. Options, if supplied, + acter read and for line continuation. Options, if supplied, have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -959,12 +973,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS new values are assigned. Other _n_a_m_e arguments are ignored. --dd _d_e_l_i_m - The first character of _d_e_l_i_m is used to terminate the - input line, rather than newline. + The first character of _d_e_l_i_m is used to terminate the + input line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL + character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE above) is used to obtain the line. Read- - line uses the current (or default, if line editing was - not previously active) editing settings. + (see RREEAADDLLIINNEE above) is used to obtain the line. Read- + line uses the current (or default, if line editing was + not previously active) editing settings, but uses Read- + line's default filename completion. --ii _t_e_x_t If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. @@ -1039,7 +1056,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS that of the last command executed in the function body. If rreettuurrnn is executed by a trap handler, the last command used to determine the status is the last command executed before the - trap handler. if rreettuurrnn is executed during a DDEEBBUUGG trap, the + trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last command used to determine the status is the last command executed by the trap handler before rreettuurrnn was invoked. If rreettuurrnn is used outside a function, but during execution of a @@ -1252,31 +1269,37 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list of all settable options is displayed, with an indication of - whether or not each is set. The --pp option causes output to be - displayed in a form that may be reused as input. Other options - have the following meanings: + whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other + options have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise noted, the sshhoopptt options are disabled (unset) + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: + aassssoocc__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation and while executing builtins that can + perform variable assignments. aauuttooccdd If set, a command name that is the name of a directory is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. @@ -1304,12 +1327,14 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each command - and, if necessary, updates the values of LLIINNEESS and CCOOLL-- - UUMMNNSS. + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the + values of LLIINNEESS and CCOOLLUUMMNNSS. ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- line command in the same history entry. This allows - easy re-editing of multi-line commands. + easy re-editing of multi-line commands. This option is + enabled by default, but only has an effect if command + history is enabled, as described above under HHIISSTTOORRYY. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 with respect to quoted arguments to the [[[[ conditional @@ -1357,6 +1382,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS the loop state when a shell function is executed (this allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). + ccoommppaatt4444 + If set, bbaasshh saves the positional parameters to + BASH_ARGV and BASH_ARGC before they are used, regardless + of whether or not extended debugging mode is enabled. ccoommpplleettee__ffuullllqquuoottee If set, bbaasshh quotes all shell metacharacters in file- names and directory names when performing completion. @@ -1382,7 +1411,9 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS names during word completion if the directory name ini- tially supplied does not exist. ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if + ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- not execute the file specified as an argument to the @@ -1486,32 +1517,37 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. + llooccaallvvaarr__iinnhheerriitt + If set, local variables inherit the value and attributes + of a variable of the same name that exists at a previous + scope before any new value is assigned. The nameref + attribute is not inherited. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not + If set, and rreeaaddlliinnee is being used, bbaasshh will not attempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ conditional commands, when performing pattern substi- - tution word expansions, or when filtering possible com- + tution word expansions, or when filtering possible com- pletions as part of programmable completion. nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, rather than themselves. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- @@ -1519,50 +1555,50 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled by default. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote - removal after being expanded as described in PPRROOMMPPTTIINNGG + mand substitution, arithmetic expansion, and quote + removal after being expanded as described in PPRROOMMPPTTIINNGG above. This option is enabled by default. rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in + The shell sets this option if it is started in restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value - may not be changed. This is not reset when the startup - files are executed, allowing the startup files to dis- + may not be changed. This is not reset when the startup + files are executed, allowing the startup files to dis- cover whether or not a shell is restricted. sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when + If set, the sshhiifftt builtin prints an error message when the shift count exceeds the number of positional parame- ters. ssoouurrcceeppaatthh If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to - find the directory containing the file supplied as an + find the directory containing the file supplied as an argument. This option is enabled by default. xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape + If set, the eecchhoo builtin expands backslash-escape sequences by default. ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT signal. A login shell cannot be suspended; the --ff option can be used to override this and force the suspension. The return sta- - tus is 0 unless the shell is a login shell and --ff is not sup- + tus is 0 unless the shell is a login shell and --ff is not sup- plied, or if job control is not enabled. tteesstt _e_x_p_r [[ _e_x_p_r ]] Return a status of 0 (true) or 1 (false) depending on the evalu- ation of the conditional expression _e_x_p_r. Each operator and op- - erand must be a separate argument. Expressions are composed of - the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - tteesstt does not accept any options, nor does it accept and ignore + erand must be a separate argument. Expressions are composed of + the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore an argument of ---- as signifying the end of options. - Expressions may be combined using the following operators, + Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation - depends on the number of arguments; see below. Operator prece- + depends on the number of arguments; see below. Operator prece- dence is used when there are five or more arguments. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -1579,120 +1615,120 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, the expression is true if and - only if the second argument is null. If the first argu- - ment is one of the unary conditional operators listed - above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is + only if the second argument is null. If the first argu- + ment is one of the unary conditional operators listed + above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is true if the unary test is true. If the first argument is not a valid unary conditional operator, the expression is false. 3 arguments The following conditions are applied in the order listed. - If the second argument is one of the binary conditional + If the second argument is one of the binary conditional operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using + using the first and third arguments as operands. The --aa + and --oo operators are considered binary operators when + there are three arguments. If the first argument is !!, + the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- + is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining + the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed + uated according to precedence using the rules listed above. 5 or more arguments - The expression is parsed and evaluated according to + The expression is parsed and evaluated according to precedence using the rules listed above. - When used with tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell - receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a - single _s_i_g_s_p_e_c) or --, each specified signal is reset to its - original disposition (the value it had upon entrance to the - shell). If _a_r_g is the null string the signal specified by each - _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. - If _a_r_g is not present and --pp has been supplied, then the trap - commands associated with each _s_i_g_s_p_e_c are displayed. If no - arguments are supplied or if only --pp is given, ttrraapp prints the - list of commands associated with each signal. The --ll option - causes the shell to print a list of signal names and their cor- - responding numbers. Each _s_i_g_s_p_e_c is either a signal name - defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are + The command _a_r_g is to be read and executed when the shell + receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a + single _s_i_g_s_p_e_c) or --, each specified signal is reset to its + original disposition (the value it had upon entrance to the + shell). If _a_r_g is the null string the signal specified by each + _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. + If _a_r_g is not present and --pp has been supplied, then the trap + commands associated with each _s_i_g_s_p_e_c are displayed. If no + arguments are supplied or if only --pp is given, ttrraapp prints the + list of commands associated with each signal. The --ll option + causes the shell to print a list of signal names and their cor- + responding numbers. Each _s_i_g_s_p_e_c is either a signal name + defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are case insensitive and the SSIIGG prefix is optional. - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to - the following conditions. The EERRRR trap is not executed if the + the following conditions. The EERRRR trap is not executed if the failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, part of a command executed in a &&&& or |||| list except the command - following the final &&&& or ||||, any command in a pipeline but the - last, or if the command's return value is being inverted using - !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) option. - Signals ignored upon entry to the shell cannot be trapped or - reset. Trapped signals that are not being ignored are reset to + Signals ignored upon entry to the shell cannot be trapped or + reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when - one is created. The return status is false if any _s_i_g_s_p_e_c is + one is created. The return status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] - With no options, indicate how each _n_a_m_e would be interpreted if + With no options, indicate how each _n_a_m_e would be interpreted if used as a command name. If the --tt option is used, ttyyppee prints a - string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or - _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, - builtin, or disk file, respectively. If the _n_a_m_e is not found, - then nothing is printed, and an exit status of false is - returned. If the --pp option is used, ttyyppee either returns the + string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or + _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, + builtin, or disk file, respectively. If the _n_a_m_e is not found, + then nothing is printed, and an exit status of false is + returned. If the --pp option is used, ttyyppee either returns the name of the disk file that would be executed if _n_a_m_e were speci- fied as a command name, or nothing if ``type -t name'' would not - return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, + return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is hashed, --pp and --PP print the hashed value, which is not necessar- - ily the file that appears first in PPAATTHH. If the --aa option is - used, ttyyppee prints all of the places that contain an executable + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable named _n_a_m_e. This includes aliases and functions, if and only if the --pp option is not also used. The table of hashed commands is - not consulted when using --aa. The --ff option suppresses shell + not consulted when using --aa. The --ff option suppresses shell function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] - Provides control over the resources available to the shell and - to processes started by it, on systems that allow such control. + Provides control over the resources available to the shell and + to processes started by it, on systems that allow such control. The --HH and --SS options specify that the hard or soft limit is set - for the given resource. A hard limit cannot be increased by a - non-root user once it is set; a soft limit may be increased up - to the value of the hard limit. If neither --HH nor --SS is speci- + for the given resource. A hard limit cannot be increased by a + non-root user once it is set; a soft limit may be increased up + to the value of the hard limit. If neither --HH nor --SS is speci- fied, both the soft and hard limits are set. The value of _l_i_m_i_t can be a number in the unit specified for the resource or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the - current hard limit, the current soft limit, and no limit, - respectively. If _l_i_m_i_t is omitted, the current value of the - soft limit of the resource is printed, unless the --HH option is + current hard limit, the current soft limit, and no limit, + respectively. If _l_i_m_i_t is omitted, the current value of the + soft limit of the resource is printed, unless the --HH option is given. When more than one resource is specified, the limit name and unit are printed before the value. Other options are inter- preted as follows: @@ -1701,12 +1737,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its + --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor + --mm The maximum resident set size (many systems do not honor this limit) --nn The maximum number of open file descriptors (most systems do not allow this value to be set) @@ -1715,72 +1751,75 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks --PP The maximum number of pseudoterminals --TT The maximum number of threads - If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the - new value of the specified resource. If no option is given, - then --ff is assumed. Values are in 1024-byte increments, except - for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --pp, which is in units of 512-byte + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; and, when in Posix mode, --cc and --ff, which are in 512-byte incre- ments. The return status is 0 unless an invalid option or argu- ment is supplied, or an error occurs while setting a new limit. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e refers to a variable; if there is no vari- - able by that name, any function with that name is unset. Each - unset variable or function is removed from the environment - passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, any function with that name is unset. Each + unset variable or function is removed from the environment + passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- only. - wwaaiitt [--nn] [_n _._._.] + wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + status. Each _i_d may be a process ID or a job specification; if + a job spec is given, all processes in that job's pipeline are + waited for. If _i_d is not given, all currently active child pro- cesses are waited for, and the return status is zero. If the --nn - option is supplied, wwaaiitt waits for any job to terminate and - returns its exit status. If _n specifies a non-existent process - or job, the return status is 127. Otherwise, the return status - is the exit status of the last process or job waited for. + option is supplied, wwaaiitt waits for any job to terminate and + returns its exit status. If the --ff option is supplied, and job + control is enabled, wwaaiitt forces _i_d to terminate before returning + its status, instead of returning when it changes status. If _i_d + specifies a non-existent process or job, the return status is + 127. Otherwise, the return status is the exit status of the + last process or job waited for. SSEEEE AALLSSOO bash(1), sh(1) -GNU Bash-4.2 2004 Apr 20 BASH_BUILTINS(1) +GNU Bash 5.0 2004 Apr 20 BASH_BUILTINS(1) diff --git a/doc/builtins.1 b/doc/builtins.1 index 829a49c27..4413c76f0 100644 --- a/doc/builtins.1 +++ b/doc/builtins.1 @@ -7,7 +7,7 @@ .de FN \fI\|\\$1\|\fP .. -.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash-4.2" +.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0" .SH NAME bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, diff --git a/doc/builtins.ps b/doc/builtins.ps index f6aec86f5..df9ff20ac 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:24:00 2016 +%%CreationDate: Mon Mar 19 09:43:23 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Symbol %%+ font Courier %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 23 +%%Pages: 24 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -257,43 +257,44 @@ imes, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 .329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 (Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\ ted in this section as accepting options preceded by)-.2 F F2108 -184.8 Q F0(accepts)2.533 E F22.533 E F0 .034 -(to signify the end of the options.)2.533 F(The)5.034 E F2(:)2.534 E F0 -(,)A F2(true)2.534 E F0(,)A F2(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F2(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) -.2 F 1.549(do not treat)108 196.8 R F24.049 E F0(specially)4.049 E -6.549(.T)-.65 G(he)-6.549 E F2(exit)4.049 E F0(,)A F2(logout)4.049 E F0 -(,)A F2 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F2(br)4.049 E(eak)-.18 -E F0(,)A F2(continue)4.049 E F0(,)A F2(let)4.049 E F0 4.049(,a)C(nd) --4.049 E F2(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F -.26(process ar)108 208.8 R .26(guments be)-.18 F .26(ginning with)-.15 F -F22.76 E F0 .261(without requiring)2.76 F F22.761 E F0 5.261 -(.O)C .261(ther b)-5.261 F .261(uiltins that accept ar)-.2 F .261 -(guments b)-.18 F .261(ut are not)-.2 F 1.154 -(speci\214ed as accepting options interpret ar)108 220.8 R 1.154 -(guments be)-.18 F 1.154(ginning with)-.15 F F23.654 E F0 1.154 -(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F2 -3.654 E F0(to)3.654 E(pre)108 232.8 Q -.15(ve)-.25 G -(nt this interpretation.).15 E F2(:)108 250.8 Q F0([)2.5 E/F3 10 -/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 262.8 R -.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F -(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452(and performing an) -3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 -274.8 R(return status is zero.)2.5 E F2(.)110.5 291.6 Q F3(\214lename) -6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A F2(sour)108 303.6 Q(ce) --.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A 1.02 -(Read and e)144 315.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F3 -(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 -(vironment and return the e)-.4 F(xit)-.15 E 1.458 -(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.458 -(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F3 -(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F -.608(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 -E F0 .608(are used to \214nd the directory containing)2.858 F F3 -(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) --5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 -R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 -(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833 +184.8 Q F0(accepts)3.077 E F23.077 E F0 .577 +(to signify the end of the options.)3.077 F(The)5.577 E F2(:)3.077 E F0 +(,)A F2(true)3.077 E F0(,)A F2(false)3.077 E F0 3.077(,a)C(nd)-3.077 E +F2(test)3.077 E F0(/)A F2([)A F0 -.2(bu)3.077 G .577 +(iltins do not accept options).2 F .462(and do not treat)108 196.8 R F2 +2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F2(exit) +2.961 E F0(,)A F2(logout)2.961 E F0(,)A F2 -.18(re)2.961 G(tur).18 E(n) +-.15 E F0(,)A F2(br)2.961 E(eak)-.18 E F0(,)A F2(continue)2.961 E F0(,)A +F2(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F2(shift)2.961 E F0 -.2(bu) +2.961 G .461(iltins accept and).2 F .26(process ar)108 208.8 R .26 +(guments be)-.18 F .26(ginning with)-.15 F F22.76 E F0 .261 +(without requiring)2.76 F F22.761 E F0 5.261(.O)C .261(ther b) +-5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 +(ut are not)-.2 F 1.154(speci\214ed as accepting options interpret ar) +108 220.8 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F2 +3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154 +(lid options and require).25 F F23.654 E F0(to)3.654 E(pre)108 +232.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F2(:)108 250.8 Q F0 +([)2.5 E/F3 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef) +144 262.8 R .451(fect; the command does nothing be)-.25 F .452(yond e) +-.15 F(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452 +(and performing an)3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5 +(redirections. The)144 274.8 R(return status is zero.)2.5 E F2(.)110.5 +291.6 Q F3(\214lename)6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A +F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A +(guments)-.37 E F0(])A 1.02(Read and e)144 315.6 R -.15(xe)-.15 G 1.02 +(cute commands from).15 F F3(\214lename)5.43 E F0 1.02 +(in the current shell en)3.7 F 1.02(vironment and return the e)-.4 F +(xit)-.15 E 1.458(status of the last command e)144 327.6 R -.15(xe)-.15 +G 1.458(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f) +-6.458 E F3(\214lename)5.868 E F0 1.458 +(does not contain a slash, \214le-)4.138 F .608(names in)144 339.6 R/F4 +9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 .608 +(are used to \214nd the directory containing)2.858 F F3(\214lename)3.108 +E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 -.666(PA) +3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 R -.15(xe)-.15 G +3.332(cutable. When).15 F F2(bash)3.332 E F0 .832(is not in)3.332 F F3 +.832(posix mode)3.332 F F0 3.332(,t)C .833 (he current directory is searched if no)-3.332 F .982 (\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 /Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18 @@ -375,8 +376,8 @@ F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F (ut each binding or command must be passed as a separate ar)-3.183 F .484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 (re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash-4.2)72 -768 Q(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72 +768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -499,7 +500,7 @@ G(H).855 E F0(de\214nes)3.286 E .85 5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 (irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 .665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 -(ull directory name)-3.165 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E +(ull directory name)-3.165 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E (2)203.725 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup @@ -638,8 +639,8 @@ F23.847 E F0 1.347(option indicates that the remaining options) F23.222 E F0 .723 (options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E (sion before the)144 722.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -711,8 +712,8 @@ Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 696 Q F0 -1.11(Va)224 696 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 (shopt)184 708 Q F0(Shell option names as accepted by the)224 708 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(4)203.725 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -757,2262 +758,2337 @@ E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 336 Q F2(wor)2.5 E (dlist)-.37 E F0(The)184 348 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 (is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 -(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 -(each resultant w)184 360 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 -F 2.008(possible completions are the members of the)4.507 F -(resultant list which match the w)184 372 Q(ord being completed.)-.1 E -F1144 384 Q F2(\214lterpat)2.5 E(\214lterpat)184 396 Q F0 .456 +(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98 +(each resultant w)184 360 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15 +F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0 +3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 372 Q .766 +(vide a mechanism for the w)-.15 F .765 +(ords to contain shell metacharacters or characters in the)-.1 F -.25 +(va)184 384 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +A F0 1.964 +(The possible completions are the members of the resultant list which) +6.464 F(match the w)184 396 Q(ord being completed.)-.1 E F1144 408 +Q F2(\214lterpat)2.5 E(\214lterpat)184 420 Q F0 .456 (is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F .455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 408 R 1.596 -(guments, and each completion)-.18 F(matching)184 420 Q F2(\214lterpat) +(completions generated by the preceding options and ar)184 432 R 1.596 +(guments, and each completion)-.18 F(matching)184 444 Q F2(\214lterpat) 3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 (rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 (in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 432 Q 2.5(yc)-.15 G +(tes the pattern;).05 F(in this case, an)184 456 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 448.8 R .466 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 472.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 460.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(plied without a)144 484.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 (gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F2(name)144 472.8 Q F0 +1.361(ompletion speci\214cation for a).15 F F2(name)144 496.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 489.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(compopt)108 513.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 501.6 R +(name)-2.5 E F0(])A .447(Modify completion options for each)144 525.6 R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 .447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 513.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(completion if no)144 537.6 R F2(name)3.226 E F0 3.226(sa)C .726 (re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 525.6 Q F2(name) +(n, display the completion options for).15 F(each)144 549.6 Q F2(name) 3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 537.6 Q F0 -.2(bu) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 561.6 Q F0 -.2(bu) 2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F12.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 549.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +1.227(the `)144 573.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.178(completion has pre)144 561.6 R 2.178 +no)-3.727 F 2.178(completion has pre)144 585.6 R 2.178 (viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 (option indicates that the remaining options)4.677 F(should apply to `) -144 573.6 Q(`empty')-.74 E 2.5('c)-.74 G +144 597.6 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 597.6 R 1.387(alue is true unless an in)-.25 F +E 1.387(The return v)144 621.6 R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 609.6 Q F2(name)2.5 E F0 +(options for a)144 633.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 626.4 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 638.4 R 1.754 +(xists, or an output error occurs.)-.15 E F1(continue)108 650.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 662.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 (select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 650.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 +(is speci\214ed,)4.493 F 1.208(resume at the)144 674.4 R F2(n)3.709 E F0 +1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 662.4 R(`top-le)-.74 E -.15 +(loops, the last enclosing loop \(the `)144 686.4 R(`top-le)-.74 E -.15 (ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 (The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 674.4 Q F1(declar)108 691.2 -Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 703.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 715.2 R 1.264(ariables and/or gi)-.25 F -1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 727.2 S 3.483(riables. The).25 F F13.483 E F0 .983 -(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 -(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(5)203.725 E 0 Cg EP +3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768 +Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(with)144 84 Q/F1 10/Times-Italic@0 SF(name) -2.774 E F0(ar)2.774 E .274(guments, additional options, other than)-.18 -F/F2 10/Times-Bold@0 SF2.775 E F0(and)2.775 E F22.775 E F0 -2.775(,a)C .275(re ignored.)-2.775 F(When)5.275 E F22.775 E F0 -.275(is supplied)2.775 F(without)144 96 Q F1(name)4.814 E F0(ar)4.814 E -2.314(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F -2.313(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 -F(attrib)144 108 Q 1.181(utes speci\214ed by the additional options.)-.2 -F 1.182(If no other options are supplied with)6.181 F F23.682 E F0 -(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 120 R +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(declar)108 84 Q(e) +-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E F0 +2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0([=)A F2(value)A F0 2.5 +(].)C(..])-2.5 E F1(typeset)108 96 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 +2.5(].)C(..])-2.5 E 1.264(Declare v)144 108 R 1.264(ariables and/or gi) +-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 +F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve) +-.25 G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of) +-.25 F -.25(va)144 120 S 3.483(riables. The).25 F F13.483 E F0 +.983(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 +3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0 +(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.) +-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied)2.775 F +(without)144 144 Q F2(name)4.814 E F0(ar)4.814 E 2.314 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 +(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F +(attrib)144 156 Q 1.181(utes speci\214ed by the additional options.)-.2 +F 1.182(If no other options are supplied with)6.181 F F13.682 E F0 +(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 168 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The) --.25 F F23.12 E F0 .62(option will restrict the display)3.12 F -1.29(to shell functions.)144 132 R(The)6.29 E F23.79 E F0 1.291(o\ +-.25 F F13.12 E F0 .62(option will restrict the display)3.12 F +1.29(to shell functions.)144 180 R(The)6.29 E F13.79 E F0 1.291(o\ ption inhibits the display of function de\214nitions; only the function) -3.791 F .948(name and attrib)144 144 R .948(utes are printed.)-.2 F .948 -(If the)5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948 -(shell option is enabled using)3.448 F F2(shopt)3.448 E F0 3.448(,t)C +3.791 F .948(name and attrib)144 192 R .948(utes are printed.)-.2 F .948 +(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 +(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C .948(he source)-3.448 F 1.69(\214le name and line number where each)144 -156 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F -(The)6.69 E F24.19 E F0(option)4.19 E(implies)144 168 Q F2 -3.892 E F0 6.392(.T)C(he)-6.392 E F23.892 E F0 1.391 +204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 216 Q F1 +3.892 E F0 6.392(.T)C(he)-6.392 E F13.892 E F0 1.391 (option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 180 Q F2(declar)4.382 E(e)-.18 E F0 1.882 +(ve)-.25 G(n).15 E(when)144 228 Q F1(declar)4.382 E(e)-.18 E F0 1.882 (is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 192 R +(wing)-.25 E .794(options can be used to restrict output to v)144 240 R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F -1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 204 Q(utes:)-.2 E F2 -144 216 Q F0(Each)180 216 Q F1(name)2.5 E F0(is an inde)2.5 E -.15 -(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 -E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 228 Q F0(Each)180 -228 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) -.15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G -(\).).15 E F2144 240 Q F0(Use function names only)180 240 Q(.)-.65 -E F2144 252 Q F0 .557(The v)180 252 R .558 +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1 +144 264 Q F0(Each)180 264 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 +(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 276 Q F0(Each)180 +276 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +.15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G +(\).).15 E F1144 288 Q F0(Use function names only)180 288 Q(.)-.65 +E F1144 300 Q F0 .557(The v)180 300 R .558 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 (va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 264 Q F0(abo)2.25 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 312 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E -(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 276 Q F0 .91 -(When the v)180 276 R .909(ariable is assigned a v)-.25 F .909 +(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 324 Q F0 .91 +(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 288 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 300 Q -F0(Gi)180 300 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the) -3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 336 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 348 Q +F0(Gi)180 348 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) +3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E -1.519(That other v)180 312 R 1.519(ariable is de\214ned by the v)-.25 F -1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518 -(ll references, assignments, and)-6.518 F(attrib)180 324 Q .226 -(ute modi\214cations to)-.2 F F1(name)2.726 E F0 2.726(,e)C .226 -(xcept those using or changing the)-2.876 F F22.726 E F0(attrib) -2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 336 R -.809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D +1.519(That other v)180 360 R 1.519(ariable is de\214ned by the v)-.25 F +1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518 +(ll references, assignments, and)-6.518 F(attrib)180 372 Q .226 +(ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226 +(xcept those using or changing the)-2.876 F F12.726 E F0(attrib) +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 384 R +.809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 -F(applied to array v)180 348 Q(ariables.)-.25 E F2144 360 Q F0 -(Mak)180 360 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +F(applied to array v)180 396 Q(ariables.)-.25 E F1144 408 Q F0 +(Mak)180 408 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F -2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 372 -Q F2144 384 Q F0(Gi)180 384 Q .73 -.15(ve e)-.25 H(ach).15 E F1 -(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E -2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929 -E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0 -(traps from the calling shell.)180 396 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 408 -Q F0 .909(When the v)180 408 R .909(ariable is assigned a v)-.25 F .909 +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 420 +Q F1144 432 Q F0(Gi)180 432 Q .73 -.15(ve e)-.25 H(ach).15 E F2 +(name)2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E +2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 +E(UG)-.1 E F0(and)2.929 E F1(RETURN)2.929 E F0 +(traps from the calling shell.)180 444 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 456 +Q F0 .909(When the v)180 456 R .909(ariable is assigned a v)-.25 F .909 (alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 -(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 420 R(lo)2.5 -E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 432 Q -F0(Mark)180 432 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 468 R(lo)2.5 +E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 480 Q +F0(Mark)180 480 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E (xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 -(Using `+' instead of `\255' turns of)144 448.8 R 2.621(ft)-.25 G .121 +(Using `+' instead of `\255' turns of)144 496.8 R 2.621(ft)-.25 G .121 (he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 -(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 460.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) +(xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F .644 +(to destro)144 508.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +-3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) 3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 472.8 Q F2 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335 -(local, as with the)2.835 F F2(local)2.835 E F0 .335 -(command, unless the)2.835 F F22.835 E F0(option)2.835 E 1.282 -(is supplied.)144 484.8 R 1.282(If a v)6.282 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 520.8 Q F1 +(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 +E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 +(local, as with the)2.835 F F1(local)2.835 E F0 .335 +(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 +(is supplied.)144 532.8 R 1.282(If a v)6.282 F 1.283 +(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 (,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 -(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144 -496.8 R F23.427 E F0(or)3.427 E F23.427 E F0 .926 +(ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 +544.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 (and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 508.8 Q .592(utes do not tak)-.2 +(ariables, additional)-.25 F(attrib)144 556.8 Q .592(utes do not tak)-.2 F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 (ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 (option is encountered, an attempt is made to de\214ne a function using) -144 520.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +144 568.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C 2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 -532.8 R .062(alue to a readonly v)-.25 F .063 +580.8 R .062(alue to a readonly v)-.25 F .063 (ariable, an attempt is made to assign a v)-.25 F .063 (alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 544.8 R F2 +(able without using the compound assignment syntax \(see)144 592.8 R F1 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 556.8 S .171 +F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 604.8 S .171 (lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 568.8 R 3.46(fa) +(ariable, an)-.25 F .96(attempt is made to turn of)144 616.8 R 3.46(fa) -.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 580.8 Q -(xistent function with)-.15 E F22.5 E F0(.)A F2 -(dirs [\255clpv] [+)108 597.6 Q F1(n)A F2 2.5(][)C-2.5 E F1(n)A F2 -(])A F0 -.4(Wi)144 609.6 S .328 +(ariable, or an attempt is made to display a)-.25 F(non-e)144 628.8 Q +(xistent function with)-.15 E F12.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 657.6 S .328 (thout options, displays the list of currently remembered directories.) .4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 621.6 R 1.238 -(Directories are added to the list with the)6.238 F F2(pushd)144 633.6 Q -F0 2.003(command; the)4.503 F F2(popd)4.503 E F0 2.003(command remo) +(single line with directory names separated by spaces.)144 669.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 681.6 Q +F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo) 4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 645.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F2144 657.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 657.6 Q -F2144 669.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 669.6 R .881 +F 2.003(The current directory is)7.003 F(al)144 693.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F1144 705.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 705.6 Q +F1144 717.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 717.6 R .881 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -681.6 Q(.)-.65 E F2144 693.6 Q F0 -(Print the directory stack with one entry per line.)180 693.6 Q F2 -144 705.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 705.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 717.6 Q(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP +729.6 Q(.)-.65 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)203.725 E +0 Cg EP %%Page: 7 7 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(+)144 84 Q/F2 10 -/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 84 R F2(n)4.065 E F0 -1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25 -F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 -E(without options, starting with zero.)180 96 Q F1144 108 Q F2(n)A -F0 1.194(Displays the)180 108 R F2(n)3.694 E F0 1.194 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(Print the directory stack with one entry per line.)180 84 Q F1144 +96 Q F0 .272(Print the directory stack with one entry per line, pre\214\ +xing each entry with its inde)180 96 R 2.773(xi)-.15 G 2.773(nt)-2.773 G +(he)-2.773 E(stack.)180 108 Q F1(+)144 120 Q/F2 10/Times-Italic@0 SF(n)A +F0 1.565(Displays the)180 120 R F2(n)4.065 E F0 1.565 +(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 +(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 132 Q F1144 144 Q F2(n)A +F0 1.194(Displays the)180 144 R F2(n)3.694 E F0 1.194 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 120 Q .258(The return v)144 -136.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(without options, starting with zero.)180 156 Q .258(The return v)144 +172.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1 +.15 F(tory stack.)144 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1 (\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 213.6 S .121 (thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) 4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 -F .096(neither the)144 189.6 R F12.596 E F0 .096(nor the)2.596 F +F .096(neither the)144 225.6 R F12.596 E F0 .096(nor the)2.596 F F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) -.15 F F2(jobspec)145.74 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +.15 F F2(jobspec)145.74 237.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 213.6 R -.15 +(is not sent to the job if the)2.835 F .962(shell recei)144 249.6 R -.15 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 225.6 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 261.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 237.6 S(lue is 0 unless a).25 E F2 +1.359(The return)6.359 F -.25(va)144 273.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 254.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 266.4 R F2(ar)2.925 E(g)-.37 E +F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 302.4 R F2(ar)2.925 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 278.4 R(If)5.307 E F12.807 E F0 .307 +(error occurs.)144 314.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -290.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +326.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) 6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 302.4 R -.15(ve)-.25 G +(interpretation of these escape characters, e)144 338.4 R -.15(ve)-.25 G 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -314.4 Q F1(xpg_echo)3.459 E F0 .959 +350.4 Q F1(xpg_echo)3.459 E F0 .959 (shell option may be used to dynamically determine whether or not)3.459 F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 326.4 R(ault.)-.1 E F1(echo)5.715 E +(these escape characters by def)144 362.4 R(ault.)-.1 E F1(echo)5.715 E F0 .716(does not interpret)3.215 F F13.216 E F0 .716 (to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 338.4 Q(wing escape sequences:)-.25 E F1(\\a) -144 350.4 Q F0(alert \(bell\))180 350.4 Q F1(\\b)144 362.4 Q F0 -(backspace)180 362.4 Q F1(\\c)144 374.4 Q F0(suppress further output)180 -374.4 Q F1(\\e)144 386.4 Q(\\E)144 398.4 Q F0(an escape character)180 -398.4 Q F1(\\f)144 410.4 Q F0(form feed)180 410.4 Q F1(\\n)144 422.4 Q -F0(ne)180 422.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 434.4 Q F0 -(carriage return)180 434.4 Q F1(\\t)144 446.4 Q F0(horizontal tab)180 -446.4 Q F1(\\v)144 458.4 Q F0 -.15(ve)180 458.4 S(rtical tab).15 E F1 -(\\\\)144 470.4 Q F0(backslash)180 470.4 Q F1(\\0)144 482.4 Q F2(nnn)A -F0(the eight-bit character whose v)180 482.4 Q(alue is the octal v)-.25 +(interprets the follo)144 374.4 Q(wing escape sequences:)-.25 E F1(\\a) +144 386.4 Q F0(alert \(bell\))180 386.4 Q F1(\\b)144 398.4 Q F0 +(backspace)180 398.4 Q F1(\\c)144 410.4 Q F0(suppress further output)180 +410.4 Q F1(\\e)144 422.4 Q(\\E)144 434.4 Q F0(an escape character)180 +434.4 Q F1(\\f)144 446.4 Q F0(form feed)180 446.4 Q F1(\\n)144 458.4 Q +F0(ne)180 458.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 470.4 Q F0 +(carriage return)180 470.4 Q F1(\\t)144 482.4 Q F0(horizontal tab)180 +482.4 Q F1(\\v)144 494.4 Q F0 -.15(ve)180 494.4 S(rtical tab).15 E F1 +(\\\\)144 506.4 Q F0(backslash)180 506.4 Q F1(\\0)144 518.4 Q F2(nnn)A +F0(the eight-bit character whose v)180 518.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 -(\\x)144 494.4 Q F2(HH)A F0(the eight-bit character whose v)180 494.4 Q +(\\x)144 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.4 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 506.4 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 518.4 R 1.506 +(\\u)144 542.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 530.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 542.4 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R .547 +4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 566.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 583.2 Q F0([)2.5 E F1A F0 2.5(][)C +3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 595.2 R +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.2 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 607.2 R .834(uiltin to be e)-.2 F -.15 +(the same name as a shell b)144 643.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 (ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 619.2 R .989 +(the shell normally searches for b)144 655.2 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 631.2 R F2(names)4.082 E F0 1.582(are enabled.) +(abled; otherwise,)144 667.2 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 643.2 R .081(uiltin v) +G(TH)-.189 E F0 .081(instead of the shell b)144 679.2 R .081(uiltin v) -.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) 2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 655.2 S 1.524 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.2 S 1.524 (iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 667.2 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 679.2 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -691.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +727.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 703.2 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 715.2 R F12.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F F2(special) -2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 727.2 R F2(name)3.854 E F0 .994 -(is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(GNU Bash-4.2)72 -768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP +(If)5.098 E F12.598 E F0(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 +E(7)203.725 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(object.)144 84 Q/F1 10/Times-Bold@0 SF -2.3 --.15(ev a)108 100.8 T(l).15 E F0([)2.5 E/F2 10/Times-Italic@0 SF(ar)A(g) --.37 E F0(...])2.5 E(The)144 112.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa) -C .671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 124.8 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 +E(UIL)-.1 E(TINS\(1\))-.92 E 1.916 +(is supplied, the list printed includes all b)144 84 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.879 +(enabled. If)144 96 R/F1 10/Times-Bold@0 SF2.879 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.879 F/F2 10 +/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The) +.2 F .378(return v)2.878 F(alue)-.25 E .994(is 0 unless a)144 108 R F2 +(name)3.854 E F0 .994(is not a shell b)3.674 F .994 +(uiltin or there is an error loading a ne)-.2 F 3.495(wb)-.25 G .995 +(uiltin from a shared)-3.695 F(object.)144 120 Q F1 -2.3 -.15(ev a)108 +136.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 148.8 +Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .495(and e)144 160.8 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 (xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 136.8 Q +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 172.8 Q (guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 -(exec)108 153.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(exec)108 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) --.37 E F0(]])A(If)144 165.6 Q F2(command)3.006 E F0 .306 +-.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306 (is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 (wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 177.6 R .176 +(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176 (guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G (he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 189.6 R .5(gument passed to)-.18 +(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18 F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 201.6 Q F0 .638 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.6 Q F0 .638 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 213.6 R 1.077(gument to the e)-.18 F -.15 +3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 225.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.15 F(non-interacti)144 261.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 237.6 R(interacti)2.505 E .305 -.15(ve s) --.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) --.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 249.6 Q 3.036(yr)-.15 G .536 -(edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 261.6 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 278.4 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 278.4 R .096(xit with a status of) +F(ail-)-.1 E 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s) +-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 +F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82 +(xits uncondi-)-.15 F .287(tionally if)144 285.6 R F1(exec)2.787 E F0 +-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287 +(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak) +-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,) +.25 F(and the return status is 0.)144 297.6 Q +(If there is a redirection error)5 E 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 314.4 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 290.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +-.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 /Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 307.2 Q F0([)2.5 +(cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 319.2 Q F0 .256(The supplied)144 331.2 R +F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 343.2 R(the)2.627 E F1 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1 2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) 5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 355.2 Q F0 .048 +(n, or if the).15 F F1144 391.2 Q F0 .048 (option is supplied, a list of names of all e)2.547 F .048(xported v) -.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 367.2 S 1.447 +.048(option causes the)2.548 F -.15(ex)144 403.2 S 1.447 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 379.2 S .741(lue of the v) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 415.2 S .741(lue of the v) .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 391.2 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 427.2 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 403.2 Q F1(fc)108 420 Q F0([)2.5 E +(that)2.711 E(is not a function.)144 439.2 Q F1(fc)108 456 Q F0([)2.5 E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -432 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +468 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 444 R F2<8c72> +(The \214rst form selects a range of commands from)144 480 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -456 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +492 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 468 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +144 504 Q .31(ginning with that string\) or as a number \(an inde)-.15 F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) --.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) -144 480 R .315(fset from the current command number\).)-.25 F(If)5.315 E -F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F -(-)-.2 E .948(rent command for listing \(so that)144 492 R/F4 10 +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of) +144 516 R .19(fset from the current command number\).)-.25 F(If)5.19 E +F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F +(-)-.2 E .948(rent command for listing \(so that)144 528 R/F4 10 /Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948 (prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E -F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 504 R F2<8c72>4.41 E(st)-.1 E -F0(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 528 Q +F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 540 R F2<8c72>4.41 E(st)-.1 E +F0(is not speci\214ed, it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 564 Q F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 540 R .438(If the)5.438 +(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 552 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +.335(the editor gi)144 588 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 (ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) .1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F (If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 564 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 +(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 576 R .951 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951 (ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 (When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 588 S(cuted.).15 E .788(In the second form,)144 612 R F2 +-.15(exe)144 624 S(cuted.).15 E .788(In the second form,)144 648 R F2 (command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 (is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 624 Q F0 .347(is intepreted the same as)2.847 F F2<8c72>2.847 -E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 -(useful alias to use with this is)-2.5 F F4 .346(r='fc \255s')2.847 F F0 -2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 636 Q F4 7.165(rc) +E(mand)144 660 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171 +(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0 +2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 672 Q F4 7.165(rc) 3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 (ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) 3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F -(mand.)144 648 Q .142(If the \214rst form is used, the return v)144 672 +(mand.)144 684 Q .142(If the \214rst form is used, the return v)144 708 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 684 R +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 720 R .454(If the)5.454 F F12.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 696 R -.15(xe)-.15 G .788 -(cuted or f).15 F .787 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.787(If the)5.787 F 1.135 -(second form is used, the return status is that of the command re-e)144 -708 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 720 Q -(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(8)203.725 E 0 -Cg EP +(alue of the)-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(8) +203.725 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(fg)108 84 Q F0([)2.5 -E/F2 10/Times-Italic@0 SF(jobspec)A F0(])A(Resume)144 96 Q F2(jobspec) -5.654 E F0 1.413(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913 -(ei)-.1 G 3.913(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G -(f)-6.413 E F2(jobspec)5.653 E F0 1.413(is not present, the)4.223 F -(shell')144 108 Q 3.116(sn)-.55 G .616(otion of the)-3.116 F F2(curr) -3.116 E .616(ent job)-.37 F F0 .617(is used.)3.116 F .617(The return v) -5.617 F .617(alue is that of the command placed into the)-.25 F(fore)144 -120 Q .363(ground, or f)-.15 F .363 +E(UIL)-.1 E(TINS\(1\))-.92 E .788(last command e)144 84 R -.15(xe)-.15 G +.788(cuted or f).15 F .787 +(ailure if an error occurs with the temporary \214le of commands.)-.1 F +.787(If the)5.787 F 1.135 +(second form is used, the return status is that of the command re-e)144 +96 R -.15(xe)-.15 G 1.136(cuted, unless).15 F/F1 10/Times-Italic@0 SF +(cmd)3.836 E F0 1.136(does not)4.406 F(specify a v)144 108 Q +(alid history line, in which case)-.25 E/F2 10/Times-Bold@0 SF(fc)2.5 E +F0(returns f)2.5 E(ailure.)-.1 E F2(fg)108 124.8 Q F0([)2.5 E F1 +(jobspec)A F0(])A(Resume)144 136.8 Q F1(jobspec)5.654 E F0 1.413 +(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913 +(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1 +(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 148.8 Q +3.116(sn)-.55 G .616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job) +-.37 F F0 .617(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 160.8 Q +.363(ground, or f)-.15 F .363 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 132 Q -F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 172.8 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0 (speci\214es a job that w)2.81 E(as started without job control.)-.1 E -F1(getopts)108 148.8 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) --.37 E F0(])A F1(getopts)144 160.8 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 +F2(getopts)108 189.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs) +-.37 E F0(])A F2(getopts)144 201.6 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F1 (optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 172.8 R .149 +(characters to be recognized; if a character is follo)144 213.6 R .149 (wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 --.15(ve a)-.2 H(n).15 E(ar)144 184.8 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 225.6 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 196.8 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) +(acters may not be used as option characters.)144 237.6 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 208.8 R(ariable)-.25 E F2(name)3.296 E F0 -3.296(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797 +(option in the shell v)144 249.6 R(ariable)-.25 E F1(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797 (if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G -3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 220.8 Q .085 +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 261.6 Q .085 (gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 /Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) 4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 -(or a shell script is in)144 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 +(or a shell script is in)144 273.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 244.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A +(into the v)144 285.6 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 (automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293 +(reset between multiple calls to)144 297.6 R F2(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 268.8 -Q 2.044(When the end of options is encountered,)144 292.8 R F1(getopts) +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 309.6 +Q 2.044(When the end of options is encountered,)144 333.6 R F2(getopts) 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 304.8 Q F0 +(alue greater than zero.)-.25 F F3(OPTIND)144 345.6 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 +(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392 (normally parses the positional parameters, b)4.892 F 2.392 (ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 -340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166 +(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 +381.6 Q F0(parses those instead.)2.5 E F2(getopts)144 405.6 Q F0 1.166 (can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 -(reporting is used.)144 376.8 R 1.071 +1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 417.6 R 1.071 (In normal operation, diagnostic messages are printed when in)6.07 F -.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 -388.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +429.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F (ariable)-.25 E F3(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 400.8 Q +(is set to 0, no error messages)2.644 F(will be displayed, e)144 441.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 424.8 R --.25(va)-.4 G .666(lid option is seen,).25 F F1(getopts)3.166 E F0 .667 -(places ? into)3.167 F F2(name)3.527 E F0 .667 +F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 465.6 R +-.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667 +(places ? into)3.167 F F1(name)3.527 E F0 .667 (and, if not silent, prints an error message)3.347 F .4(and unsets)144 -436.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1(getopts)2.899 E +477.6 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E F0 .399(is silent, the option character found is placed in)2.899 F F3 (OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F -(diagnostic message is printed.)144 448.8 Q 1.241(If a required ar)144 -472.8 R 1.241(gument is not found, and)-.18 F F1(getopts)3.741 E F0 -1.241(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742 -(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144 484.8 +(diagnostic message is printed.)144 489.6 Q 1.241(If a required ar)144 +513.6 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 525.6 Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F1 -(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1(:).833 E -F0(\)).833 E(is placed in)144 496.8 Q F2(name)2.86 E F0(and)2.68 E F3 -(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 -(getopts)144 520.8 Q F0 .902 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E +F0(\)).833 E(is placed in)144 537.6 Q F1(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2 +(getopts)144 561.6 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) 3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 532.8 Q F1(hash)108 -549.6 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename) -2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A -.858(Each time)144 561.6 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) --.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +(options is encountered or an error occurs.)144 573.6 Q F2(hash)108 +590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) +2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A +.858(Each time)144 602.4 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 573.6 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 614.4 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 585.6 -R F12.743 E F0 .243 -(option is supplied, no path search is performed, and)2.743 F F2 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 626.4 +R F22.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F1 (\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 -(of the command.)144 597.6 R(The)6.711 E F14.211 E F0 1.711 +(of the command.)144 638.4 R(The)6.711 E F24.211 E F0 1.711 (option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 -.833(option causes the shell to for)144 609.6 R .833 -(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 621.6 R F2(name) +(get all remembered locations.)-.18 F(The)6.712 E F24.212 E F0 +.833(option causes the shell to for)144 650.4 R .833 +(get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I) +C 3.333(ft)-5.833 G(he)-3.333 E F23.333 E F0 .833(option is sup-) +3.333 F .703(plied, the full pathname to which each)144 662.4 R F1(name) 3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -633.6 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +674.4 R F23.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 +.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -645.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G -.935(n, or if).15 F(only)144 657.6 Q F12.822 E F0 .322 +686.4 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 698.4 Q F22.822 E F0 .322 (is supplied, information about remembered commands is printed.)2.822 F -.321(The return status is true)5.321 F(unless a)144 669.6 Q F2(name)2.86 +.321(The return status is true)5.321 F(unless a)144 710.4 Q F1(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 686.4 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 -698.4 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 -G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 -710.4 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .306 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 722.4 Q -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP +.25 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(Display a short description of each)180 84 Q/F2 10/Times-Italic@0 SF -(pattern)2.5 E F1144 96 Q F0(Display the description of each)180 -96 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 -E F1144 108 Q F0(Display only a short usage synopsis for each)180 -108 Q F2(pattern)2.5 E F0 -(The return status is 0 unless no command matches)144 124.8 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 141.6 Q F2(n)A F1(])A -(history \255c)108 153.6 Q(history \255d)108 165.6 Q F2(of)2.5 E(fset) --.18 E F1(history \255anrw)108 177.6 Q F0([)2.5 E F2(\214lename)A F0(])A -F1(history \255p)108 189.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 201.6 Q F2(ar)2.5 E(g) +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(help)108 84 Q F0([) +2.5 E F1(\255dms)A F0 2.5(][)C/F2 10/Times-Italic@0 SF(pattern)-2.5 E F0 +(])A .866(Display helpful information about b)144 96 R .867 +(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867 +(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G +3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 +108 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 +(therwise help for all the b)-2.807 F .306 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1 +144 132 Q F0(Display a short description of each)180 132 Q F2 +(pattern)2.5 E F1144 144 Q F0(Display the description of each)180 +144 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 +E F1144 156 Q F0(Display only a short usage synopsis for each)180 +156 Q F2(pattern)2.5 E F0 +(The return status is 0 unless no command matches)144 172.8 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 189.6 Q F2(n)A F1(])A +(history \255c)108 201.6 Q(history \255d)108 213.6 Q F2(of)2.5 E(fset) +-.18 E F1(history \255d)108 225.6 Q F2(start)2.5 E F0A F2(end)A F1 +(history \255anrw)108 237.6 Q F0([)2.5 E F2(\214lename)A F0(])A F1 +(history \255p)108 249.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 261.6 Q F2(ar)2.5 E(g) -.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 -213.6 S .752 +273.6 S .752 (th no options, display the command history list with line numbers.).4 F .752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 225.6 R .38(An ar)5.38 F .38(gument of)-.18 +G .381(been modi\214ed.)144 285.6 R .38(An ar)5.38 F .38(gument of)-.18 F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 237.6 Q(T)-.855 E F0 .264 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 297.6 Q(T)-.855 E F0 .264 (is set and not null, it is used as a format string for)2.514 F F2 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 249.6 R 6.019(.N)-.65 G +(ciated with each displayed history entry)144 309.6 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 261.6 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 321.6 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 273.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +(not, the v)144 333.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) 2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 285.6 Q F0 -(Clear the history list by deleting all the entries.)180 285.6 Q F1 -144 297.6 Q F2(of)2.5 E(fset)-.18 E F0 -(Delete the history entry at position)180 309.6 Q F2(of)2.5 E(fset)-.18 -E F0(.)A F1144 321.6 Q F0 .565(Append the `)180 321.6 R(`ne)-.74 E -(w')-.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.) --3.065 F .564(These are history lines entered since)5.564 F(the be)180 -333.6 Q(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 345.6 +(wing meanings:)-.25 E F1144 345.6 Q F0 +(Clear the history list by deleting all the entries.)180 345.6 Q F1 +144 357.6 Q F2(of)2.5 E(fset)-.18 E F0 .39 +(Delete the history entry at position)180 369.6 R F2(of)2.889 E(fset) +-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne) +2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti) +-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve) +-.25 G .598(to one greater than the last history position, so ne)180 +381.6 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599 +(ndices count back from the end).15 F(of the history)180 393.6 Q 2.5(,a) +-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1 +144 405.6 Q F2(start)2.5 E F0A F2(end)A F0 .758 +(Delete the history entries between positions)180 417.6 R F2(start)3.258 +E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve) +-.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne) +.15 F -.05(ga)-.15 G(-).05 E(ti)180 429.6 Q .3 -.15(ve v)-.25 H +(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0 +(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1 +144 441.6 Q F0 .564(Append the `)180 441.6 R(`ne)-.74 E(w')-.25 E 3.064 +('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 453.6 Q +(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 465.6 Q F0 .854(Read the history lines not already read from the history \214\ -le into the current history list.)180 345.6 R .773 -(These are lines appended to the history \214le since the be)180 357.6 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 369.6 Q F1144 381.6 Q F0(Read the contents of the hist\ -ory \214le and append them to the current history list.)180 381.6 Q F1 -144 393.6 Q F0 -(Write the current history list to the history \214le, o)180 393.6 Q +le into the current history list.)180 465.6 R .772 +(These are lines appended to the history \214le since the be)180 477.6 R +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E +(sion.)180 489.6 Q F1144 501.6 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)180 501.6 Q F1 +144 513.6 Q F0 +(Write the current history list to the history \214le, o)180 513.6 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 405.6 Q F0 .625 -(Perform history substitution on the follo)180 405.6 R(wing)-.25 E F2 -(ar)3.125 E(gs)-.37 E F0 .626(and display the result on the standard) -3.125 F 2.975(output. Does)180 417.6 R .475 +(ontents.)-2.5 E F1144 525.6 Q F0 .626 +(Perform history substitution on the follo)180 525.6 R(wing)-.25 E F2 +(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard) +3.125 F 2.975(output. Does)180 537.6 R .475 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 429.6 Q(xpansion.)-.15 E F1144 441.6 Q F0 -.362(Store the)180 441.6 R F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 453.6 Q -.15 +(normal history e)180 549.6 Q(xpansion.)-.15 E F1144 561.6 Q F0 +.363(Store the)180 561.6 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 +(he last command in the history list is)-5.363 F(remo)180 573.6 Q -.15 (ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 470.4 R F3(HISTTIMEFORMA)2.645 E(T) +(are added.)2.77 E .145(If the)144 590.4 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 482.4 R .669 -(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 494.4 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F 1.795 -(are interpreted as timestamps for the follo)144 506.4 R 1.795 +.25 F .669(entry is written to the history \214le, mark)144 602.4 R .669 +(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 +(hen the history)-5.668 F .955(\214le is read, lines be)144 614.4 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F 1.796 +(are interpreted as timestamps for the follo)144 626.4 R 1.795 (wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F -1.796(alue is 0 unless an)-.25 F(in)144 518.4 Q -.25(va)-.4 G .768(lid \ +1.795(alue is 0 unless an)-.25 F(in)144 638.4 Q -.25(va)-.4 G .768(lid \ option is encountered, an error occurs while reading or writing the his\ -tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 530.4 Q(fset) --.18 E F0 1.031(is supplied as an ar)3.531 F 1.031(gument to)-.18 F F1 +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 650.4 Q(fset) +-.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 -F 1.031(xpansion supplied as an ar)-.15 F 1.032(gument to)-.18 F F1 -3.532 E F0 -.1(fa)144 542.4 S(ils.).1 E F1(jobs)108 559.2 Q F0([) +F 1.031(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F1 +3.531 E F0 -.1(fa)144 662.4 S(ils.).1 E F1(jobs)108 679.2 Q F0([) 2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 -(jobs \255x)108 571.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 -E F0(... ])2.5 E(The \214rst form lists the acti)144 583.2 Q .3 -.15 +(jobs \255x)108 691.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 703.2 Q .3 -.15 (ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1144 595.2 Q F0 -(List process IDs in addition to the normal information.)180 595.2 Q F1 -144 607.2 Q F0 .194(Display information only about jobs that ha) -180 607.2 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 -F .193(as last noti-)-.1 F(\214ed of their status.)180 619.2 Q F1 -144 631.2 Q F0(List only the process ID of the job')180 631.2 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 643.2 Q F0 -(Display only running jobs.)180 643.2 Q F1144 655.2 Q F0 -(Display only stopped jobs.)180 655.2 Q(If)144 672 Q F2(jobspec)4.553 E -F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 -(n, output is restricted to information about that job).15 F 5.314(.T) --.4 G .314(he return status is 0 unless)-5.314 F(an in)144 684 Q -.25 -(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 700.8 R F1 -2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 -(with the corre-)3.164 F(sponding process group ID, and e)144 712.8 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(10)198.725 E 0 Cg EP +(he follo).15 E(wing meanings:)-.25 E F1144 715.2 Q F0 +(List process IDs in addition to the normal information.)180 715.2 Q +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(kill)108 84 Q F0([) -2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec)2.5 E F0(|)2.5 E F1 -2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 -(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 E -F2 -.2(ex)2.5 G(it_status).2 E F0(])A .119(Send the signal named by)144 -108 R F2(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 -(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 -(either a case-insensiti)144 120 R .619 -.15(ve s)-.25 H .319 -(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 -(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 -(pre\214x\) or a signal)2.568 F(number;)144 132 Q F2(signum)4.188 E F0 -1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 .193 +(Display information only about jobs that ha)180 84 R .494 -.15(ve c)-.2 +H .194(hanged status since the user w).15 F .194(as last noti-)-.1 F +(\214ed of their status.)180 96 Q F1144 108 Q F0 +(List only the process ID of the job')180 108 Q 2.5(sp)-.55 G +(rocess group leader)-2.5 E(.)-.55 E F1144 120 Q F0 +(Display only running jobs.)180 120 Q F1144 132 Q F0 +(Display only stopped jobs.)180 132 Q(If)144 148.8 Q/F2 10 +/Times-Italic@0 SF(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G +.314(n, output is restricted to information about that job).15 F 5.313 +(.T)-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 160.8 Q +-.25(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G +(lid).25 E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 +177.6 R F12.894 E F0 .394(option is supplied,)2.894 F F1(jobs) +2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394 +(found in)3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 +E F0 .395(with the corre-)3.164 F(sponding process group ID, and e)144 +189.6 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E +F2(ar)2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.) +-.15 E F1(kill)108 206.4 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|) +2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A +F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..) +-2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1A F0([)2.5 E F2(sigspec) +A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 +(Send the signal named by)144 230.4 R F2(sigspec)2.96 E F0(or)2.93 E F2 +(signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E +F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is) +2.929 E .318(either a case-insensiti)144 242.4 R .618 -.15(ve s)-.25 H +.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 +.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 254.4 Q F2(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.349(is assumed.)3.599 F(An)6.349 E(ar)144 144 Q .523(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F .28(of the signals corresponding to the ar)144 156 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 --.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .378(gument to)-.18 F F1 -2.878 E F0 .378 -(is a number specifying either a signal number or the e)2.878 F .377 -(xit status of a process termi-)-.15 F .962(nated by a signal.)144 180 R -(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 -G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18 +F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) +5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) +.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 +(n, the names).15 F .28(of the signals corresponding to the ar)144 278.4 +R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E +F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 290.4 Q .377(gument to)-.18 F +F12.877 E F0 .378 +(is a number specifying either a signal number or the e)2.877 F .378 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 302.4 +R(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va) +-.25 G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -220.8 Q F2(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197 -(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196 -(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) -2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 232.8 Q F2(ar) +(successfully sent, or f)144 314.4 Q(alse if an error occurs or an in) +-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 331.2 Q +F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +343.2 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 +(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 355.2 Q F2(ar) 2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 -(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 -E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 372 Q F0([)2.5 E +F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 384 S 2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 .06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) --5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.153(yo) --.15 G 3.153(ft)-3.153 G .653(he options accepted by)-3.153 F F1(declar) -3.153 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .652 +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 396 Q 3.152(yo)-.15 +G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)3.152 +E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -285.6 Q F2(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H -.422(isible scope restricted to that function and its children.).15 F -(If)5.422 E F2(name)2.922 E F0 .422(is \255, the set)2.922 F 1.461 -(of shell options is made local to the function in which)144 297.6 R F1 -(local)3.961 E F0 1.461(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.461 -(d: shell options changed).1 F 1.562(using the)144 309.6 R F1(set)4.062 -E F0 -.2(bu)4.062 G 1.563 -(iltin inside the function are restored to their original v).2 F 1.563 -(alues when the function)-.25 F 3.744(returns. W)144 321.6 R 1.244 -(ith no operands,)-.4 F F1(local)3.744 E F0 1.244 -(writes a list of local v)3.744 F 1.243 -(ariables to the standard output.)-.25 F 1.243(It is an)6.243 F .42 -(error to use)144 333.6 R F1(local)2.92 E F0 .42 +408 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422 +(isible scope restricted to that function and its children.).15 F(If) +5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 420 R F1 +(local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 +(d: shell options changed).1 F 1.563(using the)144 432 R F1(set)4.063 E +F0 -.2(bu)4.063 G 1.563 +(iltin inside the function are restored to their original v).2 F 1.562 +(alues when the function)-.25 F 3.743(returns. W)144 444 R 1.243 +(ith no operands,)-.4 F F1(local)3.743 E F0 1.243 +(writes a list of local v)3.743 F 1.244 +(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 +(error to use)144 456 R F1(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) 5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) -2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) -108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q -F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +144 468 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 +E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 +484.8 Q F0(Exit a login shell.)144 484.8 Q F1(map\214le)108 501.6 Q F0 +([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) 2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 -2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 -2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1 A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 (][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 (count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 (fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .351(Read lines from the standard input into the inde)144 403.2 R --.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2 -(arr)2.85 E(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35 -(rom \214le descriptor)-2.85 F F2(fd)2.85 E F0 1.248(if the)144 415.2 R -F13.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 F +(])A .179(Read lines from the standard input into the inde)144 525.6 R +-.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F2 +(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18 +(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 537.6 R +F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F (ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 -E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,) --6.249 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 439.2 Q F0(The \214rst character of) -180 439.2 Q F2(delim)2.5 E F0 -(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 -E F1144 451.2 Q F0(Cop)180 451.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) --2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 -(is 0, all lines are copied.)2.5 E F1144 463.2 Q F0(Be)180 463.2 Q -(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) --.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) --.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 475.2 Q F0 -(Discard the \214rst)180 475.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 487.2 Q F0(Remo)180 487.2 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) +-6.248 F(ha)144 549.6 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 561.6 Q F0 .91 +(The \214rst character of)180 561.6 R F2(delim)3.41 E F0 .911 +(is used to terminate each input line, rather than ne)3.41 F 3.411 +(wline. If)-.25 F F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1 +(map\214le)2.5 E F0(will terminate a line when it reads a NUL character) +2.5 E(.)-.55 E F1144 585.6 Q F0(Cop)180 585.6 Q 2.5(ya)-.1 G 2.5 +(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count) +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 597.6 Q F0(Be)180 +597.6 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5 +(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 609.6 Q F0 +(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 621.6 Q F0(Remo)180 621.6 Q .3 -.15(ve a t)-.15 H(railing).15 E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F1144 499.2 Q F0 -(Read lines from \214le descriptor)180 499.2 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 511.2 Q F0(Ev)180 -511.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(wline\) from each line read.)-.25 E F1144 633.6 Q F0 +(Read lines from \214le descriptor)180 633.6 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 645.6 Q F0(Ev)180 +645.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 (quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 523.2 -Q F0(Specify the number of lines read between each call to)180 523.2 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 540 Q F12.968 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 657.6 +Q F0(Specify the number of lines read between each call to)180 657.6 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 674.4 Q F12.968 E F0 +.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 552 R 2.761(xo)-.15 G -2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\ -ned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 564 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 +G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .275 +(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E F0 .275(is e)2.775 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 576 Q -(If not supplied with an e)144 592.8 Q(xplicit origin,)-.15 E F1 +(ut before the array element is)-.2 F(assigned.)144 710.4 Q +(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1 (map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F1(map\214le)144 609.6 Q F0 1.905 -(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) -4.406 E(ay)-.15 E F0(is)4.406 E(in)144 621.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 +E(11)198.725 E 0 Cg EP +%%Page: 12 12 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(map\214le)144 84 Q F0 +1.905(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 +(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F/F2 10 +/Times-Italic@0 SF(arr)4.406 E(ay)-.15 E F0(is)4.406 E(in)144 96 Q -.25 +(va)-.4 G(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 638.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 650.4 Q -.15(ve)-.15 G 2.8(se) +F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 124.8 Q -.15(ve)-.15 G 2.8(se) .15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 (th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G .299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -662.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +136.8 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 (uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 674.4 Q F1144 686.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 686.4 R .551 +F(wing)-.25 E(meanings:)144 148.8 Q F1144 160.8 Q F0 .551 +(Suppresses the normal change of directory when remo)180 160.8 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 698.4 Q F1(+)144 710.4 Q F2(n)A -F0(Remo)180 710.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A +F0(Remo)180 184.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -722.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(11)198.725 E 0 Cg EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 -/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 G 3.76(st).15 G(he) --3.76 E F2(n)3.76 E F0 1.259 -(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F -F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F) -180 96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 208.8 Q F2(n)A F0 +(Remo)180 208.8 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 +1.259(th entry counting from the right of the list sho)B 1.259(wn by) +-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 +(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 -112.8 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 +237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 (dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.644 E F0 .416(returns f)144 124.8 R .416 +3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416 (alse if an in)-.1 F -.25(va)-.4 G .415 (lid option is encountered, the directory stack is empty).25 F 2.915 (,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 136.8 Q -(ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q +(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 (])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 165.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(Write the formatted)144 290.4 R F2(ar)3.936 E(guments)-.37 E F0 1.437 (to the standard output under the control of the)3.936 F F2(format)3.937 E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 177.6 R(ariable) +(option causes the output to be assigned to the v)144 302.4 R(ariable) -.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.017 E F0 .517(i\ +2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\ s a character string which contains three types of objects: plain chara\ cters, which are)3.017 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .703 +er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 237.6 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0 +\214cations, each of which causes printing of the ne)144 362.4 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0 5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 -E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 261.6 Q -(xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)180 273.6 Q F1(printf) +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q +(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)180 398.4 Q F1(printf) 2.595 E F0 .096(to e)2.595 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 285.6 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 297.6 Q F0(causes)180 297.6 Q +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 410.4 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 422.4 Q F0(causes)180 422.4 Q F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 309.6 Q F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0(causes) -180 333.6 Q F1(printf)4.403 E F0 1.904 +(input.)180 434.4 Q F1(%\()144 446.4 Q F2(datefmt)A F1(\)T)A F0(causes) +180 458.4 Q F1(printf)4.403 E F0 1.904 (to output the date-time string resulting from using)4.403 F F2(datefmt) -4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2 +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 470.4 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .457(of seconds since the epoch.)180 -357.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .848 -(current time, and -2 represents the time the shell w)180 369.6 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.347(d. If).1 F .847(no ar)3.347 -F .847(gument is speci-)-.18 F .354(\214ed, con)180 381.6 R -.15(ve)-.4 -G .354(rsion beha).15 F -.15(ve)-.2 G 2.854(sa).15 G 2.854(si)-2.854 G -2.854(f-)-2.854 G 2.854(1h)-2.854 G .354(ad been gi)-2.854 F -.15(ve) --.25 G 2.854(n. This).15 F .355(is an e)2.854 F .355 -(xception to the usual)-.15 F F1(printf)2.855 E F0(beha)180 393.6 Q -(vior)-.2 E(.)-.55 E(Ar)144 410.4 Q .464(guments to non-string format s\ -peci\214ers are treated as C constants, e)-.18 F .463 -(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 422.4 -R 1.259 +(ger representing the number)-.15 F .292(of seconds since the epoch.)180 +482.4 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +.293(alues may be used: \2551 represents the)-.25 F .694 +(current time, and \2552 represents the time the shell w)180 494.4 R +.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar) +3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 506.4 R -.15 +(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 +G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 +G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F +F1(printf)2.71 E F0(beha)180 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q +.464(guments to non-string format speci\214ers are treated as C constan\ +ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258 +(minus sign is allo)144 547.2 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 434.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 451.2 Q F2(format)3.424 E -F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 -E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .923(requires more)3.423 F F2(ar)144 463.2 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 F .033 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 559.2 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 576 Q F2(format)3.424 E F0 +.923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E +(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .923(requires more)3.423 F F2(ar)144 588 Q(guments)-.37 E F0 +.033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 475.2 Q(The return v)5 E +-.25 F(as appropriate, had been supplied.)144 600 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 492 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 504 Q F0([)2.5 E F1A F0 2.5 -(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ -tory stack, or rotates the stack, making the ne)144 516 R 3.139(wt)-.25 -G .639(op of the)-3.139 F .416(stack the current w)144 528 R .416 +108 616.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ +rectory stack, or rotates the stack, making the ne)144 640.8 R 3.139(wt) +-.25 G .639(op of the)-3.139 F .416(stack the current w)144 652.8 R .416 (orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F (guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 (changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 -(and returns 0, unless the directory stack is empty)144 540 R 6.625(.A) --.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 -(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 552 Q F1 -144 564 Q F0 1.811(Suppresses the normal change of directory when\ - rotating or adding directories to the)180 564 R -(stack, so that only the stack is manipulated.)180 576 Q F1(+)144 588 Q -F2(n)A F0 1.268(Rotates the stack so that the)180 588 R F2(n)3.768 E F0 -1.267(th directory \(counting from the left of the list sho)B 1.267 -(wn by)-.25 F F1(dirs)180 600 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 612 Q F2(n)A F0 .92 -(Rotates the stack so that the)180 612 R F2(n)3.42 E F0 .92 -(th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F1(dirs)180 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 636 Q F0(Adds)180 636 Q F2(dir)3.138 E F0 .288 +(and returns 0, unless the directory stack is empty)144 664.8 R 6.625 +(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 676.8 Q +F1144 688.8 Q F0 1.811(Suppresses the normal change of directory \ +when rotating or adding directories to the)180 688.8 R +(stack, so that only the stack is manipulated.)180 700.8 Q F1(+)144 +712.8 Q F2(n)A F0 1.268(Rotates the stack so that the)180 712.8 R F2(n) +3.768 E F0 1.267(th directory \(counting from the left of the list sho)B +1.267(wn by)-.25 F F1(dirs)180 724.8 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP +%%Page: 13 13 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF(n)A F0 .92(Rotates the stack so that the)180 84 R F2 +(n)3.42 E F0 .92(th directory \(counting from the right of the list sho) +B .92(wn by)-.25 F F1(dirs)180 96 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F2(dir)144.35 108 Q F0(Adds) +180 108 Q F2(dir)3.138 E F0 .288 (to the directory stack at the top, making it the ne)3.518 F 2.787(wc) -.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F -(if it had been supplied as the ar)180 648 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 664.8 R F1(pushd)2.988 +(if it had been supplied as the ar)180 120 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 136.8 R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 (is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F -F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 676.8 R F2(dir) +F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 148.8 R F2(dir) 3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 -(stack is empty)144 688.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ +(stack is empty)144 160.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 700.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(12)198.725 E 0 -Cg EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pwd)108 84 Q F0([)2.5 -E F1(\255LP)A F0(])A .845(Print the absolute pathname of the current w) -144 96 R .845(orking directory)-.1 F 5.844(.T)-.65 G .844 +-.15 F(speci\214ed ne)144 172.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F1(pwd)108 189.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845 +(Print the absolute pathname of the current w)144 201.6 R .845 +(orking directory)-.1 F 5.844(.T)-.65 G .844 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144 -108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) -144 120 R(the)3.264 E F13.264 E F0 .763 +213.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 +(enabled. If)144 225.6 R(the)3.264 E F13.264 E F0 .763 (option is used, the pathname printed may contain symbolic links.)3.264 F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 132 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) -.18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E/F2 10 -/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1-3.817 E F2 -(delim)3.817 E F0 3.817(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 -3.817(][)C F1-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 -(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 --3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E -F2(timeout)3.816 E F0 3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A -([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ -tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E -F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 196.8 Q -F13.848 E F0 1.348(option, split into w)3.848 F 1.348 -(ords as described abo)-.1 F 1.647 -.15(ve u)-.15 H(nder).15 E F1 -.75 -(Wo)3.847 G 1.347(rd Splitting).75 F F0 3.847(,a)C 1.347 -(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 -(assigned to the \214rst)144 208.8 R F2(name)3.965 E F0 3.965(,t).18 G + reading the name of the current directory or an in)144 237.6 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 249.6 Q F1 -.18(re)108 266.4 S +(ad).18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E F2 +(aname)3.817 E F0 3.817(][)C F1-3.817 E F2(delim)3.817 E F0 3.817 +(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1 +-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E +F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E F2(pr) +3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E F2(timeout)3.816 E F0 +3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A([)108 278.4 Q F2(name)A +F0(...])2.5 E .516(One line is read from the standard input, or from th\ +e \214le descriptor)144 290.4 R F2(fd)3.016 E F0 .516(supplied as an ar) +3.016 F .517(gument to)-.18 F(the)144 302.4 Q F13.848 E F0 1.348 +(option, split into w)3.848 F 1.348(ords as described abo)-.1 F 1.647 +-.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.847 G 1.347(rd Splitting).75 F +F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 +(assigned to the \214rst)144 314.4 R F2(name)3.965 E F0 3.965(,t).18 G 1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 -F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112 +F -.1(wo)144 326.4 S 1.112(rds than names, the remaining w).1 F 1.112 (ords and their interv)-.1 F 1.112 -(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0 +(ening delimiters are assigned to the last)-.15 F F2(name)144 338.4 Q F0 5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) -.25 F .723 (ords read from the input stream than names, the remaining names are)-.1 -F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +F .532(assigned empty v)144 350.4 R 3.032(alues. The)-.25 F .532 (characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 (are used to split the line into w)2.782 F .531(ords using the same)-.1 -F .197(rules the shell uses for e)144 256.8 R .197 +F .197(rules the shell uses for e)144 362.4 R .197 (xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 -(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m) +(backslash charac-)2.697 F .157(ter \()144 374.4 R F1(\\)A F0 2.657(\)m) C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) .15 H .157(pecial meaning for the ne).15 F .156 (xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 -280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 -(The w)180 304.8 R 1.049 +386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 398.4 Q F2(aname)2.5 E F0 1.049 +(The w)180 410.4 R 1.049 (ords are assigned to sequential indices of the array v)-.1 F(ariable) -.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 -(aname)180.33 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(aname)180.33 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 (ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F1144 328.8 Q F2(delim)2.5 E F0 -(The \214rst character of)180 340.8 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 352.8 Q F0 .373 -(If the standard input is coming from a terminal,)180 352.8 R F1 -.18 -(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) -2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E -.218(to obtain the line.)180 364.8 R .218 +E(guments are ignored.)-.18 E F1144 434.4 Q F2(delim)2.5 E F0 +1.318(The \214rst character of)180 446.4 R F2(delim)3.818 E F0 1.317 +(is used to terminate the input line, rather than ne)3.818 F 3.817 +(wline. If)-.25 F F2(delim)180 458.4 Q F0(is the empty string,)2.5 E F1 +-.18(re)2.5 G(ad).18 E F0 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1 +144 470.4 Q F0 .372 +(If the standard input is coming from a terminal,)180 470.4 R F1 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo) +2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E +.218(to obtain the line.)180 482.4 R .218 (Readline uses the current \(or def)5.218 F .218 (ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 376.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E -F1144 388.8 Q F2(te)2.5 E(xt)-.2 E F0(If)180 388.8 Q F1 -.18(re) -2.716 G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2 -(te)2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 -E .215(fer before edit-)-.25 F(ing be)180 400.8 Q(gins.)-.15 E F1 -144 412.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 424.8 S(ad).18 -E F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 -E F0 1.395(characters rather than w)3.894 F 1.395 -(aiting for a complete line of)-.1 F(input, b)180 436.8 Q -(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 -E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 448.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 460.8 S -(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) -3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F -1.269(aiting for a complete)-.1 F .274 -(line of input, unless EOF is encountered or)180 472.8 R F1 -.18(re) -2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 -(Delimiter characters encoun-)5.275 F 1.003 -(tered in the input are not treated specially and do not cause)180 484.8 -R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) -3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 496.8 R .608 -(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0 -3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 508.8 S .67 +(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E +(ault \214lename completion.)-.1 E F1144 506.4 Q F2(te)2.5 E(xt) +-.2 E F0(If)180 506.4 Q F1 -.18(re)2.715 G(adline).18 E F0 .216 +(is being used to read the line,)2.715 F F2(te)2.716 E(xt)-.2 E F0 .216 +(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-) +-.25 F(ing be)180 518.4 Q(gins.)-.15 E F1144 530.4 Q F2(nc)2.5 E +(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E F0 1.395 +(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395 +(characters rather than w)3.895 F 1.394(aiting for a complete line of) +-.1 F(input, b)180 554.4 Q(ut honors a delimiter if fe)-.2 E(wer than) +-.25 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 +(characters are read before the delimiter)2.5 E(.)-.55 E F1144 +566.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 578.4 S(ad).18 E +F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 E +(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(aiting for a complete)-.1 F .275 +(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re) +2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 +(Delimiter characters encoun-)5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 602.4 +R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) +3.503 E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 614.4 R .608 +(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 626.4 S .669 (riable is assigned e).25 F .669 -(xactly the characters read \(with the e)-.15 F .669 -(xception of backslash; see the)-.15 F F1180 520.8 Q F0 -(option belo)2.5 E(w\).)-.25 E F1144 532.8 Q F2(pr)2.5 E(ompt)-.45 -E F0(Display)180 544.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 -(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) --3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 556.8 Q +(xactly the characters read \(with the e)-.15 F .67 +(xception of backslash; see the)-.15 F F1180 638.4 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 650.4 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 662.4 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161 +(on standard error)3.661 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 674.4 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F (prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 568.8 Q F0 .544(Backslash does not act as an escape character) -180 568.8 R 5.543(.T)-.55 G .543 -(he backslash is considered to be part of)-5.543 F(the line.)180 580.8 Q +144 686.4 Q F0 .543(Backslash does not act as an escape character) +180 686.4 R 5.543(.T)-.55 G .544 +(he backslash is considered to be part of)-5.543 F(the line.)180 698.4 Q (In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E (wline pair may not be used as a line continuation.)-.25 E F1144 -592.8 Q F0(Silent mode.)180 592.8 Q -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 604.8 Q F2(timeout)2.5 E F0(Cause)180 616.8 Q F1 -.18(re)2.928 -G(ad).18 E F0 .428(to time out and return f)2.928 F .428 -(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 -(ber of characters\) is not read within)180 628.8 R F2(timeout)3.061 E -F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) -3.061 F(with a fractional portion follo)180 640.8 Q -(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E -.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ -g input from a terminal, pipe, or other special \214le; it has no ef)180 -652.8 R .505(fect when reading)-.25 F .589(from re)180 664.8 R .589 -(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 -(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) --.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 -(artial input read into the speci\214ed).15 F -.25(va)180 676.8 S -(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 -.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) -2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 -G(ata.)-2.77 E 1.12(The e)180 688.8 R 1.12 -(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 -(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 -(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 700.8 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -F1144 712.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor)180 -712.8 Q F2(fd)2.5 E F0(.)A .477(If no)144 729.6 R F2(names)3.337 E F0 -.477(are supplied, the line read is assigned to the v)3.247 F(ariable) --.25 E F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476 -(The e)4.976 F .476(xit status is zero,)-.15 F(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(13)198.725 E 0 Cg EP +710.4 Q F0(Silent mode.)180 710.4 Q +(If input is coming from a terminal, characters are not echoed.)5 E +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(13)198.725 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .772(unless end-of-\214le is encountered,) -144 84 R/F1 10/Times-Bold@0 SF -.18(re)3.272 G(ad).18 E F0 .773 -(times out \(in which case the status is greater than 128\), a)3.272 F --.25(va)144 96 S 2.004 -(riable assignment error \(such as assigning to a readonly v).25 F 2.004 -(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F -(descriptor is supplied as the ar)144 108 Q(gument to)-.18 E F12.5 -E F0(.)A F1 -.18(re)108 124.8 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 -2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E -F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 136.8 R --.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 -.77(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 -148.8 R 1.097(If the)6.097 F F13.597 E F0 1.097 -(option is supplied, the functions corresponding to the)3.597 F F2 -(names)3.596 E F0 1.096(are so)3.596 F(mark)144 160.8 Q 3.334(ed. The) +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 96 Q F1 -.18(re)2.929 G +(ad).18 E F0 .428(to time out and return f)2.929 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 +(ber of characters\) is not read within)180 108 R F2(timeout)3.061 E F0 +(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 120 Q +(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E +.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +g input from a terminal, pipe, or other special \214le; it has no ef)180 +132 R .506(fect when reading)-.25 F .59(from re)180 144 R .59 +(gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589 +(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 +G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 +(artial input read into the speci\214ed).15 F -.25(va)180 156 S(riable) +.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 +(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G +(ata.)-2.77 E 1.12(The e)180 168 R 1.12(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) +.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 +180 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 192 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 192 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 208.8 R F2(names)3.336 E F0 .476 +(are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E +/F3 9/Times-Bold@0 SF(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A +F0 .477(The e)4.977 F .477(xit status is zero,)-.15 F .773 +(unless end-of-\214le is encountered,)144 220.8 R F1 -.18(re)3.273 G(ad) +.18 E F0 .772 +(times out \(in which case the status is greater than 128\), a)3.273 F +-.25(va)144 232.8 S 2.004 +(riable assignment error \(such as assigning to a readonly v).25 F 2.005 +(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F +(descriptor is supplied as the ar)144 244.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 261.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 273.6 R -.15(ve)-.25 G +(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) +-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 285.6 R +1.096(If the)6.096 F F13.596 E F0 1.097 +(option is supplied, the functions corresponding to the)3.596 F F2 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 297.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .777(ables to associati)144 172.8 R 1.077 -.15(ve a)-.25 H 3.277 -(rrays. If).15 F .777(both options are supplied,)3.277 F F13.277 E -F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name) -3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 184.8 R -.15(ve) +-.25 E .776(ables to associati)144 309.6 R 1.076 -.15(ve a)-.25 H 3.276 +(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E +F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 321.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F -.522(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 196.8 R(The)5.295 E F1 -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 333.6 R(The)5.296 E F1 +2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 208.8 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 -220.8 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 345.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +357.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) -3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) 3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) -5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 232.8 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 369.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) -.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 244.8 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 261.6 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 273.6 R --.15(xe)-.15 G .021(cuting and return the v).15 F .021 -(alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02 -(.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596 -(the return status is that of the last command e)144 285.6 R -.15(xe) --.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E -F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 -G(cuted).15 E 1.239(by a trap handler)144 297.6 R 3.738(,t)-.4 G 1.238 +(is supplied with a)2.76 F F2(name)144.36 381.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 398.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 410.4 R +-.15(xe)-.15 G .02(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F +5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 +(the return status is that of the last command e)144 422.4 R -.15(xe) +-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E +F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 +G(cuted).15 E 1.238(by a trap handler)144 434.4 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) --3.738 F -.15(xe)-.15 G(cuted).15 E 1.066(before the trap handler)144 -309.6 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E -F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) -3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F .39 -(determine the status is the last command e)144 321.6 R -.15(xe)-.15 G -.389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E -(n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke) -.4 G(d.).1 E(If)144 333.6 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 -.084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15 -(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 -E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589 -(causes the shell to stop e)144 345.6 R -.15(xe)-.15 G .589 -(cuting that script and return either).15 F F2(n)3.448 E F0 .588 -(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) -144 357.6 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F -.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326 -(is supplied, the return v)2.826 F .326(alue is)-.25 F .445 -(its least signi\214cant 8 bits.)144 369.6 R .444 -(The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E -(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 381.6 R -.15 +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.033(before the trap handler)144 +446.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E +F0 1.033(is e)3.533 F -.15(xe)-.15 G 1.033(cuted during a).15 F F1(DEB) +3.532 E(UG)-.1 E F0 1.032(trap, the last command used to)3.532 F .389 +(determine the status is the last command e)144 458.4 R -.15(xe)-.15 G +.389(cuted by the trap handler before).15 F F1 -.18(re)2.89 G(tur).18 E +(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o)-2.89 H -.1(ke).4 +G(d.).1 E(If)144 470.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 +(is used outside a function, b)2.584 F .084(ut during e)-.2 F -.15(xe) +-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 E +F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 F .588 +(causes the shell to stop e)144 482.4 R -.15(xe)-.15 G .588 +(cuting that script and return either).15 F F2(n)3.448 E F0 .589 +(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e) +144 494.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325 +(is supplied, the return v)2.826 F .325(alue is)-.25 F .444 +(its least signi\214cant 8 bits.)144 506.4 R .444 +(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E +(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 518.4 R -.15 (xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E -F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 -E .75(mand associated with the)144 393.6 R F1(RETURN)3.249 E F0 .749 +F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E +.749(mand associated with the)144 530.4 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .749(cution resumes after the function).15 F(or script.)144 405.6 Q F1 -(set)108 422.4 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .75(cution resumes after the function).15 F(or script.)144 542.4 Q F1 +(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 434.4 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 571.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 446.4 S .835 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 583.2 S .836 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F -.836(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 458.4 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.911(reset. In)144 470.4 R F2(posix)2.911 E F0 +.835(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 595.2 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.912(reset. In)144 607.2 R F2(posix)2.912 E F0 .412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.531 -(locale. When)144 482.4 R 1.031(options are speci\214ed, the)3.531 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) --.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 -(after option processing are treated as v)144 494.4 R 1.624 +(The output is sorted according to the current)5.412 F 3.53 +(locale. When)144 619.2 R 1.031(options are speci\214ed, the)3.53 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) +-.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F +1.624(after option processing are treated as v)144 631.2 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 506.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 643.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 518.4 Q -F0 1.378(Each v)184 518.4 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 655.2 Q +F0 1.377(Each v)184 655.2 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) --.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F -1.377(ute and)-.2 F(mark)184 530.4 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 542.4 Q F0 .131 -(Report the status of terminated background jobs immediately)184 542.4 R -2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 554.4 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 566.4 Q F0 -.088(Exit immediately if a)184 566.4 R F2(pipeline)2.588 E F0 .087 -(\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F -F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 578.4 Q -F2 1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF -1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) -.15 F 1.521(xits with a non-zero status.)-.15 F .08 -(The shell does not e)184 590.4 R .079(xit if the command that f)-.15 F -.079(ails is part of the command list immediately)-.1 F(follo)184 602.4 -Q 1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0 --.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 -(wing the)-.25 F F1(if)4.155 E F0(or)4.155 E F1(elif)4.155 E F0(reserv) -4.155 E(ed)-.15 E -.1(wo)184 614.4 S .582(rds, part of an).1 F 3.082(yc) --.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .581(list e)3.081 F .581 -(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 626.4 R -F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) --3.417 H .918(ommand in a pipeline b).15 F .918 -(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E --.25(va)184 638.4 S .661(lue is being in).25 F -.15(ve)-.4 G .661 -(rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 -(ompound command other than a subshell returns a)-3.161 F 1.112 -(non-zero status because a command f)184 650.4 R 1.112(ailed while)-.1 F -F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 -(eing ignored, the shell does)-3.612 F .178(not e)184 662.4 R 2.678 -(xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678 -(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 -(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 -(option applies to)2.677 F .617(the shell en)184 674.4 R .617 -(vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 686.4 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 -(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 698.4 -Q 2.042(If a compound command or shell function e)184 716.4 R -.15(xe) --.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 -E F0 2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 -728.4 R -.15(xe)-.15 G 1.435 -(cuted within the compound command or function).15 F(GNU Bash-4.2)72 768 -Q(2004 Apr 20)148.735 E(14)198.725 E 0 Cg EP +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F +1.378(ute and)-.2 F(mark)184 667.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 679.2 Q F0 .132 +(Report the status of terminated background jobs immediately)184 679.2 R +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 691.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 703.2 Q F0 +.087(Exit immediately if a)184 703.2 R F2(pipeline)2.587 E F0 .087 +(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 715.2 Q +F2 1.521(compound command)4.021 F F0(\(see)4.021 E F3 1.521 +(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F +1.521(xits with a non-zero status.)-.15 F .079(The shell does not e)184 +727.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(GNU Bash 5.0)72 768 +Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E .193(body will be af)184 84 R .193 -(fected by the)-.25 F/F1 10/Times-Bold@0 SF2.693 E F0 .193 -(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 -2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)-.1 E -3.39(status. If)184 96 R 3.39(ac)3.39 G .89 +E(UIL)-.1 E(TINS\(1\))-.92 E(follo)184 84 Q 1.655(wing a)-.25 F/F1 10 +/Times-Bold@0 SF(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 -.1(ke) +4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 +(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) +4.154 E(ed)-.15 E -.1(wo)184 96 S .581(rds, part of an).1 F 3.081(yc) +-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 108 R +F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) +-3.418 H .918(ommand in a pipeline b).15 F .917 +(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E +-.25(va)184 120 S .66(lue is being in).25 F -.15(ve)-.4 G .66(rted with) +.15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 +(ompound command other than a subshell returns a)-3.161 F 1.113 +(non-zero status because a command f)184 132 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 +(eing ignored, the shell does)-3.612 F .177(not e)184 144 R 2.677 +(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 +(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 +(option applies to)2.678 F .618(the shell en)184 156 R .617 +(vironment and each subshell en)-.4 F .617(vironment separately \(see) +-.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR) +184 168 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 180 Q +2.042(If a compound command or shell function e)184 198 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 +2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 210 R +-.15(xe)-.15 G 1.436(cuted within the compound command or function).15 F +.194(body will be af)184 222 R .194(fected by the)-.25 F F12.694 E +F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) +-.1 E 3.39(status. If)184 234 R 3.39(ac)3.39 G .89 (ompound command or shell function sets)-3.39 F F13.39 E F0 .89 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 108 Q F13.153 E F0 .653 -(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 --.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F -(or the command containing the function call completes.)184 120 Q F1 -144 132 Q F0(Disable pathname e)184 132 Q(xpansion.)-.15 E F1 -144 144 Q F0 2.239(Remember the location of commands as the)184 -144 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F --.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 -156 Q(ault.)-.1 E F1144 168 Q F0 .513(All ar)184 168 R .514 +(where)184 246 Q F13.154 E F0 .654 +(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 +-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F +(or the command containing the function call completes.)184 258 Q F1 +144 270 Q F0(Disable pathname e)184 270 Q(xpansion.)-.15 E F1 +144 282 Q F0 2.238(Remember the location of commands as the)184 +282 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +-.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 +294 Q(ault.)-.1 E F1144 306 Q F0 .514(All ar)184 306 R .514 (guments in the form of assignment statements are placed in the en)-.18 -F .514(vironment for a)-.4 F -(command, not just those that precede the command name.)184 180 Q F1 -144 192 Q F0 .149(Monitor mode.)184 192 R .149 -(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F -.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 -(on systems that support it \(see)184 204 R/F2 9/Times-Bold@0 SF .651 -(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 -(\). All).15 F .651(processes run in a separate)3.151 F .679 -(process group.)184 216 R .678(When a background job completes, the she\ -ll prints a line containing its)5.679 F -.15(ex)184 228 S(it status.).15 -E F1144 240 Q F0 .652(Read commands b)184 240 R .652(ut do not e) --.2 F -.15(xe)-.15 G .652(cute them.).15 F .653 -(This may be used to check a shell script for)5.652 F(syntax errors.)184 -252 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 264 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 276 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 288 Q F0(Same as)224 300 Q F12.5 E -F0(.)A F1(braceexpand)184 312 Q F0(Same as)224 324 Q F12.5 E F0(.) -A F1(emacs)184 336 Q F0 .089 -(Use an emacs-style command line editing interf)224 336 R 2.589 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 318 Q F1 +144 330 Q F0 .148(Monitor mode.)184 330 R .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 +(on systems that support it \(see)184 342 R F2 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 354 R .679 +(When a background job completes, the shell prints a line containing it\ +s)5.678 F -.15(ex)184 366 S(it status.).15 E F1144 378 Q F0 .653 +(Read commands b)184 378 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +(cute them.).15 F .652(This may be used to check a shell script for) +5.653 F(syntax errors.)184 390 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 402 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 414 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 426 Q F0 +(Same as)224 438 Q F12.5 E F0(.)A F1(braceexpand)184 450 Q F0 +(Same as)224 462 Q F12.5 E F0(.)A F1(emacs)184 474 Q F0 .089 +(Use an emacs-style command line editing interf)224 474 R 2.589 (ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 348 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 486 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 360 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 498 R(also af)2.5 E(fects the editing interf) -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) -184 372 Q(exit)-.18 E F0(Same as)224 372 Q F12.5 E F0(.)A F1 -(errtrace)184 384 Q F0(Same as)224 384 Q F12.5 E F0(.)A F1 -(functrace)184 396 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 -(hashall)184 420 Q F0(Same as)224 420 Q F12.5 E F0(.)A F1 -(histexpand)184 432 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 -(history)184 456 Q F0 .587(Enable command history)224 456 R 3.087(,a) +184 510 Q(exit)-.18 E F0(Same as)224 510 Q F12.5 E F0(.)A F1 +(errtrace)184 522 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(functrace)184 534 Q F0(Same as)224 546 Q F12.5 E F0(.)A F1 +(hashall)184 558 Q F0(Same as)224 558 Q F12.5 E F0(.)A F1 +(histexpand)184 570 Q F0(Same as)224 582 Q F12.5 E F0(.)A F1 +(history)184 594 Q F0 .586(Enable command history)224 594 R 3.087(,a) -.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 468 Q +(.)A F0 .587(This option is)5.087 F(on by def)224 606 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -480 Q(eeof)-.18 E F0 1.656(The ef)224 492 R 1.656 +618 Q(eeof)-.18 E F0 1.657(The ef)224 630 R 1.657 (fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) -4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -504 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 516 S(yw).1 E(ord)-.1 E F0(Same as)224 528 Q F1 -2.5 E F0(.)A F1(monitor)184 540 Q F0(Same as)224 540 Q F12.5 -E F0(.)A F1(noclob)184 552 Q(ber)-.1 E F0(Same as)224 564 Q F12.5 -E F0(.)A F1(noexec)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A -F1(noglob)184 588 Q F0(Same as)224 588 Q F12.5 E F0(.)A F1(nolog) -184 600 Q F0(Currently ignored.)224 600 Q F1(notify)184 612 Q F0 -(Same as)224 612 Q F12.5 E F0(.)A F1(nounset)184 624 Q F0(Same as) -224 624 Q F12.5 E F0(.)A F1(onecmd)184 636 Q F0(Same as)224 636 Q -F12.5 E F0(.)A F1(ph)184 648 Q(ysical)-.15 E F0(Same as)224 648 Q -F12.5 E F0(.)A F1(pipefail)184 660 Q F0 1.03(If set, the return v) -224 660 R 1.029(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 672 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 684 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 696 Q F0 -2.091(Change the beha)224 696 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -708 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F -F0(belo)3.463 E(w)-.25 E 2.307 -(for a reference to a document that details ho)224 720 R 4.806(wp)-.25 G -2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP +4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +642 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 654 S(yw).1 E(ord)-.1 E F0(Same as)224 666 Q F1 +2.5 E F0(.)A F1(monitor)184 678 Q F0(Same as)224 678 Q F12.5 +E F0(.)A F1(noclob)184 690 Q(ber)-.1 E F0(Same as)224 702 Q F12.5 +E F0(.)A F1(noexec)184 714 Q F0(Same as)224 714 Q F12.5 E F0(.)A +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15)198.725 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(beha)224 84 Q(vior)-.2 E(.)-.55 E/F1 10 -/Times-Bold@0 SF(pri)184 96 Q(vileged)-.1 E F0(Same as)224 108 Q F1 -2.5 E F0(.)A F1 -.1(ve)184 120 S(rbose).1 E F0(Same as)224 120 Q -F12.5 E F0(.)A F1(vi)184 132 Q F0 1.465 -(Use a vi-style command line editing interf)224 132 R 3.966(ace. This) --.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224 -144 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 156 Q F0(Same as)224 156 Q F12.5 E F0(.)A(If)184 174 Q -F13.053 E F0 .553(is supplied with no)3.053 F/F2 10/Times-Italic@0 -SF(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 -(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -186 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 -3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 -(commands to recreate the current)3.572 F -(option settings is displayed on the standard output.)184 198 Q F1 -144 210 Q F0 -.45(Tu)184 210 S 1.072(rn on).45 F F2(privile)4.822 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F -/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) --.27 E F0 1.071(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 222 R 1.501 -(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A -F3 -.27(BA)184 234 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G -(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G -.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 246 R .379 -(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 -(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 -(user \(group\) id, and the)184 258 R F12.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 270 Q .694 -.15(ve u)-.25 H .394 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(noglob)184 84 Q F0 +(Same as)224 84 Q F12.5 E F0(.)A F1(nolog)184 96 Q F0 +(Currently ignored.)224 96 Q F1(notify)184 108 Q F0(Same as)224 108 Q F1 +2.5 E F0(.)A F1(nounset)184 120 Q F0(Same as)224 120 Q F12.5 +E F0(.)A F1(onecmd)184 132 Q F0(Same as)224 132 Q F12.5 E F0(.)A +F1(ph)184 144 Q(ysical)-.15 E F0(Same as)224 144 Q F12.5 E F0(.)A +F1(pipefail)184 156 Q F0 1.029(If set, the return v)224 156 R 1.029 +(alue of a pipeline is the v)-.25 F 1.03 +(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 168 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 180 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 192 Q F0 +2.09(Change the beha)224 192 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +204 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9 +/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 216 R 4.807(wp)-.25 G +2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 +228 Q(vior)-.2 E(.)-.55 E F1(pri)184 240 Q(vileged)-.1 E F0(Same as)224 +252 Q F12.5 E F0(.)A F1 -.1(ve)184 264 S(rbose).1 E F0(Same as)224 +264 Q F12.5 E F0(.)A F1(vi)184 276 Q F0 1.466 +(Use a vi-style command line editing interf)224 276 R 3.965(ace. This) +-.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 +288 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A(If)184 318 Q +F13.052 E F0 .552(is supplied with no)3.052 F F2(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 +(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 +330 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 +3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 +(commands to recreate the current)3.571 F +(option settings is displayed on the standard output.)184 342 Q F1 +144 354 Q F0 -.45(Tu)184 354 S 1.071(rn on).45 F F2(privile)4.821 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F +F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +(\214les are not pro-)3.322 F 1.501 +(cessed, shell functions are not inherited from the en)184 366 R 1.5 +(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 +-.27(BA)184 378 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G +.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F +(vironment,)-.4 E .38(are ignored.)184 390 R .38 +(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) +-.25 H .379(ser \(group\) id not equal to the real).15 F .461 +(user \(group\) id, and the)184 402 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .462 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 414 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .387(user id is not reset.)184 282 R -.45(Tu)5.387 G -.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 -F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F -(set to the real user and group ids.)184 294 Q F1144 306 Q F0 -(Exit after reading and e)184 306 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 318 Q F0 -.35(Tr)184 318 S .043(eat unset v).35 F .044 +2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .386(user id is not reset.)184 426 R -.45(Tu)5.386 G +.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 +F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F +(set to the real user and group ids.)184 438 Q F1144 450 Q F0 +(Exit after reading and e)184 450 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 462 Q F0 -.35(Tr)184 462 S .044(eat unset v).35 F .044 (ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .183(error when performing parameter e)184 330 R 2.683 -(xpansion. If)-.15 F -.15(ex)2.683 G .182 +as an)-.25 F .182(error when performing parameter e)184 474 R 2.682 +(xpansion. If)-.15 F -.15(ex)2.682 G .183 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 342 R 3.246(,t)-.4 G .746 +(able or parameter)184 486 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -354 Q F1144 366 Q F0(Print shell input lines as the)184 366 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 378 Q F0 .315(After e)184 378 R +498 Q F1144 510 Q F0(Print shell input lines as the)184 510 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 522 Q F0 .315(After e)184 522 R .315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 (fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) -2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 -390 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 +534 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 402 Q +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 546 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 414 Q F0 2.579(The shell performs brace e)184 414 R 2.578 +144 558 Q F0 2.578(The shell performs brace e)184 558 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 426 Q -(ault.)-.1 E F1144 438 Q F0 .213(If set,)184 438 R F1(bash)2.713 E -F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 570 Q +(ault.)-.1 E F1144 582 Q F0 .214(If set,)184 582 R F1(bash)2.714 E +F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -3.054(tors. This)184 450 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F +3.053(tors. This)184 594 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 462 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 474 Q F0 .103(If set, an)184 474 R 2.603(yt)-.15 G .103 -(rap on)-2.603 F F1(ERR)2.603 E F0 .104 -(is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 486 R -.15(xe)-.15 G .839(cuted in a subshell en).15 -F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 -(trap is normally not inherited in)3.338 F(such cases.)184 498 Q F1 -144 510 Q F0(Enable)184 510 Q F1(!)3.031 E F0 .531 -(style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 522 Q -.15 -(ve)-.25 G(.).15 E F1144 534 Q F0 .96 -(If set, the shell does not resolv)184 534 R 3.459(es)-.15 G .959 -(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 -(cuting commands such as).15 F F1(cd)3.459 E F0 2.821 -(that change the current w)184 546 R 2.822(orking directory)-.1 F 7.822 -(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 -(ysical directory structure)-.05 F 2.686(instead. By)184 558 R(def)2.686 +.15 F(tor)184 606 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 618 Q F0 .104(If set, an)184 618 R 2.604(yt)-.15 G .104 +(rap on)-2.604 F F1(ERR)2.604 E F0 .103 +(is inherited by shell functions, command substitutions, and com-)2.604 +F .838(mands e)184 630 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 +(trap is normally not inherited in)3.339 F(such cases.)184 642 Q F1 +144 654 Q F0(Enable)184 654 Q F1(!)3.032 E F0 .532 +(style history substitution.)5.532 F .531(This option is on by def)5.532 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 666 Q -.15 +(ve)-.25 G(.).15 E F1144 678 Q F0 .959 +(If set, the shell does not resolv)184 678 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 +(cuting commands such as).15 F F1(cd)3.46 E F0 2.822 +(that change the current w)184 690 R 2.822(orking directory)-.1 F 7.822 +(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 +(ysical directory structure)-.05 F 2.685(instead. By)184 702 R(def)2.685 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 570 Q(.)-.65 E F1144 -582 Q F0 .89(If set, an)184 582 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 -(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 -(are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 594 R -.15(xe)-.15 G 1.932 -(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 606 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 618 Q -F0 .4(If no ar)184 618 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 -(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 630 Q -F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -642 Q F0 1.945(Signal the end of options, cause all remaining)184 642 R -F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G -1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 654 R -F13.445 E F0(and)3.445 E F13.445 E F0 .945 -(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) -3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B -(parameters remain unchanged.)184 666 Q .425(The options are of)144 -682.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 -(ault unless otherwise noted.)-.1 F .425 -(Using + rather than \255 causes these options)5.425 F .177 -(to be turned of)144 694.8 R 2.677(f. The)-.25 F .178 -(options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 -(current set of options may be found in)144 706.8 R F1<24ad>2.566 E F0 -5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F -(is encountered.)144 718.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E -(16)198.725 E 0 Cg EP +(mands which change the current directory)184 714 Q(.)-.65 E +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(16)198.725 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shift)108 84 Q F0([) -2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .428 -(The positional parameters from)144 96 R F2(n)2.928 E F0 .429 -(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G .429 -(rameters represented by the num-).15 F(bers)144 108 Q F1($#)2.583 E F0 -(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 -(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) --.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) -.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 -(is 0, no parameters are changed.)144 120 R(If)5.06 E F2(n)2.92 E F0 .06 -(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F(If) -5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t) -C(he)-2.56 E .144(positional parameters are not changed.)144 132 R .144 -(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 .143 -(is greater than)2.883 F F1($#)2.643 E F0 -(or less than zero; otherwise 0.)144 144 Q F1(shopt)108 160.8 Q F0([)2.5 -E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname)-2.5 E -F0(...])2.5 E -.8(To)144 172.8 S .639(ggle the v).8 F .639 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 .89 +(If set, an)184 84 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1(DEB)3.39 E +(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 +(are inherited by shell functions, command)3.39 F 1.932 +(substitutions, and commands e)184 96 R -.15(xe)-.15 G 1.932 +(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 108 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 120 Q +F0 .401(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G +.401(his option, then the positional parameters are unset.)-2.901 F +(Otherwise,)5.4 E(the positional parameters are set to the)184 132 Q/F2 +10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni) +.15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E +F0(.)A F1144 144 Q F0 1.944 +(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E +(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G 1.945 +(ssigned to the positional)-4.445 F 3.446(parameters. The)184 156 R F1 +3.446 E F0(and)3.446 E F13.446 E F0 .945 +(options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) +3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B +(parameters remain unchanged.)184 168 Q .425(The options are of)144 +184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(ault unless otherwise noted.)-.1 F .425 +(Using + rather than \255 causes these options)5.425 F .178 +(to be turned of)144 196.8 R 2.678(f. The)-.25 F .178 +(options can also be speci\214ed as ar)2.678 F .178(guments to an in) +-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 +(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0 +5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 +(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F +(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 249.6 R F2(n)2.929 E F0 +.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G +.428(rameters represented by the num-).15 F(bers)144 261.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A F2(n)A F0 .082 +(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga) +-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to) +.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06 +(is 0, no parameters are changed.)144 273.6 R(If)5.06 E F2(n)2.92 E F0 +.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F +(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 285.6 R +.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 +.144(is greater than)2.884 F F1($#)2.644 E F0 +(or less than zero; otherwise 0.)144 297.6 Q F1(shopt)108 314.4 Q F0([) +2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) +-2.5 E F0(...])2.5 E -.8(To)144 326.4 S .64(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E -5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 -(listed belo)144 184.8 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H -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 338.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 -F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 -(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 196.8 R .825 -(ith no options, or with the)-.4 F F13.325 E F0 .826 -(option, a list of all settable options is displayed, with an)3.325 F -.945(indication of whether or not each is set.)144 208.8 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 220.8 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 232.8 Q -F0(Enable \(set\) each)180 232.8 Q F2(optname)2.5 E F0(.)A F1144 -244.8 Q F0(Disable \(unset\) each)180 244.8 Q F2(optname)2.5 E F0(.)A F1 -144 256.8 Q F0 .003(Suppresses normal output \(quiet mode\); the \ -return status indicates whether the)180 256.8 R F2(optname)2.504 E F0 -(is)2.504 E .256(set or unset.)180 268.8 R .256(If multiple)5.256 F F2 -(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G -2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 280.8 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 292.8 Q F0 -(Restricts the v)180 292.8 Q(alues of)-.25 E F2(optname)2.5 E F0 +F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 350.4 R .826 +(ith no options, or with the)-.4 F F13.326 E F0 .825 +(option, a list of all settable options is displayed, with an)3.326 F +.551(indication of whether or not each is set; if)144 362.4 R F2 +(optnames)3.052 E F0 .552 +(are supplied, the output is restricted to those)3.052 F 2.55 +(options. The)144 374.4 R F12.55 E F0 .049(option causes output t\ +o be displayed in a form that may be reused as input.)2.55 F(Other)5.049 +E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 398.4 Q F0(Enable \(set\) each)180 +398.4 Q F2(optname)2.5 E F0(.)A F1144 410.4 Q F0 +(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1144 +422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 422.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 434.4 R .256(If multiple)5.256 F F2(optname)2.756 +E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G +(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 446.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 458.4 Q F0 +(Restricts the v)180 458.4 Q(alues of)-.25 E F2(optname)2.5 E F0 (to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 309.6 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 475.2 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 -(set or unset, respecti)144 321.6 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +(set or unset, respecti)144 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U) -.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 -2.234(options are disabled \(unset\) by)4.734 F(def)144 333.6 Q(ault.) +2.234(options are disabled \(unset\) by)4.734 F(def)144 499.2 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -350.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +516 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) 4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 362.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 374.4 Q(The list of)144 391.2 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 409.2 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 409.2 R +144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell) +-.25 F(option.)144 540 Q(The list of)144 556.8 Q F1(shopt)2.5 E F0 +(options is:)2.5 E F1(assoc_expand_once)144 574.8 Q F0 1.944 +(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G +1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .857(arithmetic e)184 598.8 R .857 +(xpression e)-.15 F -.25(va)-.25 G .857(luation and while e).25 F -.15 +(xe)-.15 G .857(cuting b).15 F .857(uiltins that can perform v)-.2 F +(ariable)-.25 E(assignments.)184 610.8 Q F1(autocd)144 622.8 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 622.8 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156 +F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .156(If set, an ar)184 658.8 R .156 (gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 457.2 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0 +(name of a v)184 670.8 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -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 +682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 694.8 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 E .77(one character too man)184 706.8 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 505.2 Q +(the command proceeds.)184 718.8 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237 -E F0 .736(checks that a command found in the hash table e)3.237 F .736 -(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -541.2 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2 -Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448 +.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)198.725 E 0 Cg EP +%%Page: 18 18 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(checkhash)144 84 Q F0 +.737(If set,)184 96 R F1(bash)3.237 E F0 .736 +(checks that a command found in the hash table e)3.237 F .736 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 108 +Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q +F0 .448(If set,)184 132 R F1(bash)2.948 E F0 .448 (lists the status of an)2.948 F 2.949(ys)-.15 G .449 (topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.439(shell. If)184 577.2 R(an)3.439 E 3.439(yj)-.15 G +F -.15(ve)-.25 G 3.439(shell. If)184 144 R(an)3.439 E 3.439(yj)-.15 G .938(obs are running, this causes the e)-3.439 F .938 (xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 -(attempted without an interv)184 589.2 R 2.203(ening command \(see)-.15 -F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 601.2 Q -.1(wa) --.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 .797(If set,)184 -625.2 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G -.796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G -.796(pdates the)-3.296 F -.25(va)184 637.2 S(lues of).25 E F3(LINES)2.5 -E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 649.2 Q F0 1.202(If set,)184 649.2 R F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 +(attempted without an interv)184 156 R 2.203(ening command \(see)-.15 F +/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 168 Q -.1(wa)-.1 +G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 180 Q F0 1.09(If set,)184 +192 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09 +(uiltin\) command and, if)-.2 F(necessary)184 204 Q 2.5(,u)-.65 G +(pdates the v)-2.5 E(alues of)-.25 E F2(LINES)2.5 E F0(and)2.25 E F2 +(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 216 Q F0 1.202 +(If set,)184 216 R F1(bash)3.702 E F0 1.202(attempts to sa)3.702 F 1.502 +-.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -661.2 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 673.2 -Q F0 .42(If set,)184 685.2 R F1(bash)2.92 E F0 .42(changes its beha)2.92 -F .419(vior to that of v)-.2 F .419 +228 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +(ws easy re-editing of multi-line commands.)-.25 F 1.132 +(This option is enabled by)6.132 F(def)184 240 Q .613(ault, b)-.1 F .613 +(ut only has an ef)-.2 F .614 +(fect if command history is enabled, as described abo)-.25 F .914 -.15 +(ve u)-.15 H(nder).15 E F2(HIST)184 252 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 264 Q F0 .42(If set,)184 276 R F1(bash)2.92 E F0 .42 +(changes its beha)2.92 F .419(vior to that of v)-.2 F .419 (ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) -184 697.2 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E -F1(=~)2.962 E F0 .462 +184 288 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1 +(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 709.2 R F1([[)3.21 E F0 .71(conditional command')3.21 F -(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +(using the)184 300 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) 3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 -(use ASCII collation and)184 721.2 R F2(str)3.321 E(cmp)-.37 E F0 .821 -(\(3\); bash-4.1 and later use the current locale').19 F 3.321(sc)-.55 G -(ollation)-3.321 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(17) -198.725 E 0 Cg EP -%%Page: 18 18 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(sequence and)184 84 Q/F1 10/Times-Italic@0 -SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10/Times-Bold@0 SF(compat32) -144 96 Q F0 1.41(If set,)184 108 R F2(bash)3.91 E F0 1.41 -(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 +(use ASCII collation and)184 312 R/F4 10/Times-Italic@0 SF(str)3.321 E +(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 324 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 336 Q F0 1.41(If set,) +184 348 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +(vior to that of v)-.2 F 1.409 (ersion 3.2 with respect to locale-speci\214c)-.15 F .422 -(string comparison when using the)184 120 R F2([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>) +(string comparison when using the)184 360 R F1([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) 2.923 E F0 .423(operators \(see pre-)2.923 F .481 -(vious item\) and the ef)184 132 R .481 +(vious item\) and the ef)184 372 R .481 (fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 -(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 384 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0 +F1(compat40)144 396 Q F0 1.409(If set,)184 408 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 (ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 -(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007 -(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>) -4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R -F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(string comparison when using the)184 420 R F1([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 432 R +F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 (fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) -.15 E .087(4.0 and later interrupt the list as if the shell recei)184 -204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 -(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q -(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,) -184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix) +444 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 456 Q +(xt command in the list.)-.15 E F1(compat41)144 468 Q F0 1.483(If set,) +184 480 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F4(posix) 3.983 E F0 1.484 (mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +(ex)184 492 S .959(pansion as a special character).15 F 5.959(.T)-.55 G .958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 (nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 264 +(the characters between the single quotes are considered quoted.)184 504 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 516 R .589(ersion 4.1.)-.15 F .589(The def) 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q -F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 528 Q F1(compat42)144 540 Q +F0 1.796(If set,)184 552 R F1(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2 +4.296 F(ord)-.1 E -.15(ex)184 564 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 576 Q F0 .141(If set,)184 588 R F1 (bash)2.641 E F0 .141(does not print a w)2.641 F .14 (arning message if an attempt is made to use a quoted com-)-.1 F .912 -(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2 +(pound array assignment as an ar)184 600 R .912(gument to)-.18 F F1 (declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 -(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 612 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) -.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) --2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1 +-2.852 E -.1(fa)184 624 S 1.057(tal errors that cause the shell to e).1 F 1.058(xit\), and does not reset the loop state when a shell)-.15 F -.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F -(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 +.375(function is e)184 636 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 .374(in a shell function to af)2.875 F .374(fect loops in)-.25 F -(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 -(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E -F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524 -(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G -4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F -2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 456 R .029(metacharacters appear in shell v)184 -468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1 -F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073 -(ariable names that e)-.25 F 1.073 -(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 492 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 +(the caller')184 648 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 660 Q F0 .441(If set,)184 672 R F1(bash)2.941 E F0(sa) +2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B) +-2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184 +684 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +(rdless of whether or not e).05 E(xtended deb)-.15 E +(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 696 Q F0 .654 +(If set,)184 708 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524 +(forming completion.)184 720 R 1.524(If not set,)6.524 F F1(bash)4.024 E +F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 +(etacharacters such as the dollar sign)-4.024 F(GNU Bash 5.0)72 768 Q +(2004 Apr 20)149.565 E(18)198.725 E 0 Cg EP +%%Page: 19 19 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E 2.667(from the set of characters that will\ + be quoted in completed \214lenames when these)184 84 R .028 +(metacharacters appear in shell v)184 96 R .028(ariable references in w) +-.25 F .029(ords to be completed.)-.1 F .029(This means)5.029 F 1.073 +(that dollar signs in v)184 108 R 1.073(ariable names that e)-.25 F +1.073(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 +-.25(ev e)184 120 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 Q +132 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 144 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487 -(If set,)184 540 R F2(bash)2.987 E F0 .486 +(ersions through 4.2.)-.15 E/F1 10/Times-Bold@0 SF(dir)144 156 Q(expand) +-.18 E F0 .486(If set,)184 168 R F1(bash)2.986 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 -552 R .179(This changes the contents of the readline editing b)5.179 F -(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 -564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184 -576 R F2(bash)3.359 E F0 .858 -(attempts spelling correction on directory names during w)3.359 F .858 +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +180 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 192 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 204 Q F0 .858(If set,)184 +204 R F1(bash)3.358 E F0 .858 +(attempts spelling correction on directory names during w)3.358 F .859 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E -F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0 -(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 -(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail) -144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s) --.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q -(gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E -(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0 -.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E -/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F2(extdeb)144 672 Q(ug)-.2 E F0 .671(If set at shell in)184 684 R +(the directory name initially supplied does not e)184 216 Q(xist.)-.15 E +F1(dotglob)144 228 Q F0 .165(If set,)184 228 R F1(bash)2.665 E F0 .165 +(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) +-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F +(xpansion.)-.15 E(The \214lenames)184 240 Q F1 -.63(``)2.5 G -.55(.').63 +G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0 +(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5 +(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0 +(is set.)2.5 E F1(execfail)144 252 Q F0 1.386(If set, a non-interacti) +184 252 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(xit if it cannot e)-.15 F -.15(xe)-.15 G 1.387 +(cute the \214le speci\214ed as an).15 F(ar)184 264 Q(gument to the)-.18 +E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E .3 +-.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0 +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 276 Q F0 .717 +(If set, aliases are e)184 288 R .717(xpanded as described abo)-.15 F +1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 300 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 312 Q(ug)-.2 E F0 .671(If set at shell in)184 324 R -.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 (cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F -.221(identical to the)184 696 R F22.721 E(ugger)-.2 E F0 +.221(identical to the)184 336 R F12.721 E(ugger)-.2 E F0 2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 -(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 708 Q -(uggers is enabled:)-.2 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E -(18)198.725 E 0 Cg EP -%%Page: 19 19 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(1.)184 84 Q F0(The) -220 84 Q F14.25 E F0 1.75(option to the)4.25 F F1(declar)4.251 E -(e)-.18 E F0 -.2(bu)4.251 G 1.751 -(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 96 Q -(gument.)-.18 E F1(2.)184 108 Q F0 1.667(If the command run by the)220 -108 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 120 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 132 Q F0 .84 -(If the command run by the)220 132 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 348 Q +(uggers is enabled:)-.2 E F1(1.)184 360 Q F0(The)220 360 Q F14.25 +E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) +4.251 G 1.751(iltin displays the source \214le name and line).2 F +(number corresponding to each function name supplied as an ar)220 372 Q +(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)220 +384 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 396 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .84 +(If the command run by the)220 408 R F1(DEB)3.34 E(UG)-.1 E F0 .841 (trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 144 S .488 +(exe)220 420 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 156 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 432 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 168 Q/F2 9/Times-Bold@0 SF -.27(BA)220 168 S -(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 180 Q --.15(ve)-.15 G(.).15 E F1(5.)184 192 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 192 R -(shells in)220 204 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 -(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(n)-.15 E F0(.)A F1(4.)184 444 Q F2 -.27(BA)220 444 S(SH_ARGC).27 E F0 +(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 456 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 468 R +(shells in)220 480 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 216 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 216 R(in)220 228 Q --.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command) +(traps.)2.5 E F1(6.)184 492 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 492 R(in)220 504 Q +-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4 +(extglob)144 516 Q F0 .4(If set, the e)184 516 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q -F0(are enabled.)2.5 E F1(extquote)144 264 Q F0 2.473(If set,)184 276 R -F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 288 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 300 Q F0 -1.425(If set, patterns which f)184 300 R 1.425 +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 528 Q +F0(are enabled.)2.5 E F1(extquote)144 540 Q F0 2.473(If set,)184 552 R +F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 +E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within) +-4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G +(pansions).15 E(enclosed in double quotes.)184 564 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 576 Q F0 +1.425(If set, patterns which f)184 576 R 1.425 (ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 312 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 324 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 336 R<8c78>-.25 E .936(es speci\214ed by the) +(xpansion result in an)-.15 F -.15(ex)184 588 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the) -.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 348 R .32 +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32 (ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 (he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 360 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 (abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 -F(enabled by def)184 372 Q(ault.)-.1 E F1(globasciiranges)144 384 Q F0 -2.519(If set, range e)184 396 R 2.519 +(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) +184 648 Q(ault.)-.1 E F1(globasciiranges)144 660 Q F0 2.519 +(If set, range e)184 672 R 2.519 (xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 (xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E -(Matching)184 408 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +(Matching)184 684 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) -3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 (nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 420 R 3.52(sc)-.55 G 1.02 +-3.214 F 1.02(That is, the current locale')184 696 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 432 R F1(A) +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 708 R F1(A) 3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 444 Q(.)-.55 E -F1(globstar)144 456 Q F0 .519(If set, the pattern)184 456 R F1(**)3.019 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(-case ASCII characters will collate)-.2 F(together)184 720 Q(.)-.55 E +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP +%%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 468 R .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 -480 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 504 Q F1(histappend)144 -516 Q F0 .676 +108 Q F1(gnu_errfmt)144 120 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 132 Q F1(histappend)144 +144 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -528 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G -(ri-).25 E(able when the shell e)184 540 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 552 Q(eedit)-.18 -E F0 .575(If set, and)184 564 R F1 -.18(re)3.075 G(adline).18 E F0 .575 -(is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 -(he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F -(tory substitution.)184 576 Q F1(histv)144 588 Q(erify)-.1 E F0 .403 -(If set, and)184 600 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +156 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 +-.25(va)2.926 G(ri-).25 E(able when the shell e)184 168 Q +(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 +(histr)144 180 Q(eedit)-.18 E F0 .575(If set, and)184 192 R F1 -.18(re) +3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15 +(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F +.576(ailed his-)-.1 F(tory substitution.)184 204 Q F1(histv)144 216 Q +(erify)-.1 E F0 .403(If set, and)184 228 R F1 -.18(re)2.903 G(adline).18 +E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 612 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 240 R 5.661(.I)-.55 G .662 (nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 -G(adline).18 E F0(editing)3.162 E -.2(bu)184 624 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 252 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 636 Q F0 1.182(If set, and)184 648 R F1 -.18(re)3.682 +(hostcomplete)144 264 Q F0 1.182(If set, and)184 276 R F1 -.18(re)3.682 G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 (will attempt to perform hostname completion)3.681 F 1.38(when a w)184 -660 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +288 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 (is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E -F2(READLINE)3.881 E F0(abo)184 672 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 684 Q F0(If set,) -184 696 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +F2(READLINE)3.881 E F0(abo)184 300 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 312 Q F0(If set,) +184 324 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19) -198.725 E 0 Cg EP -%%Page: 20 20 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(inherit_err)144 84 Q -(exit)-.18 E F0 .22(If set, command substitution inherits the v)184 96 R -.219(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 -(option, instead of unsetting)2.719 F(it in the subshell en)184 108 Q -2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F2 10 -/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) -144 120 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 132 R 2.83 -(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 -.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F -.967(that line to be ignored in an interacti)184 144 R 1.267 -.15(ve s) --.25 H .967(hell \(see).15 F/F3 9/Times-Bold@0 SF(COMMENTS)3.467 E F0 -(abo)3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F -(enabled by def)184 156 Q(ault.)-.1 E F1(lastpipe)144 168 Q F0 .066 -(If set, and job control is not acti)184 168 R -.15(ve)-.25 G 2.566(,t) +.15 E(xits.)-.15 E F1(inherit_err)144 336 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 348 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 360 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E +F0(is enabled.)2.5 E F1(interacti)144 372 Q -.1(ve)-.1 G(_comments).1 E +F0 .33(If set, allo)184 384 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .967 +(that line to be ignored in an interacti)184 396 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 408 Q +(ault.)-.1 E F1(lastpipe)144 420 Q F0 .066 +(If set, and job control is not acti)184 420 R -.15(ve)-.25 G 2.566(,t) .15 G .066(he shell runs the last command of a pipeline not e)-2.566 F -.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 180 Q(vironment.)-.4 E F1(lithist)144 192 Q F0 .655(If set, and the) -184 192 R F1(cmdhist)3.155 E F0 .654 +184 432 Q(vironment.)-.4 E F1(lithist)144 444 Q F0 .655(If set, and the) +184 444 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 204 Q +(with embedded ne)184 456 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 216 Q F0 .486 +(localv)144 468 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 480 R +.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422 +(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184 +492 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 504 Q +F1(login_shell)144 516 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -228 R F3(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 240 S(lue may not be changed.).25 -E F1(mailwar)144 252 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -264 R F1(bash)3.315 E F0 .814 +528 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 540 S(lue may not be changed.).25 +E F1(mailwar)144 552 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +564 R F1(bash)3.315 E F0 .814 (is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 276 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E F2(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) --.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 288 -Q F0 .324(If set, and)184 300 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +-.1(wa)184 576 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 588 +Q F0 .324(If set, and)184 600 R F1 -.18(re)2.824 G(adline).18 E F0 .324 (is being used,)2.824 F F1(bash)2.824 E F0 .324 -(will not attempt to search the)2.824 F F3 -.666(PA)2.825 G(TH)-.189 E +(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F -(completions when completion is attempted on an empty line.)184 312 Q F1 -(nocaseglob)144 324 Q F0 .437(If set,)184 336 R F1(bash)2.937 E F0 .436 +(completions when completion is attempted on an empty line.)184 612 Q F1 +(nocaseglob)144 624 Q F0 .437(If set,)184 636 R F1(bash)2.937 E F0 .436 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 348 S +H .436(ashion when performing pathname).05 F -.15(ex)184 648 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 360 Q F0 1.193(If set,)184 -372 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 660 Q F0 1.193(If set,)184 +672 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F .551(while e)184 384 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 684 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 396 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 408 Q F1 -(nullglob)144 420 Q F0 .855(If set,)184 432 R F1(bash)3.355 E F0(allo) -3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) -3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 -(\)t).15 G(o)-3.354 E -.15(ex)184 444 S -(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -456 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -468 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 -(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 480 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 492 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 504 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 516 -S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F F3(PR)2.671 E -(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 528 Q(ault.)-.1 E F1 -.18(re)144 540 -S(stricted_shell).18 E F0 1.069 +(wo)184 696 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 708 Q +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(20)198.725 E 0 Cg EP +%%Page: 21 21 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(nullglob)144 84 Q F0 +.855(If set,)184 96 R F1(bash)3.355 E F0(allo)3.355 E .855 +(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.354 G .854 +(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354(\)t).15 G(o) +-3.354 E -.15(ex)184 108 S(pand to a null string, rather than themselv) +.15 E(es.)-.15 E F1(pr)144 120 Q(ogcomp)-.18 E F0 .676 +(If set, the programmable completion f)184 132 R .677(acilities \(see) +-.1 F F1(Pr)3.177 E .677(ogrammable Completion)-.18 F F0(abo)3.177 E +-.15(ve)-.15 G(\)).15 E(are enabled.)184 144 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 156 Q(omptv) +-.18 E(ars)-.1 E F0 1.448(If set, prompt strings under)184 168 R 1.448 +(go parameter e)-.18 F 1.447(xpansion, command substitution, arithmetic) +-.15 F -.15(ex)184 180 S .17(pansion, and quote remo).15 F -.25(va)-.15 +G 2.67(la).25 G .17(fter being e)-2.67 F .17(xpanded as described in) +-.15 F/F2 9/Times-Bold@0 SF(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E +-.15(ve)-.15 G(.).15 E(This option is enabled by def)184 192 Q(ault.)-.1 +E F1 -.18(re)144 204 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 552 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 564 Q 2.86 +184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 576 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 240 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 588 Q(erbose)-.1 E F0 .502(If set, the)184 600 R F1 +F1(shift_v)144 252 Q(erbose)-.1 E F0 .502(If set, the)184 264 R F1 (shift)3.002 E F0 -.2(bu)3.002 G .501 (iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 612 Q F1(sour) -144 624 Q(cepath)-.18 E F0 .77(If set, the)184 636 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 276 Q F1(sour) +144 288 Q(cepath)-.18 E F0 .77(If set, the)184 300 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F -.771(alue of)-.25 F F3 -.666(PA)3.271 G(TH)-.189 E F0 .771 +.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 648 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 660 Q F0 -(If set, the)184 672 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 312 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 324 Q F0 +(If set, the)184 336 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E (xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) -108 688.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 700.8 R +108 352.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 364.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) --.25 G 3.501(sa).15 G F3(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 712.8 R F1 +-.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 +(login shell cannot be)3.501 F .022(suspended; the)144 376.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 724.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 388.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP -%%Page: 21 21 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 -(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(test)108 84 Q/F2 10 -/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 96 Q F2 -.2(ex)2.5 G -(pr).2 E F1(])2.5 E F0 .878(Return a status of 0 \(true\) or 1 \(f)144 -96 R .877(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)144 108 S -(pr).2 E F0 5.53(.E).73 G .53 +E F1(test)108 405.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 417.6 R .877 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 429.6 +S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 120 R 3.38 -.15(ve u)-.15 H(nder).15 E/F3 9 -/Times-Bold@0 SF(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9 -/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 -F(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q -(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 -E .785(Expressions may be combined using the follo)144 150 R .786 +(primaries described abo)144 441.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 +(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A +F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 453.6 Q(gument of)-.18 +E F12.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 471.6 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 162 R -.25(eva)3.412 G .912 +(dence. The)144 483.6 R -.25(eva)3.412 G .912 (luation depends on the number of ar).25 F .911(guments; see belo)-.18 F 4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 174 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) --2.5 E(guments.)-.18 E F1(!)144 186 Q F2 -.2(ex)2.5 G(pr).2 E F0 -.35 -(Tr)180 186 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.) --.1 E F1(\()144 198 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26 -(Returns the v)180 198 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 210 Q F2 -.2(ex) -144 222 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 -(Tr)180 234 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 246 S(pr1).2 E -F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 258 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 274.8 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 495.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 507.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 507.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 519.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 519.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 531.6 Q F3 -.2 +(ex)144 543.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 555.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 567.6 S +(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 +579.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 +(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 596.4 Q F0(and)2.5 E +F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 292.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 304.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 316.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 328.8 Q +(guments.)-.18 E 2.5(0a)144 614.4 S -.18(rg)-2.5 G(uments).18 E(The e) +180 626.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 638.4 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 650.4 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 340.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 352.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 662.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 674.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 364.8 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 686.4 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.88 E(TION)180 376.8 Q .553 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 698.4 Q .553 (AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 (xpression is true if the unary test is true.)-.15 F .552 -(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 388.8 Q +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 710.4 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 400.8 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 412.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 424.8 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 436.8 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 448.8 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 460.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F -.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 -2.985(,t)C .485(he result is the one-ar)-2.985 F .485 -(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 496.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -508.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 520.8 R -.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 -(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) -.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 -(posed of the remaining ar)180 532.8 R 4.147(guments. Otherwise,)-.18 F -1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 -G(luated).25 E(according to precedence using the rules listed abo)180 -544.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 556.8 S 2.5(rm)-2.5 G(ore ar) --2.5 E(guments)-.18 E 1.635(The e)180 568.8 R 1.635 -(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 -580.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 598.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 615.6 Q F0 -1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 615.6 R(The return status is 0.)144 -627.6 Q F1(trap)108 644.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command) -144 656.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F --.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G -3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G -(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 -(absent \(and there is a single)144 668.4 R F2(sigspec)3.108 E F0 3.108 -(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 -(ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 680.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 692.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 704.4 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 716.4 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 -(prints the list of commands associated with each)3.36 F 4.327 -(signal. The)144 728.4 R F14.327 E F0 1.826(option causes the she\ -ll to print a list of signal names and their corresponding)4.327 F -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP +(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(21)198.725 E 0 Cg EP %%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 3.125(numbers. Each)144 84 R/F1 10 -/Times-Italic@0 SF(sigspec)3.465 E F0 .625 -(is either a signal name de\214ned in <)3.435 F F1(signal.h)A F0 .626 -(>, or a signal number)B 5.626(.S)-.55 G(ignal)-5.626 E -(names are case insensiti)144 96 Q .3 -.15(ve a)-.25 H(nd the).15 E/F2 9 -/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a) -144 114 R F1(sigspec)4.489 E F0(is)4.459 E F2(EXIT)4.149 E F0 1.649 -(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +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 .855 +(the binary conditional operators listed abo)180 108 R 1.155 -.15(ve u) +-.15 H(nder).15 E/F1 9/Times-Bold@0 SF(CONDITION)3.355 E .855 +(AL EXPRESSIONS)-.18 F/F2 9/Times-Roman@0 SF(,)A F0(the)3.104 E .578 +(result of the e)180 120 R .578(xpression is the result of the binary t\ +est using the \214rst and third ar)-.15 F(guments)-.18 E 1.333 +(as operands.)180 132 R(The)6.333 E/F3 10/Times-Bold@0 SF3.833 E +F0(and)3.833 E F33.832 E F0 1.332 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 144 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F +.558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 +(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 +E(gument)-.18 E .521(test using the second and third ar)180 156 R 3.021 +(guments. If)-.18 F .521(the \214rst ar)3.021 F .52(gument is e)-.18 F +(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 F(ar)180 168 Q +.485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485 +(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 +F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 180 Q +(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G +(uments).18 E .385(If the \214rst ar)180 204 R .385(gument is)-.18 F F3 +(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 +G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384 +(xpression com-)-.15 F 1.647(posed of the remaining ar)180 216 R 4.147 +(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 +(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E +(according to precedence using the rules listed abo)180 228 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 240 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 252 R 1.635(xpression is parsed and e)-.15 F -.25(va) +-.25 G 1.635(luated according to precedence using the rules listed).25 F +(abo)180 264 Q -.15(ve)-.15 G(.).15 E(When used with)144 282 Q F3(test) +2.5 E F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 +E F3(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F3(times)108 298.8 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 298.8 R(The return status is 0.)144 +310.8 Q F3(trap)108 327.6 Q F0([)2.5 E F3(\255lp)A F0 2.5(][)C([)-2.5 E +/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...]) +2.5 E .703(The command)144 339.6 R F4(ar)3.533 E(g)-.37 E F0 .703 +(is to be read and e)3.423 F -.15(xe)-.15 G .702 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G +(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F4 +(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) +144 351.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F33.108 E +F0 3.108(,e)C .608 +(ach speci\214ed signal is reset to its original disposition)-3.108 F +.659(\(the v)144 363.6 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 375.6 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 387.6 R +F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 399.6 R F33.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 +(prints the list of commands associated with each)3.36 F 2.83 +(signal. The)144 411.6 R F32.83 E F0 .33(option causes the shell \ +to print a list of signal names and their corresponding num-)2.83 F 4.31 +(bers. Each)144 423.6 R F4(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 +(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E +(names are case insensiti)144 435.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 453.6 R F4 +(sigspec)4.489 E F0(is)4.459 E F1(EXIT)4.149 E F0 1.649 +(\(0\) the command)3.899 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F -1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F2(DEB)144 126 Q(UG) --.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F F1(ar) -3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 -(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.168(simple command) -3.667 F F0(,)A F1(for)3.668 E F0(command,)3.668 E F1(case)3.668 E F0 -(com-)3.668 E(mand,)144 138 Q F1(select)2.647 E F0 .147(command, e)2.647 -F -.15(ve)-.25 G .147(ry arithmetic).15 F F1(for)2.647 E F0 .146 +1.648(If a)6.648 F F4(sigspec)4.488 E F0(is)4.458 E F1(DEB)144 465.6 Q +(UG)-.09 E F2(,)A F0 1.167(the command)3.417 F F4(ar)3.997 E(g)-.37 E F0 +1.167(is e)3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) +-.25 G(ry).15 E F4 1.168(simple command)3.667 F F0(,)A F4(for)3.668 E F0 +(command,)3.668 E F4(case)3.668 E F0(com-)3.668 E(mand,)144 477.6 Q F4 +(select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 +(ry arithmetic).15 F F4(for)2.647 E F0 .146 (command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 150 R F2 .145 +(cutes in a).15 F .145(shell function \(see)144 489.6 R F1 .145 (SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F/F4 10/Times-Bold@0 SF(extdeb) -2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the)144 162 Q F4(shopt)3.201 -E F0 -.2(bu)3.201 G .7(iltin for details of its ef).2 F .7(fect on the) --.25 F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec) -3.54 E F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand) -144 174 Q F1(ar)3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G -.643(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15 -G(cuting.).15 E .961(If a)144 204 R F1(sigspec)3.801 E F0(is)3.771 E F2 -(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E -F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 -G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ -gle simple command\), a list, or a compound command returns a non\255ze\ -ro e)144 216 R .185(xit status, subject to)-.15 F .452(the follo)144 228 -R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 -(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 -(ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 240 R .387(wing a)-.25 F F4(while)2.887 -E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 -(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 252 R -.15(xe)-.15 G -.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 +F .146(to the description of the)2.646 F F3(extdeb)2.646 E(ug)-.2 E F0 +.146(option to)2.646 F(the)144 501.6 Q F3(shopt)3.201 E F0 -.2(bu)3.201 +G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F3(DEB)3.2 E +(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E +F1(RETURN)3.2 E F2(,)A F0 .7(the com-)2.95 F(mand)144 513.6 Q F4(ar) +3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.644(cuted with the).15 F F3(.)3.144 E F0(or)3.144 E F3(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 525.6 Q -.15(xe) +-.15 G(cuting.).15 E .961(If a)144 543.6 R F4(sigspec)3.801 E F0(is) +3.771 E F1(ERR)3.461 E F2(,)A F0 .961(the command)3.211 F F4(ar)3.791 E +(g)-.37 E F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F +-.15(ve)-.25 G 3.461(ra).15 G .96(pipeline \(which may consist of a) +-.001 F .185(single simple command\), a list, or a compound command ret\ +urns a non\255zero e)144 555.6 R .185(xit status, subject to)-.15 F .452 +(the follo)144 567.6 R .452(wing conditions.)-.25 F(The)5.452 E F1(ERR) +2.952 E F0 .451(trap is not e)2.701 F -.15(xe)-.15 G .451 +(cuted if the f).15 F .451(ailed command is part of the com-)-.1 F .387 +(mand list immediately follo)144 579.6 R .387(wing a)-.25 F F3(while) +2.887 E F0(or)2.887 E F3(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F4(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 591.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.278 E F0 .778 (list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 264 R 1.28 -(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 -F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) -3.78 E F0(.)A(These are the same conditions obe)144 276 Q(yed by the) --.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C -(ption.)-2.5 E 1.095 +(wing the \214nal)-.25 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 603.6 R +1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) +-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F +F3(!)3.78 E F0(.)A(These are the same conditions obe)144 615.6 Q +(yed by the)-.15 E F3(err)2.5 E(exit)-.18 E F0(\()2.5 E F3A F0 2.5 +(\)o)C(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -294 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 306 R .662 +633.6 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 645.6 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 318 R(return status is f)2.5 E(alse if an)-.1 -E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108 -334.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 -(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name) +-.4 F 2.5(created. The)144 657.6 R(return status is f)2.5 E(alse if an) +-.1 E(y)-.15 E F4(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F3(trap)2.5 E F0(returns true.)2.5 E F3(type)108 +674.4 Q F0([)2.5 E F3(\255aftpP)A F0(])A F4(name)2.5 E F0([)2.5 E F4 +(name)A F0(...])2.5 E -.4(Wi)144 686.4 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F4(name) 3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F4144 358.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 -.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E -F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 -(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 -(\214le)5.253 E F0(if)3.523 E F1(name)144.36 370.8 Q F0 .087 +F3144 698.4 Q F0 .842(option is used,)3.342 F F3(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E +F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 +(,).24 E F4 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F4 +(\214le)5.253 E F0(if)3.523 E F4(name)144.36 710.4 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F4 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 382.8 R .118 +(found, then nothing is printed, and an e)144 722.4 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 394.8 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -406.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 -(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 -3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 418.8 R F1(name)2.613 E F0 2.613(,e) -C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 -F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 -(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 -2.612 E F0(and)144 430.8 Q F43.23 E F0 .73(print the hashed v)3.23 -F .731 +F32.619 E F0 .119(option is used,)2.619 F F3(type)2.619 E F0 +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(22)198.725 E 0 Cg EP +%%Page: 23 23 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .855 +(either returns the name of the disk \214le that w)144 84 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F/F1 10/Times-Italic@0 +SF(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64 +(mand name, or nothing if)144 96 R/F2 10/Courier@0 SF .64(type -t name) +3.14 F F0 -.1(wo)3.14 G .641(uld not return).1 F F1(\214le)3.141 E F0 +5.641(.T).18 G(he)-5.641 E/F3 10/Times-Bold@0 SF3.141 E F0 .641 +(option forces a)3.141 F/F4 9/Times-Bold@0 SF -.666(PA)3.141 G(TH)-.189 +E F0 .113(search for each)144 108 R F1(name)2.613 E F0 2.613(,e)C -.15 +(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F2 .113(type -t name)2.613 F F0 +-.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I) +.18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F32.612 E +F0(and)144 120 Q F33.23 E F0 .73(print the hashed v)3.23 F .731 (alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 -144 442.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 -(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 -(cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 -(includes aliases and functions, if and only if the)144 454.8 R F4 +F F4 -.666(PA)3.231 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .731 +(If the)5.231 F F3144 132 Q F0 1.749(option is used,)4.249 F F3 +(type)4.248 E F0 1.748(prints all of the places that contain an e)4.248 +F -.15(xe)-.15 G 1.748(cutable named).15 F F1(name)4.248 E F0 6.748(.T) +.18 G(his)-6.748 E .744 +(includes aliases and functions, if and only if the)144 144 R F3 3.244 E F0 .744(option is not also used.)3.244 F .744 (The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 466.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 +144 156 R F33.723 E F0 6.223(.T)C(he)-6.223 E F33.723 E F0 1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 478.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) -5.325 E F0 .325(returns true if all of the ar)2.825 F .326 +144 168 R F3(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F3(type)5.325 +E F0 .325(returns true if all of the ar)2.825 F .326 (guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4 +(re not)-2.826 F(found.)144 180 Q F3(ulimit)108 196.8 Q F0([)2.5 E F3 (\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -519.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +208.8 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 531.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 +.943(that allo)144 220.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F33.443 E F0(and)3.443 E F33.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 543.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 232.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 555.6 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F42.926 E -F0(nor)2.926 E F42.926 E F0 .426 +ft limit may)2.709 F .425(be increased up to the v)144 244.8 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F32.926 E +F0(nor)2.926 E F32.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -567.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +256.8 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 268.8 R(alues)-.25 E F3(hard)3.241 E F0(,)A F3 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F3(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 591.6 R -.15(ve)-.25 G(ly).15 E +(soft limit, and no limit, respecti)144 280.8 R -.15(ve)-.25 G(ly).15 E 5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 603.6 R F42.999 E F0 +F .498(resource is printed, unless the)144 292.8 R F32.999 E F0 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 615.6 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 -144 627.6 Q F0(All current limits are reported)180 627.6 Q F4 -144 639.6 Q F0(The maximum sock)180 639.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F4144 651.6 Q F0 -(The maximum size of core \214les created)180 651.6 Q F4144 663.6 -Q F0(The maximum size of a process')180 663.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F4144 675.6 Q F0 -(The maximum scheduling priority \("nice"\))180 675.6 Q F4144 -687.6 Q F0 +(limit name and unit are printed before the v)144 304.8 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F3 +144 316.8 Q F0(All current limits are reported)180 316.8 Q F3 +144 328.8 Q F0(The maximum sock)180 328.8 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F3144 340.8 Q F0 +(The maximum size of core \214les created)180 340.8 Q F3144 352.8 +Q F0(The maximum size of a process')180 352.8 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F3144 364.8 Q F0 +(The maximum scheduling priority \("nice"\))180 364.8 Q F3144 +376.8 Q F0 (The maximum size of \214les written by the shell and its children)180 -687.6 Q F4144 699.6 Q F0(The maximum number of pending signals)180 -699.6 Q F4144 711.6 Q F0 -(The maximum number of kqueues that may be allocated)180 711.6 Q -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22)198.725 E 0 Cg EP -%%Page: 23 23 -%%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 size that may be lock)180 84 Q(ed into memory)-.1 E F1 -144 96 Q F0(The maximum resident set size \(man)180 96 Q 2.5(ys) --.15 G(ystems do not honor this limit\))-2.5 E F1144 108 Q F0 .791 -(The maximum number of open \214le descriptors \(most systems do not al\ -lo)180 108 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 120 Q F1144 132 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 132 Q F1 -144 144 Q F0(The maximum number of bytes in POSIX message queues) -180 144 Q F1144 156 Q F0 -(The maximum real-time scheduling priority)180 156 Q F1144 168 Q -F0(The maximum stack size)180 168 Q F1144 180 Q F0 -(The maximum amount of cpu time in seconds)180 180 Q F1144 192 Q -F0(The maximum number of processes a)180 192 Q -.25(va)-.2 G -(ilable to a single user).25 E F1144 204 Q F0 .47 -(The maximum amount of virtual memory a)180 204 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 216 -Q F1144 228 Q F0(The maximum number of \214le locks)180 228 Q F1 -144 240 Q F0(The maximum number of pseudoterminals)180 240 Q F1 -144 252 Q F0(The maximum number of threads)180 252 Q(If)144 268.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 280.8 R -.15(ve)-.25 G .044(n, then).15 F F1 -2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +376.8 Q F3144 388.8 Q F0(The maximum number of pending signals)180 +388.8 Q F3144 400.8 Q F0 +(The maximum number of kqueues that may be allocated)180 400.8 Q F3 +144 412.8 Q F0(The maximum size that may be lock)180 412.8 Q +(ed into memory)-.1 E F3144 424.8 Q F0 +(The maximum resident set size \(man)180 424.8 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F3144 436.8 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 436.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 448.8 Q F3144 460.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 460.8 Q F3 +144 472.8 Q F0 +(The maximum number of bytes in POSIX message queues)180 472.8 Q F3 +144 484.8 Q F0(The maximum real-time scheduling priority)180 484.8 +Q F3144 496.8 Q F0(The maximum stack size)180 496.8 Q F3144 +508.8 Q F0(The maximum amount of cpu time in seconds)180 508.8 Q F3 +144 520.8 Q F0(The maximum number of processes a)180 520.8 Q -.25 +(va)-.2 G(ilable to a single user).25 E F3144 532.8 Q F0 .47 +(The maximum amount of virtual memory a)180 532.8 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +544.8 Q F3144 556.8 Q F0(The maximum number of \214le locks)180 +556.8 Q F3144 568.8 Q F0(The maximum number of pseudoterminals)180 +568.8 Q F3144 580.8 Q F0(The maximum number of threads)180 580.8 Q +(If)144 597.6 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F32.968 E F0 .468(option is not used,)2.968 +F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 +(no option is gi)144 609.6 R -.15(ve)-.25 G .044(n, then).15 F F3 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F3 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -292.8 R F14.089 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 -4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 -4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 304.8 R 1.438 -(alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E -F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) --3.939 F(The)6.439 E .404(return status is 0 unless an in)144 316.8 R +621.6 R F34.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F34.089 E F0(,)A F3 +4.089 E F0(,)A F34.089 E F0(,)A F34.089 E F0(,)A F3 +4.089 E F0 4.089(,a)C(nd)-4.089 E F34.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.438(unscaled v)144 633.6 R 1.438 +(alues; and, when in Posix mode,)-.25 F F33.939 E F0(and)3.939 E +F33.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) +-3.939 F(The)6.439 E .404(return status is 0 unless an in)144 645.6 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -328.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 345.6 Q F0([)2.5 E -F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 357.6 R F2(mode)2.7 E F0 -5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +657.6 S .5 -.25(ew l)-2.5 H(imit.).25 E F3(umask)108 674.4 Q F0([)2.5 E +F3A F0 2.5(][)C F3-2.5 E F0 2.5(][)C F1(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 686.4 R F1(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F1(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 369.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -381.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 -(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +pted by)144 698.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +710.4 Q F1(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F32.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 393.6 R .547 +(printed in symbolic form; the def)144 722.4 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G -(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 405.6 Q F0 .551 -(is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 417.6 Q -(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E -(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 434.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 446.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) -4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E -F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 458.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E -(alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 475.2 Q F0<5bad>2.5 E F1 -(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 487.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +(he)-3.047 E F33.047 E F0 .547(option is supplied, and)3.047 F +(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP +%%Page: 24 24 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Italic@0 SF(mode)144.38 84 Q F0 +.551(is omitted, the output is in a form that may be reused as input.) +3.231 F .552(The return status is 0 if the)5.552 F(mode w)144 96 Q +(as successfully changed or if no)-.1 E F1(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E/F2 10 +/Times-Bold@0 SF(unalias)108 112.8 Q F0<5bad>2.5 E F2(a)A F0 2.5(][)C F1 +(name)-2.5 E F0(...])2.5 E(Remo)144 124.8 Q 1.955 -.15(ve e)-.15 H(ach) +.15 E F1(name)4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 +F(If)6.655 E F24.155 E F0 1.655 +(is supplied, all alias de\214nitions are)4.155 F(remo)144 136.8 Q -.15 +(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F1(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F2(unset)108 153.6 Q F0<5bad>2.5 E F2 +(fv)A F0 2.5(][)C-2.5 E F2(n)A F0 2.5(][)C F1(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 165.6 S 3.827(re).15 G(ach)-3.827 E F1(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F2(name)144.36 499.2 Q F0 1.551 +(If the)6.327 F F23.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F1(name)144.36 177.6 Q F0 1.551 (refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 (ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) -4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 511.2 R F1 -4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 189.6 R F2 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F1(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 523.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 -2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 -(is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E -F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 -(be unset rather than the v)144 535.2 R .492(ariable it references.)-.25 -F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 +F(remo)144 201.6 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F2 +2.537 E F0 .037(option is supplied, and)2.537 F F1(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F1(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F1(name)2.537 E F0(will)2.537 E .492 +(be unset rather than the v)144 213.6 R .492(ariable it references.)-.25 +F F25.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F2 2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -.221(options are supplied, each)144 547.2 R F2(name)2.721 E F0 .221 +.221(options are supplied, each)144 225.6 R F1(name)2.721 E F0 .221 (refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 (ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 559.2 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 237.6 R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 -(passed to subsequent commands.)144 571.2 R 3.206(If an)8.206 F 5.706 +(passed to subsequent commands.)144 249.6 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E -F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 261.6 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 -595.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +273.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 612 Q -F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 624 S .027(it for each speci\214ed child process and return its\ - termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 -(may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 636 R -.15(ve)-.25 G -.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 -(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 648 R -.15(ve)-.25 G .318 -(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 -(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 -(nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -660 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) -2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 -(ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 672 S(on-e) --2.596 E .096(xistent process or job, the return status is 127.)-.15 F -.095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 -F(of the last process or job w)144 684 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(SEE ALSO)72 700.8 Q F0(bash\(1\), sh\(1\))108 -712.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP +-.15 E F1(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F2(wait)108 290.4 Q +F0([)2.5 E F2(\255fn)A F0 2.5(][)C F1(id ...)-2.5 E F0(])A -.8(Wa)144 +302.4 S .659(it for each speci\214ed child process and return its termi\ +nation status.).8 F(Each)5.659 E F1(id)3.169 E F0 .658(may be a process) +3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 314.4 +R -.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 +G .009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) +-5.009 E F1(id)144.01 326.4 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G +.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521 +(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521 +(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 338.4 Q F2 +3.056 E F0 .556(option is supplied,)3.056 F F2(wait)3.057 E F0 -.1 +(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557 +(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .557 +(If the)5.557 F F23.057 E F0 .587 +(option is supplied, and job control is enabled,)144 350.4 R F2(wait) +3.086 E F0(forces)3.086 E F1(id)3.086 E F0 .586 +(to terminate before returning its sta-)3.086 F .755 +(tus, instead of returning when it changes status.)144 362.4 R(If)5.756 +E F1(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 +(xistent process or job, the)-.15 F .365(return status is 127.)144 374.4 +R .365(Otherwise, the return status is the e)5.365 F .365 +(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 +386.4 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 403.2 Q F0 +(bash\(1\), sh\(1\))108 415.2 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20) +149.565 E(24)198.725 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rbash.ps b/doc/rbash.ps index 244a49904..9c4c5fd01 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Aug 31 10:24:00 2016 +%%CreationDate: Mon Mar 19 09:43:23 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.22 3 diff --git a/doc/version.texi b/doc/version.texi index 90bdb3e1f..2072eeedf 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,11 +1,11 @@ @ignore -Copyright (C) 1988-2016 Free Software Foundation, Inc. +Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Wed Sep 7 17:12:22 EDT 2016 +@set LASTCHANGE Thu Mar 15 11:29:49 EDT 2018 -@set EDITION 4.4 -@set VERSION 4.4 +@set EDITION 5.0 +@set VERSION 5.0 -@set UPDATED 7 September 2016 -@set UPDATED-MONTH September 2016 +@set UPDATED 15 March 2018 +@set UPDATED-MONTH March 2018 diff --git a/error.c b/error.c index b05c39eb1..417c902e9 100644 --- a/error.c +++ b/error.c @@ -44,6 +44,7 @@ extern int errno; #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #include "input.h" @@ -53,8 +54,6 @@ extern int errno; extern int executing_line_number __P((void)); -extern int last_command_exit_value; -extern char *shell_name; #if defined (JOB_CONTROL) extern pid_t shell_pgrp; extern int give_terminal_to __P((pid_t, int)); diff --git a/eval.c b/eval.c index db863e72f..3104bffef 100644 --- a/eval.c +++ b/eval.c @@ -35,6 +35,7 @@ #include "bashintl.h" #include "shell.h" +#include "parser.h" #include "flags.h" #include "trap.h" @@ -47,16 +48,6 @@ # include "bashhist.h" #endif -extern int EOF_reached; -extern int indirection_level; -extern int posixly_correct; -extern int subshell_environment, running_under_emacs; -extern int last_command_exit_value, stdin_redir; -extern int need_here_doc; -extern int current_command_number, current_command_line_count, line_number; -extern int expand_aliases; -extern char *ps0_prompt; - #if defined (HAVE_POSIX_SIGNALS) extern sigset_t top_level_mask; #endif @@ -90,7 +81,7 @@ reader_loop () /* XXX - why do we set this every time through the loop? And why do it if SIGINT is trapped in an interactive shell? */ - if (interactive_shell && signal_is_ignored (SIGINT) == 0) + if (interactive_shell && signal_is_ignored (SIGINT) == 0 && signal_is_trapped (SIGINT) == 0) set_signal_handler (SIGINT, sigint_sighandler); if (code != NOT_JUMPED) @@ -157,10 +148,6 @@ reader_loop () else if (current_command = global_command) { global_command = (COMMAND *)NULL; - current_command_number++; - - executing = 1; - stdin_redir = 0; /* If the shell is interactive, expand and display $PS0 after reading a command (possibly a list or pipeline) and before executing it. */ @@ -177,6 +164,11 @@ reader_loop () free (ps0_string); } + current_command_number++; + + executing = 1; + stdin_redir = 0; + execute_command (current_command); exec_done: @@ -202,6 +194,47 @@ reader_loop () return (last_command_exit_value); } +/* Pretty print shell scripts */ +int +pretty_print_loop () +{ + COMMAND *current_command; + char *command_to_print; + int code; + int global_posix_mode, last_was_newline; + + global_posix_mode = posixly_correct; + last_was_newline = 0; + while (EOF_Reached == 0) + { + code = setjmp_nosigs (top_level); + if (code) + return (EXECUTION_FAILURE); + if (read_command() == 0) + { + current_command = global_command; + global_command = 0; + posixly_correct = 1; /* print posix-conformant */ + if (current_command && (command_to_print = make_command_string (current_command))) + { + printf ("%s\n", command_to_print); /* for now */ + last_was_newline = 0; + } + else if (last_was_newline == 0) + { + printf ("\n"); + last_was_newline = 1; + } + posixly_correct = global_posix_mode; + dispose_command (current_command); + } + else + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + static sighandler alrm_catcher(i) int i; @@ -228,6 +261,15 @@ send_pwd_to_eterm () free (f); } +static void +execute_prompt_command () +{ + char *command_to_execute; + + command_to_execute = get_string_value ("PROMPT_COMMAND"); + if (command_to_execute) + execute_variable_command (command_to_execute, "PROMPT_COMMAND"); +} /* Call the YACC-generated parser and return the status of the parse. Input is read from the current input stream (bash_input). yyparse leaves the parsed command in the global variable GLOBAL_COMMAND. @@ -236,7 +278,6 @@ int parse_command () { int r; - char *command_to_execute; need_here_doc = 0; run_pending_traps (); @@ -249,9 +290,7 @@ parse_command () actually printed. */ if (interactive && bash_input.type != st_string && parser_expanding_alias() == 0) { - command_to_execute = get_string_value ("PROMPT_COMMAND"); - if (command_to_execute) - execute_variable_command (command_to_execute, "PROMPT_COMMAND"); + execute_prompt_command (); if (running_under_emacs == 2) send_pwd_to_eterm (); /* Yuck */ diff --git a/examples/INDEX.html b/examples/INDEX.html index bd06b2566..bcca1f9e0 100644 --- a/examples/INDEX.html +++ b/examples/INDEX.html @@ -43,45 +43,29 @@ A more ksh-compatible 'autoload' (with lazy load). ksh + + ./functions/autoload.v3 + An updated ksh-compatible 'autoload'. + ksh + ./functions/basename A replacement for basename(1). basename - - ./functions/basename2 - Fast basename(1) and dirname(1) functions for BASH/SH. - basename, dirname - - - ./functions/coproc.bash - Start, control, and end coprocesses. - - - ./functions/coshell.bash - Control shell coprocesses (see coprocess.bash). - - - ./functions/coshell.README - README for coshell and coproc. - ./functions/csh-compat A C-shell compatibility package. csh - - ./functions/dirfuncs - Directory manipulation functions from the book 'The Korn Shell'. - ./functions/dirname A replacement for dirname(1). dirname - ./functions/emptydir - Find out if a directory is empty. + ./functions/dirstack + Directory stack functions. ./functions/exitstat @@ -100,18 +84,6 @@ Front end to sync TERM changes to both stty(1) and readline 'bind'. stty.bash - - ./functions/func - Print out definitions for functions named by arguments. - - - ./functions/gethtml - Get a web page from a remote server (wget(1) in bash!). - - - ./functions/getoptx.bash - getopt function that parses long-named options. - ./functions/inetaddr Internet address conversion (inet2hex & hex2inet). @@ -121,10 +93,6 @@ Return zero if the argument is in the path and executable. inpath - - ./functions/isnum.bash - Test user input on numeric or character value. - ./functions/isnum2 Test user input on numeric values, with floating point. @@ -133,18 +101,6 @@ ./functions/isvalidip Test user input for valid IP Addresses. - - ./functions/jdate.bash - Julian date conversion. - - - ./functions/jj.bash - Look for running jobs. - - - ./functions/keep - Try to keep some programs in the foreground and running. - ./functions/ksh-cd ksh-like 'cd': cd [-LP] [dir [change]]. @@ -164,47 +120,14 @@ ./functions/login Replace the 'login' and 'newgrp' builtins in old Bourne shells. - - ./functions/lowercase - Rename files to lower case. - rename lower - - - ./functions/manpage - Find and print a manual page. - fman - - - ./functions/mhfold - Print MH folders, useful only because folders(1) doesn't print mod date/times. - ./functions/notify.bash Notify when jobs change status. - - ./functions/pathfuncs - Path related functions (no_path, add_path, pre-path, del_path). - path - ./functions/README README - - ./functions/recurse - Recursive directory traverser. - - - ./functions/repeat2 - A clone of C shell builtin 'repeat'. - repeat, csh - - - ./functions/repeat3 - A clone of C shell builtin 'repeat'. - repeat, csh - ./functions/seq Generate a sequence from m to n, m defaults to 1. @@ -237,10 +160,6 @@ A function to emulate the ancient ksh builtin. ksh - - ./functions/term - A shell function to set the terminal type interactively or not. - ./functions/whatis An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command. @@ -253,17 +172,6 @@ ./functions/which An emulation of 'which(1)' as it appears in FreeBSD. - - ./functions/xalias.bash - Convert csh alias commands to bash functions. - csh, aliasconv - - - ./functions/xfind.bash - A 'find(1)' clone. - - - ./loadables/ Example loadable replacements @@ -278,26 +186,18 @@ cat(1) replacement with no options - the way cat was intended. cat, readline pager - - ./loadables/cut.c - cut(1) replacement. - ./loadables/dirname.c Return directory portion of pathname. dirname - ./loadables/finfo.c - Print file info. + ./loadables/fdflags.c + Display or modify file descriptor flags - ./loadables/getconf.c - POSIX.2 getconf utility. - - - ./loadables/getconf.h - Replacement definitions for ones the system doesn't provide. + ./loadables/finfo.c + Print file info. ./loadables/head.c @@ -323,10 +223,18 @@ ./loadables/Makefile.in Simple makefile for the sample loadable builtins. + + ./loadables/Makefile.inc.in + Sample makefile to use for loadable builtin development. + ./loadables/mkdir.c Make directories. + + ./loadables/mypid.c + Demonstrate how a loadable builtin can create and delete shell variables. + ./loadables/necho.c echo without options or argument interpretation. @@ -355,14 +263,26 @@ ./loadables/realpath.c Canonicalize pathnames, resolving symlinks. + + ./loadables/rm.c + Remove file. + ./loadables/rmdir.c Remove directory. + + ./loadables/setpgid.c + Set a child process's process group. + ./loadables/sleep.c sleep for fractions of a second. + + ./loadables/stat.c + Load an associative array with stat information about a file. + ./loadables/strftime.c Loadable builtin interface to strftime(3). @@ -430,221 +350,12 @@ ./misc/README README - - ./misc/suncmd.termcap - SunView TERMCAP string. - - - - - ./scripts.noah - Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey) - - - ./scripts.noah/aref.bash - Pseudo-arrays and substring indexing examples. - - - ./scripts.noah/bash.sub.bash - Library functions used by require.bash. - - - ./scripts.noah/bash_version.bash - A function to slice up $BASH_VERSION. - - - ./scripts.noah/meta.bash - Enable and disable eight-bit readline input. - - - ./scripts.noah/mktmp.bash - Make a temporary file with a unique name. - - - ./scripts.noah/number.bash - A fun hack to translate numerals into English. - - - ./scripts.noah/PERMISSION - Permissions to use the scripts in this directory. - - - ./scripts.noah/prompt.bash - A way to set PS1 to some predefined strings. - - - ./scripts.noah/README - README - - - ./scripts.noah/remap_keys.bash - A front end to 'bind' to redo readline bindings. - - - ./scripts.noah/require.bash - Lisp-like require/provide library functions for bash. - - - ./scripts.noah/send_mail.bash - Replacement SMTP client written in bash. - - - ./scripts.noah/shcat.bash - Bash replacement for 'cat(1)'. - cat - - - ./scripts.noah/source.bash - Replacement for source that uses current directory. - - - ./scripts.noah/string.bash - The string(3) functions at the shell level. - - - ./scripts.noah/stty.bash - Front-end to stty(1) that changes readline bindings too. - fstty - - - ./scripts.noah/y_or_n_p.bash - Prompt for a yes/no/quit answer. - ask - - - - - ./scripts.v2 - John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey). - - - ./scripts.v2/arc2tarz - Convert an "arc" archive to a compressed tar archive. - - - ./scripts.v2/bashrand - Random number generator with upper and lower bounds and optional seed. - random - - - ./scripts.v2/cal2day.bash - Convert a day number to a name. - - - ./scripts.v2/cdhist.bash - cd replacement with a directory stack added. - - - ./scripts.v2/corename - Tell what produced a core file. - - - ./scripts.v2/fman - Fast man(1) replacement. - manpage - - - ./scripts.v2/frcp - Copy files using ftp(1) but with rcp-type command line syntax. - - - ./scripts.v2/lowercase - Change filenames to lower case. - rename lower - - - ./scripts.v2/ncp - A nicer front end for cp(1) (has -i, etc.). - - - ./scripts.v2/newext - Change the extension of a group of files. - rename - - - ./scripts.v2/nmv - A nicer front end for mv(1) (has -i, etc.). - rename - - - ./scripts.v2/pages - Print specified pages from files. - - - ./scripts.v2/PERMISSION - Permissions to use the scripts in this directory. - - - ./scripts.v2/pf - A pager front end that handles compressed files. - - - ./scripts.v2/pmtop - Poor man's 'top(1)' for SunOS 4.x and BSD/OS. - - - ./scripts.v2/README - README - - - ./scripts.v2/ren - Rename files by changing parts of filenames that match a pattern. - rename - - - ./scripts.v2/rename - Change the names of files that match a pattern. - rename - - - ./scripts.v2/repeat - Execute a command multiple times. - repeat - - - ./scripts.v2/shprof - Line profiler for bash scripts. - - - ./scripts.v2/untar - Unarchive a (possibly compressed) tarfile into a directory. - - - ./scripts.v2/uudec - Carefully uudecode(1) multiple files. - - - ./scripts.v2/uuenc - uuencode(1) multiple files. - - - ./scripts.v2/vtree - Print a visual display of a directory tree. - tree - - - ./scripts.v2/where - Show where commands that match a pattern are. - ./scripts Example scripts - - ./scripts/adventure.sh - Text adventure game in bash! - - - ./scripts/bcsh.sh - Bourne shell cshell-emulator. - csh - - - ./scripts/bash-hexdump.sh - hexdump(1) in bash - hexdump -C, hd ./scripts/cat.sh Readline-based pager. @@ -654,65 +365,15 @@ ./scripts/center Center - center a group of lines. - - ./scripts/dd-ex.sh - Line editor using only /bin/sh, /bin/dd and /bin/rm. - - - ./scripts/fixfiles.bash - Recurse a tree and fix files containing various "bad" chars. - - - ./scripts/hanoi.bash - The inevitable Towers of Hanoi in bash. - ./scripts/inpath Search $PATH for a file the same name as $1; return TRUE if found. inpath - - ./scripts/krand.bash - Produces a random number within integer limits. - random - - - ./scripts/line-input.bash - Line input routine for GNU Bourne-Again Shell plus terminal-control primitives. - - - ./scripts/nohup.bash - bash version of 'nohup' command. - - - ./scripts/precedence - Test relative precedences for '&&' and '||' operators. - - - ./scripts/randomcard.bash - Print a random card from a card deck. - random - ./scripts/README README - - ./scripts/scrollbar - Display scrolling text. - - - ./scripts/scrollbar2 - Display scrolling text. - - - ./scripts/self-repro - A self-reproducing script (careful!) - - - ./scripts/showperm.bash - Convert ls(1) symbolic permissions into octal mode. - ./scripts/shprompt Display a prompt and get an answer satisfying certain criteria. @@ -722,37 +383,6 @@ ./scripts/spin.bash Display a 'spinning wheel' to show progress. - - ./scripts/timeout - Give rsh(1) a shorter timeout. - - - ./scripts/timeout2 - Execute a given command with a timeout. - - - ./scripts/timeout3 - Execute a given command with a timeout. - - - ./scripts/vtree2 - Display a tree printout of dir in 1k blocks. - tree - - - ./scripts/vtree3 - Display a graphical tree printout of dir. - tree - - - ./scripts/vtree3a - Display a graphical tree printout of dir. - tree - - - ./scripts/websrv.sh - A web server in bash! - ./scripts/xterm_title Print the contents of the xterm title bar. @@ -793,36 +423,4 @@ - - ./startup-files/apple - Example Start-up files for Mac OS X. - - - ./startup-files/apple/aliases - Sample aliases for Mac OS X. - - - ./startup-files/apple/bash.defaults - Sample User preferences file. - - - ./startup-files/apple/environment - Sample Bourne Again Shell environment file. - - - ./startup-files/apple/login - Sample login wrapper. - - - ./startup-files/apple/logout - Sample logout wrapper. - - - ./startup-files/apple/rc - Sample Bourne Again Shell config file. - - - ./startup-files/apple/README - README - diff --git a/examples/INDEX.txt b/examples/INDEX.txt index 4b5478eee..b47e2113a 100644 --- a/examples/INDEX.txt +++ b/examples/INDEX.txt @@ -9,43 +9,25 @@ Path Description X-Ref ./functions/autoload An almost ksh-compatible 'autoload' (no lazy load). ksh ./functions/autoload.v2 An almost ksh-compatible 'autoload' (no lazy load). ksh ./functions/autoload.v3 A more ksh-compatible 'autoload' (with lazy load). ksh +./functions/autoload.v4 An updated ksh-compatible 'autoload'. ksh ./functions/basename A replacement for basename(1). basename -./functions/basename2 Fast basename(1) and dirname(1) functions for BASH/SH. basename, dirname -./functions/coproc.bash Start, control, and end coprocesses. -./functions/coshell.bash Control shell coprocesses (see coprocess.bash). -./functions/coshell.README README for coshell and coproc. ./functions/csh-compat A C-shell compatibility package. csh -./functions/dirfuncs Directory manipulation functions from the book 'The Korn Shell'. ./functions/dirname A replacement for dirname(1). dirname -./functions/emptydir Find out if a directory is empty. +./functions/dirstack Directory stack functions. ./functions/exitstat Display the exit status of processes. ./functions/external Like 'command' but FORCES use of external command. ./functions/fact Recursive factorial function. ./functions/fstty Front end to sync TERM changes to both stty(1) and readline 'bind'. stty.bash -./functions/func Print out definitions for functions named by arguments. -./functions/gethtml Get a web page from a remote server (wget(1) in bash!). -./functions/getoptx.bash getopt function that parses long-named options. ./functions/inetaddr Internet address conversion (inet2hex & hex2inet). ./functions/inpath Return zero if the argument is in the path and executable. inpath -./functions/isnum.bash Test user input on numeric or character value. ./functions/isnum2 Test user input on numeric values, with floating point. ./functions/isvalidip Test user input for valid IP Addresses. -./functions/jdate.bash Julian date conversion. -./functions/jj.bash Look for running jobs. -./functions/keep Try to keep some programs in the foreground and running. ./functions/ksh-cd ksh-like 'cd': cd [-LP] [dir [change]]. ksh ./functions/ksh-compat-test ksh-like arithmetic test replacements. ksh ./functions/kshenv Functions and aliases to provide the beginnings of a ksh environment for bash. ksh ./functions/login Replace the 'login' and 'newgrp' builtins in old Bourne shells. -./functions/lowercase Rename files to lower case. rename lower -./functions/manpage Find and print a manual page. fman -./functions/mhfold Print MH folders, useful only because folders(1) doesn't print mod date/times. ./functions/notify.bash Notify when jobs change status. -./functions/pathfuncs Path related functions (no_path, add_path, pre-path, del_path). path ./functions/README README -./functions/recurse Recursive directory traverser. -./functions/repeat2 A clone of C shell builtin 'repeat'. repeat, csh -./functions/repeat3 A clone of C shell builtin 'repeat'. repeat, csh ./functions/seq Generate a sequence from m to n, m defaults to 1. ./functions/seq2 Generate a sequence from m to n, m defaults to 1. ./functions/shcat Readline-based pager. cat, readline pager @@ -53,28 +35,25 @@ Path Description X-Ref ./functions/sort-pos-params Sort the positional parameters. ./functions/substr A function to emulate the ancient ksh builtin. ksh ./functions/substr2 A function to emulate the ancient ksh builtin. ksh -./functions/term A shell function to set the terminal type interactively or not. ./functions/whatis An implementation of the 10th Edition Unix sh builtin 'whatis(1)' command. ./functions/whence An almost-ksh compatible 'whence(1)' command. ./functions/which An emulation of 'which(1)' as it appears in FreeBSD. -./functions/xalias.bash Convert csh alias commands to bash functions. csh, aliasconv -./functions/xfind.bash A 'find(1)' clone. ./loadables/ Example loadable replacements ./loadables/basename.c Return non-directory portion of pathname. basename ./loadables/cat.c cat(1) replacement with no options - the way cat was intended. cat, readline pager -./loadables/cut.c cut(1) replacement. ./loadables/dirname.c Return directory portion of pathname. dirname +./loadables/fdflags.c Display or modify file descriptor flags ./loadables/finfo.c Print file info. -./loadables/getconf.c POSIX.2 getconf utility. -./loadables/getconf.h Replacement definitions for ones the system doesn't provide. ./loadables/head.c Copy first part of files. ./loadables/hello.c Obligatory "Hello World" / sample loadable. ./loadables/id.c POSIX.2 user identity. ./loadables/ln.c Make links. ./loadables/logname.c Print login name of current user. ./loadables/Makefile.in Simple makefile for the sample loadable builtins. +./loadables/Makefile.inc.in Sample makefile to use for loadable builtin development. ./loadables/mkdir.c Make directories. +./loadables/mypid.c Demonstrate how a loadable builtin can create and delete shell variables. ./loadables/necho.c echo without options or argument interpretation. ./loadables/pathchk.c Check pathnames for validity and portability. ./loadables/print.c Loadable ksh-93 style print builtin. @@ -82,8 +61,11 @@ Path Description X-Ref ./loadables/push.c Anyone remember TOPS-20? ./loadables/README README ./loadables/realpath.c Canonicalize pathnames, resolving symlinks. +./loadables/rm.c Remove file. ./loadables/rmdir.c Remove directory. +./loadables/setpgid.c Set a child process's process group. ./loadables/sleep.c sleep for fractions of a second. +./loadables/stat.c Load an associative array with stat information about a file. ./loadables/strftime.c Loadable builtin interface to strftime(3). ./loadables/sync.c Sync the disks by forcing pending filesystem writes to complete. ./loadables/tee.c Duplicate standard input. @@ -101,83 +83,13 @@ Path Description X-Ref ./misc/aliasconv.sh Convert csh aliases to bash aliases and functions. csh, xalias ./misc/cshtobash Convert csh aliases, environment variables, and variables to bash equivalents. csh, xalias ./misc/README README -./misc/suncmd.termcap SunView TERMCAP string. - -./scripts.noah Noah Friedman's collection of scripts (updated to bash v2 syntax by Chet Ramey) -./scripts.noah/aref.bash Pseudo-arrays and substring indexing examples. -./scripts.noah/bash.sub.bash Library functions used by require.bash. -./scripts.noah/bash_version.bash A function to slice up $BASH_VERSION. -./scripts.noah/meta.bash Enable and disable eight-bit readline input. -./scripts.noah/mktmp.bash Make a temporary file with a unique name. -./scripts.noah/number.bash A fun hack to translate numerals into English. -./scripts.noah/PERMISSION Permissions to use the scripts in this directory. -./scripts.noah/prompt.bash A way to set PS1 to some predefined strings. -./scripts.noah/README README -./scripts.noah/remap_keys.bash A front end to 'bind' to redo readline bindings. -./scripts.noah/require.bash Lisp-like require/provide library functions for bash. -./scripts.noah/send_mail.bash Replacement SMTP client written in bash. -./scripts.noah/shcat.bash Bash replacement for 'cat(1)'. cat -./scripts.noah/source.bash Replacement for source that uses current directory. -./scripts.noah/string.bash The string(3) functions at the shell level. -./scripts.noah/stty.bash Front-end to stty(1) that changes readline bindings too. fstty -./scripts.noah/y_or_n_p.bash Prompt for a yes/no/quit answer. ask - -./scripts.v2 John DuBois' ksh script collection (converted to bash v2 syntax by Chet Ramey). -./scripts.v2/arc2tarz Convert an "arc" archive to a compressed tar archive. -./scripts.v2/bashrand Random number generator with upper and lower bounds and optional seed. random -./scripts.v2/cal2day.bash Convert a day number to a name. -./scripts.v2/cdhist.bash cd replacement with a directory stack added. -./scripts.v2/corename Tell what produced a core file. -./scripts.v2/fman Fast man(1) replacement. manpage -./scripts.v2/frcp Copy files using ftp(1) but with rcp-type command line syntax. -./scripts.v2/lowercase Change filenames to lower case. rename lower -./scripts.v2/ncp A nicer front end for cp(1) (has -i, etc.). -./scripts.v2/newext Change the extension of a group of files. rename -./scripts.v2/nmv A nicer front end for mv(1) (has -i, etc.). rename -./scripts.v2/pages Print specified pages from files. -./scripts.v2/PERMISSION Permissions to use the scripts in this directory. -./scripts.v2/pf A pager front end that handles compressed files. -./scripts.v2/pmtop Poor man's 'top(1)' for SunOS 4.x and BSD/OS. -./scripts.v2/README README -./scripts.v2/ren Rename files by changing parts of filenames that match a pattern. rename -./scripts.v2/rename Change the names of files that match a pattern. rename -./scripts.v2/repeat Execute a command multiple times. repeat -./scripts.v2/shprof Line profiler for bash scripts. -./scripts.v2/untar Unarchive a (possibly compressed) tarfile into a directory. -./scripts.v2/uudec Carefully uudecode(1) multiple files. -./scripts.v2/uuenc uuencode(1) multiple files. -./scripts.v2/vtree Print a visual display of a directory tree. tree -./scripts.v2/where Show where commands that match a pattern are. ./scripts Example scripts -./scripts/adventure.sh Text adventure game in bash! -./scripts/bash-hexdump.sh hexdump(1) in bash -./scripts/bcsh.sh Bourne shell cshell-emulator. csh ./scripts/cat.sh Readline-based pager. cat, readline pager ./scripts/center Center - center a group of lines. -./scripts/dd-ex.sh Line editor using only /bin/sh, /bin/dd and /bin/rm. -./scripts/fixfiles.bash Recurse a tree and fix files containing various "bad" chars. -./scripts/hanoi.bash The inevitable Towers of Hanoi in bash. ./scripts/inpath Search $PATH for a file the same name as $1; return TRUE if found. inpath -./scripts/krand.bash Produces a random number within integer limits. random -./scripts/line-input.bash Line input routine for GNU Bourne-Again Shell plus terminal-control primitives. -./scripts/nohup.bash bash version of 'nohup' command. -./scripts/precedence Test relative precedences for '&&' and '||' operators. -./scripts/randomcard.bash Print a random card from a card deck. random -./scripts/README README -./scripts/scrollbar Display scrolling text. -./scripts/scrollbar2 Display scrolling text. -./scripts/self-repro A self-reproducing script (careful!) -./scripts/showperm.bash Convert ls(1) symbolic permissions into octal mode. ./scripts/shprompt Display a prompt and get an answer satisfying certain criteria. ask ./scripts/spin.bash Display a 'spinning wheel' to show progress. -./scripts/timeout Give rsh(1) a shorter timeout. -./scripts/timeout2 Execute a given command with a timeout. -./scripts/timeout3 Execute a given command with a timeout. -./scripts/vtree2 Display a tree printout of dir in 1k blocks. tree -./scripts/vtree3 Display a graphical tree printout of dir. tree -./scripts/vtree3a Display a graphical tree printout of dir. tree -./scripts/websrv.sh A web server in bash! ./scripts/xterm_title Print the contents of the xterm title bar. ./scripts/zprintf Emulate printf (obsolete since it's now a bash builtin). @@ -189,11 +101,3 @@ Path Description X-Ref ./startup-files/Bashrc.bfox Sample Bourne Again SHell init file (Fox). ./startup-files/README README -./startup-files/apple Example Start-up files for Mac OS X. -./startup-files/apple/aliases Sample aliases for Mac OS X. -./startup-files/apple/bash.defaults Sample User preferences file. -./startup-files/apple/environment Sample Bourne Again Shell environment file. -./startup-files/apple/login Sample login wrapper. -./startup-files/apple/logout Sample logout wrapper. -./startup-files/apple/rc Sample Bourne Again Shell config file. -./startup-files/apple/README README diff --git a/examples/bash-completion/README b/examples/bash-completion/README new file mode 100644 index 000000000..fb5e7654d --- /dev/null +++ b/examples/bash-completion/README @@ -0,0 +1,7 @@ +Master source: https://github.com/scop/bash-completion + +This is the latest version of the bash-completion package, which provides +programmable completion specifications for a large number of commands. + +If you are a vendor installing bash or preparing a package containing bash, +please install the latest version of bash-completion when installing bash. diff --git a/examples/bash-completion/bash-completion-2.5.tar.xz b/examples/bash-completion/bash-completion-2.5.tar.xz new file mode 100644 index 000000000..f5b90790c Binary files /dev/null and b/examples/bash-completion/bash-completion-2.5.tar.xz differ diff --git a/examples/functions/arrayops.bash b/examples/functions/arrayops.bash new file mode 100644 index 000000000..d34353ae2 --- /dev/null +++ b/examples/functions/arrayops.bash @@ -0,0 +1,146 @@ +# arrayops.bash --- hide some of the nasty syntax for manipulating bash arrays +# Author: Noah Friedman +# Created: 2016-07-08 +# Public domain + +# $Id: arrayops.bash,v 1.3 2016/07/28 15:38:55 friedman Exp $ + +# Commentary: + +# These functions try to tame the syntactic nightmare that is bash array +# syntax, which makes perl's almost look reasonable. +# +# For example the apush function below lets you write: +# +# apush arrayvar newval +# +# instead of +# +# ${arrayvar[${#arrayvar[@]}]}=newval +# +# Because seriously, you've got to be kidding me. + +# These functions avoid the use of local variables as much as possible +# (especially wherever modification occurs) because those variable names +# might shadow the array name passed in. Dynamic scope! + +# Code: + +#:docstring apush: +# Usage: apush arrayname val1 {val2 {...}} +# +# Appends VAL1 and any remaining arguments to the end of the array +# ARRAYNAME as new elements. +#:end docstring: +apush() +{ + eval "$1=(\"\${$1[@]}\" \"\${@:2}\")" +} + +#:docstring apop: +# Usage: apop arrayname {n} +# +# Removes the last element from ARRAYNAME. +# Optional argument N means remove the last N elements. +#:end docstring: +apop() +{ + eval "$1=(\"\${$1[@]:0:\${#$1[@]}-${2-1}}\")" +} + +#:docstring aunshift: +# Usage: aunshift arrayname val1 {val2 {...}} +# +# Prepends VAL1 and any remaining arguments to the beginning of the array +# ARRAYNAME as new elements. The new elements will appear in the same order +# as given to this function, rather than inserting them one at a time. +# +# For example: +# +# foo=(a b c) +# aunshift foo 1 2 3 +# => foo is now (1 2 3 a b c) +# but +# +# foo=(a b c) +# aunshift foo 1 +# aunshift foo 2 +# aunshift foo 3 +# => foo is now (3 2 1 a b c) +# +#:end docstring: +aunshift() +{ + eval "$1=(\"\${@:2}\" \"\${$1[@]}\")" +} + +#:docstring ashift: +# Usage: ashift arrayname {n} +# +# Removes the first element from ARRAYNAME. +# Optional argument N means remove the first N elements. +#:end docstring: +ashift() +{ + eval "$1=(\"\${$1[@]: -\${#$1[@]}+${2-1}}\")" +} + +#:docstring aset: +# Usage: aset arrayname idx newval +# +# Assigns ARRAYNAME[IDX]=NEWVAL +#:end docstring: +aset() +{ + eval "$1[\$2]=${@:3}" +} + +#:docstring aref: +# Usage: aref arrayname idx {idx2 {...}} +# +# Echoes the value of ARRAYNAME at index IDX to stdout. +# If more than one IDX is specified, each one is echoed. +# +# Unfortunately bash functions cannot return arbitrary values in the usual way. +#:end docstring: +aref() +{ + eval local "v=(\"\${$1[@]}\")" + local x + for x in ${@:2} ; do echo "${v[$x]}"; done +} + +#:docstring aref: +# Usage: alen arrayname +# +# Echoes the length of the number of elements in ARRAYNAME. +# +# It also returns number as a numeric value, but return values are limited +# by a maximum of 255 so don't rely on this unless you know your arrays are +# relatively small. +#:end docstring: +alen() +{ + eval echo "\${#$1[@]}" + eval return "\${#$1[@]}" +} + +#:docstring anreverse: +# Usage: anreverse arrayname +# +# Reverse the order of the elements in ARRAYNAME. +# The array variable is altered by this operation. +#:end docstring: +anreverse() +{ + eval set $1 "\"\${$1[@]}\"" + eval unset $1 + while [ $# -gt 1 ]; do + eval "$1=(\"$2\" \"\${$1[@]}\")" + set $1 "${@:3}" + done +} + +#provide arrayops + +# arrayops.bash ends here diff --git a/examples/functions/autoload b/examples/functions/autoload index a563a7791..cb3a673ec 100644 --- a/examples/functions/autoload +++ b/examples/functions/autoload @@ -22,7 +22,7 @@ # # Declare a function ($1) to be autoloaded from a file ($2) when it is first # called. This defines a `temporary' function that will `.' the file -# containg the real function definition, then execute that new definition with +# containing the real function definition, then execute that new definition with # the arguments given to this `fake' function. The autoload function defined # by the file and the file itself *must* be named identically. # diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4 new file mode 100644 index 000000000..a172e6120 --- /dev/null +++ b/examples/functions/autoload.v4 @@ -0,0 +1,556 @@ +## -*- sh -*- + +# The psuedo-ksh autoloader. + +# How to use: +# o One function per file. +# o File and function name match exactly. +# o File is located in a directory that is in FPATH. +# o This script (autoload) must be sourced in as early as possible. This +# implies that any code in this script should NOT rely on any library of local +# or self-defined functions having already been loaded. +# o autoload must be called for each function before the function can be used. If +# autoloads are in directories where there are nothing but autoloads, then +# 'autoload /path/to/files/*' suffices (but see options -a and -f). +# o The call must be made in the current environment, not a subshell. +# o The command line suffices as "current environment". If you have autoload +# calls in a script, that script must be dotted into the process. + +# The first cut of this was by Bill Trost, trost@reed.bitnet. +# The second cut came from Chet Ramey, chet@ins.CWRU.Edu +# The third cut came from Mark Kennedy, mtk@ny.ubs.com. 1998/08/25 +# The fourth cut came from Matthew Persico, matthew.persico@gmail.com 2017/August + +autoload_calc_shimsize () +{ + echo $((AUTOLOAD_SHIM_OVERHEAD + 3 * ${#1})) +} + +_autoload_split_fpath () +{ + (IFS=':'; set -- ${FPATH}; echo "$@") +} + +_aload() +{ + local opt OPTIND + local doexport=0 + local doreload=0 + local doverbose=0 + local doevalshim=0 + local loadthese + local optimize=0 + local loaded=0 + local exported=0 + local optimized=0 + local summary=0 + local dofpath=0 + while getopts xrvla:oyf opt; do + case $opt in + x) doexport=1;; + r) doreload=1;; + v) doverbose=1;; + l) doevalshim=1;; + a) loadthese=$(find $OPTARG -maxdepth 1 -type f -printf '%f ');; + o) optimize=1;; + y) summary=1;; + f) loadthese=$(find $(_autoload_split_fpath) -maxdepth 1 -type f -printf '%f ');; + *) echo "_aload: usage: _aload [-xrvlyf] [-a dir] [function ...]" >&2; return;; + esac + done + + shift $(($OPTIND-1)) + + [ -z "$loadthese" ] && loadthese="$@" + + local func + for func in $loadthese; do + local exists_fn + exists_fn=$(declare -F $func) + if [ -n "$exists_fn" ] && ((doreload==0)) && ((doevalshim==0)) + then + if ((doverbose)) + then + echo "autoload: function '$func' already exists" + fi + else + local andevaled='' + local andexported='' + local evalstat=0 + local doshim=1 + local funcfile + funcfile=$(_autoload_resolve $func) + if [[ $funcfile ]] ; then + ## The file was found for $func. Process it. + + if ((optimize)); then + ## For the first function loaded, we will not know + ## AUTOLOAD_SHIM_OVERHEAD. We can only calculate it after + ## we have loaded one function. + if [[ $AUTOLOAD_SHIM_OVERHEAD ]]; then + local size=$(wc -c $funcfile| sed 's/ .*//') + local shimsize=$(autoload_calc_shimsize $func) + if (( size <= shimsize)); then + doshim=0 + andevaled=', optimized' + ((optimized+=1)) + fi + fi + fi + + if ((doevalshim)); then + doshim=0 + andevaled=', evaled' + fi + + ## 'brand' as in branding a cow with a mark. We add a local + ## variable to each function we autoload so that we can tell + ## later on it is an autoloaded function without having to + ## maintain some bash array or hash that cannot be passed to + ## and used by subshells. + local brandtext + brandtext="eval \"\$(type $func | sed -e 1d -e 4ilocal\\ AUTOLOADED=\'$func\')\"" + if ((doshim)); then + ## Don't bother trying to save space by shoving all the + ## eval text below onto one unreadable line; new lines will + ## be added at your semicolons and any indentation below + ## seems to be ignored anyway if you export the function; + ## look at its BASH_FUNCTION representation. + eval $func '() + { + local IS_SHIM="$func" + local file=$(_autoload_resolve '$func') + if [[ $file ]] + then + . $file + '$brandtext' + '$func' "$@" + return $? + else + return 1; + fi + }' + else + . $funcfile + eval "$brandtext" + fi + evalstat=$? + if((evalstat==0)) + then + ((loaded+=1)) + ((doexport)) && export -f $func && andexported=', exported' && ((exported+=1)) + ((doverbose)) && echo "$func autoloaded${andexported}${andevaled}" + if [[ ! $AUTOLOAD_SHIM_OVERHEAD ]] && ((doshim)); then + ## ...we have just loaded the first function shim into + ## memory. Let's calc the AUTOLOAD_SHIM_OVERHEAD size + ## to use going forward. In theory, we could check + ## again here to see if we should optimize and source + ## in this function, now that we now the + ## AUTOLOAD_SHIM_OVERHEAD. In practice, it's not worth + ## duping that code or creating a function to do so for + ## one function. + AUTOLOAD_SHIM_OVERHEAD=$(type $func | grep -v -E "^$1 is a function" | sed "s/$func//g"| wc -c) + export AUTOLOAD_SHIM_OVERHEAD + fi + else + echo "$func failed to load" >&2 + fi + fi + fi + done + ((summary)) && echo "autoload: loaded:$loaded exported:$exported optimized:$optimized overhead:$AUTOLOAD_SHIM_OVERHEAD bytes" +} + +_autoload_dump() +{ + local opt OPTIND + local opt_p='' + local opt_s='' + while getopts ps opt + do + case $opt in + p ) opt_p=1;; + s ) opt_s=1;; + esac + done + + shift $(($OPTIND-1)) + + local exported='' + local executed='' + local func + for func in $(declare | grep -E 'local\\{0,1} AUTOLOADED' | sed -e "s/.*AUTOLOADED=//" -e 's/\\//g' -e 's/[");]//g' -e "s/'//g") + do + if [ -n "$opt_p" ]; then echo -n "autoload "; fi + if [ -n "$opt_s" ] + then + exported=$(declare -F | grep -E "${func}$" | sed 's/declare -f\(x\{0,1\}\).*/\1/') + [ "$exported" = 'x' ] && exported=' exported' || exported=' not exported' + executed=$(type $func | grep 'local IS_SHIM') + [ -z "$executed" ] && executed=' executed' || executed=' not executed' + fi + echo "${func}${exported}${executed}" + done +} + +_autoload_resolve() +{ + if [[ ! "$FPATH" ]]; then + echo "autoload: FPATH not set or null" >&2 + return + fi + + local p # for 'path'. The $() commands in the for loop split the FPATH + # string into its constituents so that each one may be processed. + + for p in $( _autoload_split_fpath ); do + p=${p:-.} + if [ -f $p/$1 ]; then echo $p/$1; return; fi + done + + echo "autoload: $1: function source file not found" >&2 +} + +_autoload_edit() +{ + [ -z "$EDITOR" ] && echo "Error: no EDITOR defined" && return 1 + local toedit + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + toedit="$toedit $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$toedit" ] && return 1 + + local timemarker=$(mktemp) + + $EDITOR $toedit + + local i + for i in $toedit + do + if [ $i -nt $timemarker ] + then + local f=$(basename $i) + echo Reloading $f + autoload -r $f + fi + done +} + +_autoload_page() +{ + [ -z "$PAGER" ] && echo "Error: no PAGER defined" && return 1 + local topage + local func + for func in "$@" + do + local file=$(_autoload_resolve $func) + if [[ $file ]] + then + topage="$topage $file" + else + echo "$funcname not found in FPATH funcfile. Skipping." + fi + done + + [ -z "$topage" ] && return 1 + + $PAGER $topage +} + +_autoload_remove() +{ + unset -f "$@" +} + +_autoload_help() +{ + cat <&2; return;; + esac + done + + shift $(($OPTIND-1)) + if [ -n "$dumpopt" ] + then + _autoload_dump $dumpopt + else + _aload $passthru "$@" + fi +} + +autoreload () +{ + autoload -r "$@" +} + +## When we source in autoload, we export (but NOT autoload) the autoload +## functions so that they are available in subshells and you don't have to +## source in the autoload file in subshells. +export -f _aload \ + _autoload_dump \ + _autoload_edit \ + _autoload_help \ + _autoload_page \ + _autoload_resolve \ + _autoload_split_fpath \ + autoload \ + autoload_calc_shimsize \ + autoreload diff --git a/examples/functions/autoload.v4.t b/examples/functions/autoload.v4.t new file mode 100644 index 000000000..6d35d1411 --- /dev/null +++ b/examples/functions/autoload.v4.t @@ -0,0 +1,184 @@ +#!/bin/bash + +workdir=$(mktemp -d) + +cp autoload $workdir + +cd $workdir +pwd + +. ./autoload + +funclist='ALTEST_func1 ALTEST_funcexport ALTEST_funcu' +for funcname in $funclist; do + cat < $funcname +$funcname () +{ +echo this is $funcname + +} +EOFFUNC + +done + +export FPATH=$workdir + +autoload ALTEST_func1 ALTEST_funcu +autoload -x ALTEST_funcexport + +ok=0 +failed=0 + +for funcname in $funclist; do + + testname="$funcname loaded" + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname is a shim" + if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + + testname="$funcname shim executed" + $funcname > /dev/null + got=$(type $funcname 2>&1) + if [[ $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) + else + echo "ok - $testname" + ((ok+=1)) + fi + fi + fi +done + +funcname=ALTEST_func1 +testname="$funcname shim reloaded" +autoload -r $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "IS_SHIM" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +funcname=ALTEST_funcu +testname="$funcname shim unloaded" +autoload -u $funcname +got=$(type $funcname 2>&1) +if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -p" +got=$(autoload -p | grep ALTEST) +if [[ ! $got =~ "autoload ALTEST_func1" ]] || \ + [[ ! $got =~ "autoload ALTEST_funcexport" ]] ; then +echo "## Failed $testname" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -s" +echo "Executing $testname, could take a long time..." +got=$(autoload -s | grep ALTEST) +if [[ ! $got =~ "ALTEST_func1 not exported not executed" ]] || \ + [[ ! $got =~ "ALTEST_funcexport exported executed" ]] ; then + echo "## Failed $testname" + echo "## got: $got" + ((failed+=1)) +else + echo "ok - $testname" + ((ok+=1)) +fi + +testname="autoload -r -a $FPATH" +autoload -r -a $FPATH +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -u $funclist" +autoload -u $funclist +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ ! $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +testname="autoload -r -f" +autoload -r -f +localfailed=0 +localok=0 +for funcname in $funclist; do + got=$(type $funcname 2>&1) + if [[ $got =~ "$funcname: not found" ]]; then + echo "## Failed $testname - $funcname" + ((localfailed+=1)) + else + ((localok+=1)) + if [[ ! $got =~ "IS_SHIM" ]]; then + ((localfailed+=1)) + else + ((localok+=1)) + fi + fi +done +if ((localfailed==0)); then + echo "ok - $testname" + ((ok+=1)) +else + ((failed+=1)) +fi + +echo $ok passed, $failed failed +exit $failed diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in index ec305cdaf..0facc0ba9 100644 --- a/examples/loadables/Makefile.in +++ b/examples/loadables/Makefile.in @@ -103,7 +103,7 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \ ALLPROG = print truefalse sleep finfo logname basename dirname \ tty pathchk tee head mkdir rmdir printenv id whoami \ uname sync push ln unlink realpath strftime mypid setpgid -OTHERPROG = necho hello cat pushd +OTHERPROG = necho hello cat pushd stat rm fdflags all: $(SHOBJ_STATUS) @@ -142,6 +142,12 @@ finfo: finfo.o cat: cat.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cat.o $(SHOBJ_LIBS) +rm: rm.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rm.o $(SHOBJ_LIBS) + +fdflags: fdflags.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ fdflags.o $(SHOBJ_LIBS) + logname: logname.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ logname.o $(SHOBJ_LIBS) @@ -202,10 +208,12 @@ strftime: strftime.o mypid: mypid.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS) - setpgid: setpgid.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ setpgid.o $(SHOBJ_LIBS) +stat: stat.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS) + # pushd is a special case. We use the same source that the builtin version # uses, with special compilation options. # @@ -236,6 +244,7 @@ installdirs: install-dev: installdirs @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc + @$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers) install-supported: all installdirs install-dev @@ -246,7 +255,7 @@ install-supported: all installdirs install-dev done uninstall-dev: - -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc + -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers) uninstall-supported: uninstall-dev @@ -283,3 +292,4 @@ mkdir.o: mkdir.c realpath.o: realpath.c strftime.o: strftime.c setpgid.o: setpgid.c +stat.o: stat.c diff --git a/examples/loadables/README b/examples/loadables/README index 2eae9cc66..91febd48e 100644 --- a/examples/loadables/README +++ b/examples/loadables/README @@ -32,28 +32,37 @@ the canonical example. There is no real `builtin writers' programming guide'. The file template.c provides a template to use for creating new loadable builtins. +The file "Makefile.inc" is created using the same values that configure +writes into Makefile.in, and is installed in the same directory as the +rest of the example builtins. It's intended to be a start at something +that can be modified or included to help you build your own loadables +without having to search for the right CFLAGS and LDFLAGS. + basename.c Return non-directory portion of pathname. cat.c cat(1) replacement with no options - the way cat was intended. dirname.c Return directory portion of pathname. +fdflags.c Change the flag associated with one of bash's open file desriptors. finfo.c Print file info. head.c Copy first part of files. hello.c Obligatory "Hello World" / sample loadable. id.c POSIX.2 user identity. ln.c Make links. -loadables.h Start at a file loadable builtins can include for shell definitions +loadables.h File loadable builtins can include for shell definitions. logname.c Print login name of current user. Makefile.in Simple makefile for the sample loadable builtins. mkdir.c Make directories. -mypid.c Add $MYPID variable, demonstrate use of unload hook function +mypid.c Add $MYPID variable, demonstrate use of unload hook functio.n necho.c echo without options or argument interpretation. pathchk.c Check pathnames for validity and portability. print.c Loadable ksh-93 style print builtin. printenv.c Minimal builtin clone of BSD printenv(1). push.c Anyone remember TOPS-20? -README README realpath.c Canonicalize pathnames, resolving symlinks. +rm.c Remove files and directories. rmdir.c Remove directory. +setpgid.c Set a process's pgrp; example of how to wrap a system call. sleep.c sleep for fractions of a second. +stat.c populate an associative array with information about a file strftime.c Loadable builtin interface to strftime(3). sync.c Sync the disks by forcing pending filesystem writes to complete. tee.c Duplicate standard input. diff --git a/examples/loadables/cat.c b/examples/loadables/cat.c index 1ce2e2dc4..be99c4cd9 100644 --- a/examples/loadables/cat.c +++ b/examples/loadables/cat.c @@ -56,6 +56,7 @@ int fd; return 0; } +int cat_main (argc, argv) int argc; char **argv; @@ -88,6 +89,7 @@ char **argv; return (r); } +int cat_builtin(list) WORD_LIST *list; { diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c new file mode 100644 index 000000000..f3094666b --- /dev/null +++ b/examples/loadables/fdflags.c @@ -0,0 +1,336 @@ +/* Loadable builtin to get and set file descriptor flags. */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2017 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include +#include +#include "bashansi.h" +#include + +#include "loadables.h" + +static const struct +{ + const char *name; + int value; +} file_flags[] = +{ +#ifdef O_APPEND + { "append", O_APPEND }, +#endif +#ifdef O_ASYNC + { "async", O_ASYNC }, +#endif +#ifdef O_SYNC + { "sync", O_SYNC }, +#endif +#ifdef O_NONBLOCK + { "nonblock", O_NONBLOCK }, +#endif +#ifdef O_FSYNC + { "fsync", O_FSYNC }, +#endif +#ifdef O_DSYNC + { "dsync", O_DSYNC }, +#endif +#ifdef O_RSYNC + { "rsync", O_RSYNC }, +#endif +#ifdef O_ALT_IO + { "altio", O_ALT_IO }, +#endif +#ifdef O_DIRECT + { "direct", O_DIRECT }, +#endif +#ifdef O_NOATIME + { "noatime", O_NOATIME }, +#endif +#ifdef O_NOSIGPIPE + { "nosigpipe", O_NOSIGPIPE }, +#endif +#ifdef O_CLOEXEC + { "cloexec", O_CLOEXEC }, +#endif +}; + +#define N_FLAGS (sizeof (file_flags) / sizeof (file_flags[0])) + +#ifndef errno +extern int errno; +#endif + +/* FIX THIS */ +static int +getallflags () +{ + int i, allflags; + + for (i = allflags = 0; i < N_FLAGS; i++) + allflags |= file_flags[i].value; + return allflags; +} + +static int +getflags(int fd, int p) +{ + int c, f; + int allflags; + + if ((c = fcntl(fd, F_GETFD)) == -1) + { + if (p) + builtin_error("can't get status for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if ((f = fcntl(fd, F_GETFL)) == -1) + { + if (p) + builtin_error("Can't get flags for fd %d: %s", fd, strerror(errno)); + return -1; + } + + if (c) + f |= O_CLOEXEC; + + return f & getallflags(); +} + +static void +printone(int fd, int p, int verbose) +{ + int f; + size_t i; + + if ((f = getflags(fd, p)) == -1) + return; + + printf ("%d:", fd); + + for (i = 0; i < N_FLAGS; i++) + { + if (f & file_flags[i].value) + { + printf ("%s%s", verbose ? "+" : "", file_flags[i].name); + f &= ~file_flags[i].value; + } + else if (verbose) + printf ( "-%s", file_flags[i].name); + else + continue; + + if (f || (verbose && i != N_FLAGS - 1)) + putchar (','); + } + printf ("\n"); +} + +static int +parseflags(char *s, int *p, int *n) +{ + int f, *v; + size_t i; + + f = 0; + *p = *n = 0; + + for (s = strtok(s, ","); s; s = strtok(NULL, ",")) + { + switch (*s) + { + case '+': + v = p; + s++; + break; + case '-': + v = n; + s++; + break; + default: + v = &f; + break; + } + + for (i = 0; i < N_FLAGS; i++) + if (strcmp(s, file_flags[i].name) == 0) + { + *v |= file_flags[i].value; + break; + } + if (i == N_FLAGS) + builtin_error("invalid flag `%s'", s); + } + + return f; +} + +static void +setone(int fd, char *v, int verbose) +{ + int f, n, pos, neg, cloexec; + + f = getflags(fd, 1); + if (f == -1) + return; + + parseflags(v, &pos, &neg); + + cloexec = -1; + if ((pos & O_CLOEXEC) && (f & O_CLOEXEC) == 0) + cloexec = FD_CLOEXEC; + if ((neg & O_CLOEXEC) && (f & O_CLOEXEC)) + cloexec = 0; + if (cloexec != -1 && fcntl(fd, F_SETFD, cloexec) == -1) + builtin_error("can't set status for fd %d: %s", fd, strerror(errno)); + + pos &= ~O_CLOEXEC; + neg &= ~O_CLOEXEC; + f &= ~O_CLOEXEC; + + n = f; + n |= pos; + n &= ~neg; + + if (n != f && fcntl(fd, F_SETFL, n) == -1) + builtin_error("can't set flags for fd %d: %s", fd, strerror(errno)); +} + +static int +getmaxfd () +{ + int maxfd, ignore; + +#ifdef F_MAXFD + maxfd = fcntl (0, F_MAXFD); + if (maxfd > 0) + return maxfd; +#endif + + maxfd = getdtablesize (); + if (maxfd <= 0) + maxfd = HIGH_FD_MAX; + for (maxfd--; maxfd > 0; maxfd--) + if (fcntl (maxfd, F_GETFD, &ignore) != -1) + break; + + return maxfd; +} + +int +fdflags_builtin (WORD_LIST *list) +{ + int opt, maxfd, i, num, verbose, setflag; + char *setspec; + WORD_LIST *l; + intmax_t inum; + + setflag = verbose = 0; + reset_internal_getopt (); + while ((opt = internal_getopt (list, "s:v")) != -1) + { + switch (opt) + { + case 's': + setflag = 1; + setspec = list_optarg; + break; + case 'v': + verbose = 1; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + + } + list = loptend; + + /* Maybe we could provide some default here, but we don't yet. */ + if (list == 0 && setflag) + return (EXECUTION_SUCCESS); + + if (list == 0) + { + maxfd = getmaxfd (); + if (maxfd < 0) + { + builtin_error ("can't get max fd: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + for (i = 0; i < maxfd; i++) + printone (i, 0, verbose); + return (EXECUTION_SUCCESS); + } + + opt = EXECUTION_SUCCESS; + for (l = list; l; l = l->next) + { + if (legal_number (l->word->word, &inum) == 0 || inum < 0) + { + builtin_error ("%s: invalid file descriptor", l->word->word); + opt = EXECUTION_FAILURE; + continue; + } + num = inum; /* truncate to int */ + if (setflag) + setone (num, setspec, verbose); + else + printone (num, 1, verbose); + } + + return (opt); +} + +char *fdflags_doc[] = +{ + "Display and modify file descriptor flags.", + "", + "Display or, if the -s option is supplied, set flags for each file", + "descriptor supplied as an argument. If the -v option is supplied,", + "the display is verbose, including each settable option name in the", + "form of a string such as that accepted by the -s option.", + "", + "The -s option accepts a string with a list of flag names, each preceded", + "by a `+' (set) or `-' (unset). Those changes are applied to each file", + "descriptor supplied as an argument.", + "", + "If no file descriptor arguments are supplied, the displayed information", + "consists of the status of flags for each of the shell's open files.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin fdflags_struct = { + "fdflags", /* builtin name */ + fdflags_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + fdflags_doc, /* array of long documentation strings. */ + "fdflags [-v] [-s flags_string] [fd ...]", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/head.c b/examples/loadables/head.c index 748bb83ed..1edca6c55 100644 --- a/examples/loadables/head.c +++ b/examples/loadables/head.c @@ -117,6 +117,7 @@ head_builtin (list) return (EX_USAGE); } break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/id.c b/examples/loadables/id.c index 877334941..f857b5475 100644 --- a/examples/loadables/id.c +++ b/examples/loadables/id.c @@ -91,6 +91,7 @@ id_builtin (list) case 'n': id_flags |= ID_USENAME; break; case 'r': id_flags |= ID_USEREAL; break; case 'u': id_flags |= ID_USERONLY; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/ln.c b/examples/loadables/ln.c index a853bc995..93764a35e 100644 --- a/examples/loadables/ln.c +++ b/examples/loadables/ln.c @@ -76,6 +76,7 @@ ln_builtin (list) case 'n': flags |= LN_NOFOLLOW; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c index 39ae07f9a..767ad9eb8 100644 --- a/examples/loadables/mkdir.c +++ b/examples/loadables/mkdir.c @@ -68,6 +68,7 @@ mkdir_builtin (list) case 'm': mode = list_optarg; break; + CASE_HELPOPT; default: builtin_usage(); return (EX_USAGE); diff --git a/examples/loadables/necho.c b/examples/loadables/necho.c index ee65f184c..dd2092b07 100644 --- a/examples/loadables/necho.c +++ b/examples/loadables/necho.c @@ -38,7 +38,7 @@ WORD_LIST *list; char *necho_doc[] = { "Display arguments.", "", - "Print the arguments to the standard ouput separated", + "Print the arguments to the standard output separated", "by space characters and terminated with a newline.", (char *)NULL }; diff --git a/examples/loadables/pathchk.c b/examples/loadables/pathchk.c index 85e8a04c7..c1151db42 100644 --- a/examples/loadables/pathchk.c +++ b/examples/loadables/pathchk.c @@ -112,6 +112,7 @@ pathchk_builtin (list) case 'p': pflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -135,7 +136,7 @@ char *pathchk_doc[] = { "Check pathnames for validity.", "", "Check each pathname argument for validity (i.e., it may be used to", - "create or access a file without casuing syntax errors) and portability", + "create or access a file without causing syntax errors) and portability", "(i.e., no filename truncation will result). If the `-p' option is", "supplied, more extensive portability checks are performed.", (char *)NULL diff --git a/examples/loadables/print.c b/examples/loadables/print.c index e17597b3b..0120dbf41 100644 --- a/examples/loadables/print.c +++ b/examples/loadables/print.c @@ -122,6 +122,7 @@ print_builtin (list) case 'f': pfmt = list_optarg; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/printenv.c b/examples/loadables/printenv.c index 8d3a05df4..8c7f72019 100644 --- a/examples/loadables/printenv.c +++ b/examples/loadables/printenv.c @@ -46,6 +46,7 @@ printenv_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/push.c b/examples/loadables/push.c index b07607338..9bcd5c324 100644 --- a/examples/loadables/push.c +++ b/examples/loadables/push.c @@ -51,6 +51,7 @@ push_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c index b19b87fb6..9892ddb8b 100644 --- a/examples/loadables/realpath.c +++ b/examples/loadables/realpath.c @@ -86,15 +86,19 @@ WORD_LIST *list; case 'v': vflag = 1; break; + CASE_HELPOPT; default: builtin_usage(); + return (EX_USAGE); } } list = loptend; - if (list == 0) + if (list == 0) { builtin_usage(); + return (EX_USAGE); + } for (es = EXECUTION_SUCCESS; list; list = list->next) { p = list->word->word; diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c new file mode 100644 index 000000000..adfbffdc3 --- /dev/null +++ b/examples/loadables/rm.c @@ -0,0 +1,177 @@ +/* rm - remove files and directories with -r */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include "config.h" + +#include +#include +#include +#include "builtins.h" +#include "shell.h" +#include "common.h" +#include "bashgetopt.h" + +#if !defined (errno) +extern int errno; +#endif + +static int rm_file(const char *fname); + +static int force, recursive; + +static int +_remove_directory(const char *dirname) +{ + DIR *dir; + struct dirent *dp; + size_t dirlen; + int err; + + dirlen = strlen (dirname); + err = 0; + + if ((dir = opendir(dirname))) + { + while ((dp = readdir(dir))) + { +#ifdef __GNUC__ + char fname[dirlen + 1 + strlen (dp->d_name) + 1]; +#else + char *fname; + int fnsize; +#endif + + if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0))) + continue; + +#ifdef __GNUC__ + snprintf(fname, sizeof (fname), "%s/%s", dirname, dp->d_name); +#else + fnsize = dirlen + 1 + strlen (dp->d_name) + 1; + fname = xmalloc (fnsize); + snprintf(fname, fnsize, "%s/%s", dirname, dp->d_name); +#endif + + if (rm_file (fname) && force == 0) + err = 1; +#ifndef __GNUC__ + free (fname); +#endif + } + + closedir(dir); + + if (err == 0 && rmdir (dirname) && force == 0) + err = 1; + } + else if (force == 0) + err = 1; + + if (err) + builtin_error ("%s: %s", dirname, strerror (errno)); + + return err; +} + +static int +rm_file(const char *fname) +{ + if (unlink (fname) == 0) + return 0; + + /* If FNAME is a directory glibc returns EISDIR but correct POSIX value + would be EPERM. If we get that error and FNAME is a directory and -r + was supplied, recursively remove the directory and its contents */ + if ((errno == EISDIR || errno == EPERM) && recursive && file_isdir (fname)) + return _remove_directory(fname); + else if (force) + return 0; + + builtin_error ("%s: %s", fname, strerror (errno)); + return 1; +} + +int +rm_builtin (list) + WORD_LIST *list; +{ + const char *name; + WORD_LIST *l; + int rval, opt; + + recursive = force = 0; + rval = EXECUTION_SUCCESS; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "Rrfi")) != -1) + { + switch (opt) + { + case 'R': + case 'r': + recursive = 1; + break; + case 'f': + force = 1; + break; + case 'i': + return (EX_DISKFALLBACK); + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + list = loptend; + + if (list == 0) + { + builtin_usage (); + return (EXECUTION_FAILURE); + } + + for (l = list; l; l = l->next) + { + if (rm_file(l->word->word) && force == 0) + rval = EXECUTION_FAILURE; + } + + return rval; +} + +char *rm_doc[] = { + "Remove files.", + "", + "rm removes the files specified as arguments.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. */ +struct builtin rm_struct = { + "rm", /* builtin name */ + rm_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + rm_doc, /* array of long documentation strings. */ + "rm [-rf] file ...", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/stat.c b/examples/loadables/stat.c new file mode 100644 index 000000000..52b9580fb --- /dev/null +++ b/examples/loadables/stat.c @@ -0,0 +1,430 @@ +/* stat - load up an associative array with stat information about a file */ + +/* See Makefile for compilation details. */ + +/* + Copyright (C) 2016 Free Software Foundation, Inc. + + This file is part of GNU Bash. + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#include + +#include +#include "posixstat.h" +#include +#include +#include +#include +#include "posixtime.h" + +#include "bashansi.h" +#include "shell.h" +#include "builtins.h" +#include "common.h" +#include "bashgetopt.h" + +#ifndef errno +extern int errno; +#endif + +#define ST_NAME 0 +#define ST_DEV 1 +#define ST_INO 2 +#define ST_MODE 3 +#define ST_NLINK 4 +#define ST_UID 5 +#define ST_GID 6 +#define ST_RDEV 7 +#define ST_SIZE 8 +#define ST_ATIME 9 +#define ST_MTIME 10 +#define ST_CTIME 11 +#define ST_BLKSIZE 12 +#define ST_BLOCKS 13 +#define ST_CHASELINK 14 +#define ST_PERMS 15 + +#define ST_END 16 + +static char *arraysubs[] = + { + "name", "device", "inode", "type", "nlink", "uid", "gid", "rdev", + "size", "atime", "mtime", "ctime", "blksize", "blocks", "link", "perms", + 0 + }; + +static int +getstat (fname, flags, sp) + const char *fname; + int flags; + struct stat *sp; +{ + intmax_t lfd; + int fd, r; + + if (strncmp (fname, "/dev/fd/", 8) == 0) + { + if ((legal_number(fname + 8, &lfd) == 0) || (int)lfd != lfd) + { + errno = EINVAL; + return -1; + } + fd = lfd; + r = fstat(fd, sp); + } +#ifdef HAVE_LSTAT + else if (flags & 1) + r = lstat(fname, sp); +#endif + else + r = stat(fname, sp); + + return r; +} + +static char * +statlink (fname, sp) + char *fname; + struct stat *sp; +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX]; + int n; + + if (fname && S_ISLNK (sp->st_mode) && (n = readlink (fname, linkbuf, PATH_MAX)) > 0) + { + linkbuf[n] = '\0'; + return (savestring (linkbuf)); + } + else +#endif + return (savestring (fname)); +} + +static char * +octalperms (m) + int m; +{ + int operms; + char *ret; + + operms = 0; + + if (m & S_IRUSR) + operms |= 0400; + if (m & S_IWUSR) + operms |= 0200; + if (m & S_IXUSR) + operms |= 0100; + + if (m & S_IRGRP) + operms |= 0040; + if (m & S_IWGRP) + operms |= 0020; + if (m & S_IXGRP) + operms |= 0010; + + if (m & S_IROTH) + operms |= 0004; + if (m & S_IWOTH) + operms |= 0002; + if (m & S_IXOTH) + operms |= 0001; + + if (m & S_ISUID) + operms |= 04000; + if (m & S_ISGID) + operms |= 02000; + if (m & S_ISVTX) + operms |= 01000; + + ret = (char *)xmalloc (16); + snprintf (ret, 16, "%04o", operms); + return ret; +} + +static char * +statperms (m) + int m; +{ + char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ + int i; + char *ret; + + i = 0; + if (m & S_IRUSR) + ubits[i++] = 'r'; + if (m & S_IWUSR) + ubits[i++] = 'w'; + if (m & S_IXUSR) + ubits[i++] = 'x'; + ubits[i] = '\0'; + + i = 0; + if (m & S_IRGRP) + gbits[i++] = 'r'; + if (m & S_IWGRP) + gbits[i++] = 'w'; + if (m & S_IXGRP) + gbits[i++] = 'x'; + gbits[i] = '\0'; + + i = 0; + if (m & S_IROTH) + obits[i++] = 'r'; + if (m & S_IWOTH) + obits[i++] = 'w'; + if (m & S_IXOTH) + obits[i++] = 'x'; + obits[i] = '\0'; + + if (m & S_ISUID) + ubits[2] = (m & S_IXUSR) ? 's' : 'S'; + if (m & S_ISGID) + gbits[2] = (m & S_IXGRP) ? 's' : 'S'; + if (m & S_ISVTX) + obits[2] = (m & S_IXOTH) ? 't' : 'T'; + + ret = (char *)xmalloc (32); + snprintf (ret, 32, "u=%s,g=%s,o=%s", ubits, gbits, obits); + return ret; +} + +static char * +statmode(mode) + int mode; +{ + char *modestr, *m; + + modestr = m = (char *)xmalloc (8); + if (S_ISBLK (mode)) + *m++ = 'b'; + if (S_ISCHR (mode)) + *m++ = 'c'; + if (S_ISDIR (mode)) + *m++ = 'd'; + if (S_ISREG(mode)) + *m++ = '-'; + if (S_ISFIFO(mode)) + *m++ = 'p'; + if (S_ISLNK(mode)) + *m++ = 'l'; + if (S_ISSOCK(mode)) + *m++ = 's'; + +#ifdef S_ISDOOR + if (S_ISDOOR (mode)) + *m++ = 'D'; +#endif +#ifdef S_ISWHT + if (S_ISWHT(mode)) + *m++ = 'W'; +#endif +#ifdef S_ISNWK + if (S_ISNWK(mode)) + *m++ = 'n'; +#endif +#ifdef S_ISMPC + if (S_ISMPC (mode)) + *m++ = 'm'; +#endif + + *m = '\0'; + return (modestr); +} + +static char * +stattime (t) + time_t t; +{ + char *tbuf, *ret; + size_t tlen; + + tbuf = ctime (&t); + tlen = strlen (tbuf); + ret = savestring (tbuf); + ret[tlen-1] = '\0'; + return ret; +} + +static char * +statval (which, fname, flags, sp) + int which; + char *fname; + int flags; + struct stat *sp; +{ + int temp; + + switch (which) + { + case ST_NAME: + return savestring (fname); + case ST_DEV: + return itos (sp->st_dev); + case ST_INO: + return itos (sp->st_ino); + case ST_MODE: + return (statmode (sp->st_mode)); + case ST_NLINK: + return itos (sp->st_nlink); + case ST_UID: + return itos (sp->st_uid); + case ST_GID: + return itos (sp->st_gid); + case ST_RDEV: + return itos (sp->st_rdev); + case ST_SIZE: + return itos (sp->st_size); + case ST_ATIME: + return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime)); + case ST_MTIME: + return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime)); + case ST_CTIME: + return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime)); + case ST_BLKSIZE: + return itos (sp->st_blksize); + case ST_BLOCKS: + return itos (sp->st_blocks); + case ST_CHASELINK: + return (statlink (fname, sp)); + case ST_PERMS: + temp = sp->st_mode & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID); + return (flags & 2) ? statperms (temp) : octalperms (temp); + default: + return savestring ("42"); + } +} + +static int +loadstat (vname, var, fname, flags, sp) + char *vname; + SHELL_VAR *var; + char *fname; + int flags; + struct stat *sp; +{ + int i; + char *key, *value; + SHELL_VAR *v; + + for (i = 0; arraysubs[i]; i++) + { + key = savestring (arraysubs[i]); + value = statval (i, fname, flags, sp); + v = bind_assoc_variable (var, vname, key, value, ASS_FORCE); + } + return 0; +} + +int +stat_builtin (list) + WORD_LIST *list; +{ + int opt, flags; + char *aname, *fname; + struct stat st; + SHELL_VAR *v; + + aname = "STAT"; + flags = 0; + + reset_internal_getopt (); + while ((opt = internal_getopt (list, "A:Ll")) != -1) + { + switch (opt) + { + case 'A': + aname = list_optarg; + break; + case 'L': + flags |= 1; /* operate on links rather than resolving them */ + break; + case 'l': + flags |= 2; + break; + CASE_HELPOPT; + default: + builtin_usage (); + return (EX_USAGE); + } + } + + list = loptend; + if (list == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + fname = list->word->word; + + if (getstat (fname, flags, &st) < 0) + { + builtin_error ("%s: cannot stat: %s", fname, strerror (errno)); + return (EXECUTION_FAILURE); + } + + unbind_variable (aname); + v = make_new_assoc_variable (aname); + if (v == 0) + { + builtin_error ("%s: cannot create variable", aname); + return (EXECUTION_FAILURE); + } + if (loadstat (aname, v, fname, flags, &st) < 0) + { + builtin_error ("%s: cannot assign file status information", aname); + unbind_variable (aname); + return (EXECUTION_FAILURE); + } + + return (EXECUTION_SUCCESS); +} + +/* An array of strings forming the `long' documentation for a builtin xxx, + which is printed by `help xxx'. It must end with a NULL. By convention, + the first line is a short description. */ +char *stat_doc[] = { + "Load an associative array with file status information.", + "", + "Take a filename and load the status information returned by a", + "stat(2) call on that file into the associative array specified", + "by the -A option. The default array name is STAT. If the -L", + "option is supplied, stat does not resolve symbolic links and", + "reports information about the link itself. The -l option results", + "in longer-form listings for some of the fields. The exit status is 0", + "unless the stat fails or assigning the array is unsuccessful.", + (char *)NULL +}; + +/* The standard structure describing a builtin command. bash keeps an array + of these structures. The flags must include BUILTIN_ENABLED so the + builtin can be used. */ +struct builtin stat_struct = { + "stat", /* builtin name */ + stat_builtin, /* function implementing the builtin */ + BUILTIN_ENABLED, /* initial flags for builtin */ + stat_doc, /* array of long documentation strings. */ + "stat [-lL] [-A aname] file", /* usage synopsis; becomes short_doc */ + 0 /* reserved for internal use */ +}; diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c index 9462cda04..819d83aef 100644 --- a/examples/loadables/tee.c +++ b/examples/loadables/tee.c @@ -84,6 +84,7 @@ tee_builtin (list) case 'i': nointr = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/template.c b/examples/loadables/template.c index 8cfd571d7..094b80ce9 100644 --- a/examples/loadables/template.c +++ b/examples/loadables/template.c @@ -31,6 +31,7 @@ template_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/tty.c b/examples/loadables/tty.c index 1adc5b599..febf518ba 100644 --- a/examples/loadables/tty.c +++ b/examples/loadables/tty.c @@ -46,6 +46,7 @@ tty_builtin (list) case 's': sflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/uname.c b/examples/loadables/uname.c index 339ec3dde..106a1c8db 100644 --- a/examples/loadables/uname.c +++ b/examples/loadables/uname.c @@ -95,6 +95,7 @@ uname_builtin (list) case 'v': uname_flags |= FLAG_VERSION; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/examples/loadables/whoami.c b/examples/loadables/whoami.c index 5aa73828d..3e7e36e4b 100644 --- a/examples/loadables/whoami.c +++ b/examples/loadables/whoami.c @@ -39,6 +39,7 @@ whoami_builtin (list) { switch (opt) { + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/execute_cmd.c b/execute_cmd.c index 76a807669..3759376e1 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1,6 +1,6 @@ /* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -66,6 +66,7 @@ extern int errno; #include "memalloc.h" #include "shell.h" #include /* use <...> so we pick it up from the build directory */ +#include "parser.h" #include "flags.h" #include "builtins.h" #include "hashlib.h" @@ -105,28 +106,13 @@ extern int errno; # include /* mbschr */ #endif -extern int dollar_dollar_pid; -extern int posixly_correct; -extern int expand_aliases; -extern int autocd; -extern int breaking, continuing, loop_level; -extern int parse_and_execute_level, running_trap, sourcelevel; -extern int command_string_index, line_number; -extern int dot_found_in_search; -extern int already_making_children; -extern int tempenv_assign_error; -extern char *the_printed_command, *shell_name; -extern pid_t last_command_subst_pid; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern char **subshell_argv, **subshell_envp; -extern int subshell_argc; +extern int command_string_index; +extern char *the_printed_command; extern time_t shell_start_time; #if 0 extern char *glob_argv_flags; #endif -extern int job_control; /* XXX */ - extern int close __P((int)); /* Static functions defined and used in this file. */ @@ -197,6 +183,7 @@ static char *getinterp __P((char *, int, int *)); static void initialize_subshell __P((void)); static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *)); #if defined (COPROCESS_SUPPORT) +static void coproc_setstatus __P((struct coproc *, int)); static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *)); #endif @@ -285,6 +272,8 @@ static int function_line_number; report the correct line number. Kind of a hack. */ static int showing_function_line; +static int connection_count; + /* $LINENO ($BASH_LINENO) for use by an ERR trap. Global so parse_and_execute can save and restore it. */ int line_number_for_err_trap; @@ -410,7 +399,7 @@ execute_command (command) #if defined (PROCESS_SUBSTITUTION) /* don't unlink fifos if we're in a shell function; wait until the function returns. */ - if (variable_context == 0) + if (variable_context == 0 && executing_list == 0) unlink_fifo_list (); #endif /* PROCESS_SUBSTITUTION */ @@ -461,6 +450,16 @@ cleanup_redirects (list) dispose_redirects (list); } +void +undo_partial_redirects () +{ + if (redirection_undo_list) + { + cleanup_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + #if 0 /* Function to unwind_protect the redirections for functions and builtins. */ static void @@ -481,6 +480,16 @@ dispose_exec_redirects () } } +void +dispose_partial_redirects () +{ + if (redirection_undo_list) + { + dispose_redirects (redirection_undo_list); + redirection_undo_list = (REDIRECT *)NULL; + } +} + #if defined (JOB_CONTROL) /* A function to restore the signal mask to its proper value when the shell is interrupted or errors occur while creating a pipeline. */ @@ -552,7 +561,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, int exec_result, user_subshell, invert, ignore_return, was_error_trap; REDIRECT *my_undo_list, *exec_undo_list; char *tcmd; - volatile int last_pid; volatile int save_line_number; #if defined (PROCESS_SUBSTITUTION) volatile int ofifo, nfifo, osize, saved_fifo; @@ -590,11 +598,21 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, #if defined (COPROCESS_SUPPORT) if (command->type == cm_coproc) - return (execute_coproc (command, pipe_in, pipe_out, fds_to_close)); + return (last_command_exit_value = execute_coproc (command, pipe_in, pipe_out, fds_to_close)); #endif user_subshell = command->type == cm_subshell || ((command->flags & CMD_WANT_SUBSHELL) != 0); +#if defined (TIME_BEFORE_SUBSHELL) + if ((command->flags & CMD_TIME_PIPELINE) && user_subshell && asynchronous == 0) + { + command->flags |= CMD_FORCE_SUBSHELL; + exec_result = time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close); + currently_executing_command = (COMMAND *)NULL; + return (exec_result); + } +#endif + if (command->type == cm_subshell || (command->flags & (CMD_WANT_SUBSHELL|CMD_FORCE_SUBSHELL)) || (shell_control_structure (command->type) && @@ -602,12 +620,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, { pid_t paren_pid; int s; + char *p; /* Fork a subshell, turn off the subshell bit, turn off job control and call execute_command () on the command again. */ - line_number_for_err_trap = line_number; /* XXX - save value? */ + line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */ tcmd = make_command_string (command); - paren_pid = make_child (savestring (tcmd), asynchronous); + paren_pid = make_child (p = savestring (tcmd), asynchronous); if (user_subshell && signal_is_trapped (ERROR_TRAP) && signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0) @@ -618,6 +637,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (paren_pid == 0) { +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif /* We want to run the exit trap for forced {} subshells, and we want to note this before execute_in_subshell modifies the COMMAND struct. Need to keep in mind that execute_in_subshell @@ -722,6 +744,10 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, stdin_redir = stdin_redirects (command->redirects); #if defined (PROCESS_SUBSTITUTION) +# if !defined (HAVE_DEV_FD) + reap_procsubs (); +# endif + if (variable_context != 0) { ofifo = num_fifos (); @@ -738,38 +764,45 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, redirection.) */ if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + undo_partial_redirects (); dispose_exec_redirects (); #if defined (PROCESS_SUBSTITUTION) if (saved_fifo) - { + { free ((void *)ofifo_list); - discard_unwind_frame ("internal_fifos"); - } + discard_unwind_frame ("internal_fifos"); + } #endif return (last_command_exit_value = EXECUTION_FAILURE); } +#if 0 if (redirection_undo_list) { /* XXX - why copy here? */ my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list); - dispose_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + dispose_partial_redirects (); } else my_undo_list = (REDIRECT *)NULL; +#else + my_undo_list = redirection_undo_list; + redirection_undo_list = (REDIRECT *)NULL; +#endif +#if 0 if (exec_redirection_undo_list) { /* XXX - why copy here? */ exec_undo_list = (REDIRECT *)copy_redirects (exec_redirection_undo_list); - dispose_redirects (exec_redirection_undo_list); - exec_redirection_undo_list = (REDIRECT *)NULL; + dispose_exec_redirects (); } else exec_undo_list = (REDIRECT *)NULL; +#else + exec_undo_list = exec_redirection_undo_list; + exec_redirection_undo_list = (REDIRECT *)NULL; +#endif if (my_undo_list || exec_undo_list) begin_unwind_frame ("loop_redirections"); @@ -795,7 +828,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, #if defined (RECYCLES_PIDS) last_made_pid = NO_PID; #endif - last_pid = last_made_pid; was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0; if (ignore_return && command->value.Simple) @@ -855,8 +887,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, } /* 2009/02/13 -- pipeline failure is processed elsewhere. This handles - only the failure of a simple command. */ - if (was_error_trap && ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE && exec_result != EXECUTION_SUCCESS) + only the failure of a simple command. We don't want to run the error + trap if the command run by the `command' builtin fails; we want to + defer that until the command builtin itself returns failure. */ + if (was_error_trap && ignore_return == 0 && invert == 0 && + pipe_in == NO_PIPE && pipe_out == NO_PIPE && + (command->value.Simple->flags & CMD_COMMAND_BUILTIN) == 0 && + exec_result != EXECUTION_SUCCESS) { last_command_exit_value = exec_result; line_number = line_number_for_err_trap; @@ -1047,10 +1084,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, } if (my_undo_list) - { - do_redirections (my_undo_list, RX_ACTIVE); - dispose_redirects (my_undo_list); - } + cleanup_redirects (my_undo_list); if (exec_undo_list) dispose_redirects (exec_undo_list); @@ -1090,6 +1124,8 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, # endif set_pipestatus_from_exit (exec_result); break; + default: + break; } #endif @@ -1116,19 +1152,6 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva static const int precs[] = { 0, 100, 10, 1 }; -#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV) -static int -decpoint () -{ - struct lconv *lv; - - lv = localeconv (); - return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; -} -#else -# define decpoint() '.' -#endif - /* Expand one `%'-prefixed escape sequence from a time format string. */ static int mkfmt (buf, prec, lng, sec, sec_fraction) @@ -1173,7 +1196,7 @@ mkfmt (buf, prec, lng, sec, sec_fraction) and 999. */ if (prec != 0) { - buf[ind++] = decpoint (); + buf[ind++] = locale_decpoint (); for (aind = 1; aind <= prec; aind++) { buf[ind++] = (sec_fraction / precs[aind]) + '0'; @@ -1357,8 +1380,10 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX); code = setjmp_nosigs (top_level); if (code == NOT_JUMPED) - rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); - command->flags = old_flags; + { + rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); + command->flags = old_flags; + } COPY_PROCENV (save_top_level, top_level); rs = us = ss = 0; @@ -1415,6 +1440,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) else time_format = BASH_TIMEFORMAT; } + if (time_format && *time_format) print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu); @@ -1435,9 +1461,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) int pipe_in, pipe_out; struct fd_bitmap *fds_to_close; { - int user_subshell, return_code, function_value, should_redir_stdin, invert; - int ois, user_coproc; - int result; + volatile int user_subshell, user_coproc, invert; + int return_code, function_value, should_redir_stdin, ois, result; volatile COMMAND *tcom; USE_VAR(user_subshell); @@ -1498,7 +1523,11 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) login_shell = interactive = 0; if (user_subshell) - subshell_environment = SUBSHELL_PAREN; /* XXX */ + { + subshell_environment = SUBSHELL_PAREN; /* XXX */ + if (asynchronous) + subshell_environment |= SUBSHELL_ASYNC; + } else { subshell_environment = 0; /* XXX */ @@ -1534,11 +1563,9 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) set_sigint_handler (); -#if defined (JOB_CONTROL) /* Delete all traces that there were any jobs running. This is only for subshells. */ without_job_control (); -#endif /* JOB_CONTROL */ if (fds_to_close) close_fd_bitmap (fds_to_close); @@ -1572,6 +1599,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (should_redir_stdin && stdin_redir == 0) async_redirect_stdin (); +#if 0 + /* bash-5.0 */ + 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) { @@ -1880,6 +1913,17 @@ cpl_searchbyname (name) return (struct cpelement *)NULL; } +static pid_t +cpl_firstactive () +{ + struct cpelement *cpe; + + for (cpe = coproc_list.head ; cpe; cpe = cpe->next) + if ((cpe->coproc->c_flags & COPROC_DEAD) == 0) + return cpe->coproc->c_pid; + return (pid_t)NO_PID; +} + #if 0 static void cpl_prune () @@ -2123,6 +2167,21 @@ coproc_fdrestore (cp) cp->c_wfd = cp->c_wsave; } +static void +coproc_setstatus (cp, status) + struct coproc *cp; + int status; +{ + cp->c_lock = 4; + cp->c_status = status; + cp->c_flags |= COPROC_DEAD; + cp->c_flags &= ~COPROC_RUNNING; + /* Don't dispose the coproc or unset the COPROC_XXX variables because + this is executed in a signal handler context. Wait until coproc_reap + takes care of it. */ + cp->c_lock = 0; +} + void coproc_pidchk (pid, status) pid_t pid; @@ -2133,24 +2192,26 @@ coproc_pidchk (pid, status) #if MULTIPLE_COPROCS struct cpelement *cpe; - cpe = cpl_delete (pid); + /* We're not disposing the coproc because this is executed in a signal + handler context */ + cpe = cpl_search (pid); cp = cpe ? cpe->coproc : 0; #else cp = getcoprocbypid (pid); #endif if (cp) - { - cp->c_lock = 4; - cp->c_status = status; - cp->c_flags |= COPROC_DEAD; - cp->c_flags &= ~COPROC_RUNNING; - /* Don't dispose the coproc or unset the COPROC_XXX variables because - this is executed in a signal handler context. Wait until coproc_reap - takes care of it. */ - cp->c_lock = 0; - } + coproc_setstatus (cp, status); } +pid_t +coproc_active () +{ +#if MULTIPLE_COPROCS + return (cpl_firstactive ()); +#else + return ((sh_coproc.c_flags & COPROC_DEAD) ? NO_PID : sh_coproc.c_pid); +#endif +} void coproc_setvars (cp) struct coproc *cp; @@ -2212,7 +2273,7 @@ coproc_setvars (cp) t = itos (cp->c_wfd); ind = 1; - bind_array_variable (cp->c_name, ind, t, 0); + v = bind_array_variable (cp->c_name, ind, t, 0); free (t); #else sprintf (namevar, "%s_READ", cp->c_name); @@ -2227,7 +2288,7 @@ coproc_setvars (cp) sprintf (namevar, "%s_PID", cp->c_name); t = itos (cp->c_pid); - bind_variable (namevar, t, 0); + v = bind_variable (namevar, t, 0); free (t); free (namevar); @@ -2270,17 +2331,33 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) int rpipe[2], wpipe[2], estat, invert; pid_t coproc_pid; Coproc *cp; - char *tcmd; + char *tcmd, *p, *name; sigset_t set, oset; /* XXX -- can be removed after changes to handle multiple coprocs */ #if !MULTIPLE_COPROCS - if (sh_coproc.c_pid != NO_PID) + if (sh_coproc.c_pid != NO_PID && (sh_coproc.c_rfd >= 0 || sh_coproc.c_wfd >= 0)) internal_warning (_("execute_coproc: coproc [%d:%s] still exists"), sh_coproc.c_pid, sh_coproc.c_name); coproc_init (&sh_coproc); #endif invert = (command->flags & CMD_INVERT_RETURN) != 0; + + /* XXX - expand coproc name without splitting -- bash-5.0 */ + /* could make this dependent on a shopt option */ + name = expand_string_unsplit_to_string (command->value.Coproc->name, 0); + /* Optional check -- bash-5.0. */ + if (legal_identifier (name) == 0) + { + internal_error (_("`%s': not a valid identifier"), name); + return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE); + } + else + { + free (command->value.Coproc->name); + command->value.Coproc->name = name; + } + command_string_index = 0; tcmd = make_command_string (command); @@ -2289,13 +2366,17 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) BLOCK_SIGNAL (SIGCHLD, set, oset); - coproc_pid = make_child (savestring (tcmd), 1); + coproc_pid = make_child (p = savestring (tcmd), 1); if (coproc_pid == 0) { close (rpipe[0]); close (wpipe[1]); +#if defined (JOB_CONTROL) + FREE (p); +#endif + UNBLOCK_SIGNAL (oset); estat = execute_in_subshell (command, 1, wpipe[0], rpipe[1], fds_to_close); @@ -2308,11 +2389,13 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) close (rpipe[1]); close (wpipe[0]); - /* XXX - possibly run Coproc->name through word expansion? */ + /* XXX - run Coproc->name through word expansion above -- bash-5.0 */ cp = coproc_alloc (command->value.Coproc->name, coproc_pid); cp->c_rfd = rpipe[0]; cp->c_wfd = wpipe[1]; + cp->c_flags |= COPROC_RUNNING; + SET_CLOSE_ON_EXEC (cp->c_rfd); SET_CLOSE_ON_EXEC (cp->c_wfd); @@ -2321,7 +2404,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) UNBLOCK_SIGNAL (oset); #if 0 - itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command); + itrace ("execute_coproc (%s): [%d] %s", command->value.Coproc->name, coproc_pid, the_printed_command); #endif close_pipes (pipe_in, pipe_out); @@ -2779,8 +2862,10 @@ execute_for_command (for_command) sh_invalidid (list->word->word); v = 0; } + else if (readonly_p (v)) + err_readonly (name_cell (v)); else - v = bind_variable_value (v, list->word->word, 0); + v = bind_variable_value (v, list->word->word, ASS_NAMEREF); } else v = bind_variable (identifier, list->word->word, 0); @@ -2835,7 +2920,7 @@ execute_for_command (for_command) { SHELL_VAR *new_value; - new_value = bind_variable (identifier, value_cell(old_value), 0); + new_value = bind_variable (identifier, value_cell (old_value), 0); new_value->attributes = old_value->attributes; dispose_variable (old_value); } @@ -2892,7 +2977,7 @@ eval_arith_for_expr (l, okp) skip the command. */ #if defined (DEBUGGER) if (debugging_mode == 0 || r == EXECUTION_SUCCESS) - expresult = evalexp (new->word->word, okp); + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); else { expresult = 0; @@ -2900,7 +2985,7 @@ eval_arith_for_expr (l, okp) *okp = 1; } #else - expresult = evalexp (new->word->word, okp); + expresult = evalexp (new->word->word, EXP_EXPANDED, okp); #endif dispose_words (new); } @@ -2933,11 +3018,12 @@ execute_arith_for_command (arith_for_command) line_number before executing each expression -- for $LINENO and the DEBUG trap. */ line_number = arith_lineno = arith_for_command->line; - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } /* Evaluate the initialization expression. */ @@ -3142,12 +3228,7 @@ select_query (list, list_len, prompt, print_menu) WORD_LIST *l; char *repl_string, *t; -#if 0 - t = get_string_value ("LINES"); - LINES = (t && *t) ? atoi (t) : 24; -#endif - t = get_string_value ("COLUMNS"); - COLS = (t && *t) ? atoi (t) : 80; + COLS = default_columns (); #if 0 t = get_string_value ("TABSIZE"); @@ -3350,7 +3431,7 @@ execute_case_command (case_command) WORD_LIST *wlist, *es; PATTERN_LIST *clauses; char *word, *pattern; - int retval, match, ignore_return, save_line_number; + int retval, match, ignore_return, save_line_number, qflags; save_line_number = line_number; line_number = case_command->line; @@ -3402,7 +3483,18 @@ execute_case_command (case_command) es = expand_word_leave_quoted (list->word, 0); if (es && es->word && es->word->word && *(es->word->word)) - pattern = quote_string_for_globbing (es->word->word, QGLOB_CVTNULL); + { + /* Convert quoted null strings into empty strings. */ + qflags = QGLOB_CVTNULL; + + /* We left CTLESC in place quoting CTLESC and CTLNUL after the + call to expand_word_leave_quoted; tell quote_string_for_globbing + to remove those here. This works for both unquoted portions of + the word (which call quote_escapes) and quoted portions + (which call quote_string). */ + qflags |= QGLOB_CTLESC; + pattern = quote_string_for_globbing (es->word->word, qflags); + } else { pattern = (char *)xmalloc (1); @@ -3581,13 +3673,14 @@ execute_arith_command (arith_command) save_line_number = line_number; this_command_name = "(("; /* )) */ - line_number = arith_command->line; + line_number_for_err_trap = line_number = arith_command->line; /* If we're in a function, update the line number information. */ - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } command_string_index = 0; @@ -3623,7 +3716,7 @@ execute_arith_command (arith_command) if (new) { exp = new->next ? string_list (new) : new->word->word; - expresult = evalexp (exp, &expok); + expresult = evalexp (exp, EXP_EXPANDED, &expok); line_number = save_line_number; if (exp != new->word->word) free (exp); @@ -3779,17 +3872,17 @@ execute_cond_command (cond_command) { int retval, save_line_number; - retval = EXECUTION_SUCCESS; save_line_number = line_number; this_command_name = "[["; - line_number = cond_command->line; + line_number_for_err_trap = line_number = cond_command->line; /* If we're in a function, update the line number information. */ - if (variable_context && interactive_shell) + if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } command_string_index = 0; print_cond_command (cond_command); @@ -3849,7 +3942,11 @@ execute_null_command (redirects, pipe_in, pipe_out, async) REDIRECT *rd; for (forcefork = 0, rd = redirects; rd; rd = rd->next) - forcefork += rd->rflags & REDIR_VARASSIGN; + { + forcefork += rd->rflags & REDIR_VARASSIGN; + /* Safety */ + forcefork += (rd->redirector.dest == 0 || fd_is_bash_input (rd->redirector.dest)) && (INPUT_REDIRECT (rd->instruction) || TRANSLATE_REDIRECT (rd->instruction) || rd->instruction == r_close_this); + } if (forcefork || pipe_in != NO_PIPE || pipe_out != NO_PIPE || async) { @@ -3866,6 +3963,8 @@ execute_null_command (redirects, pipe_in, pipe_out, async) coproc_closeall (); #endif + interactive = 0; /* XXX */ + subshell_environment = 0; if (async) subshell_environment |= SUBSHELL_ASYNC; @@ -3962,9 +4061,10 @@ fix_assignment_words (words) /* If we have an assignment builtin that does not create local variables, make sure we create global variables even if we internally call - `declare' */ + `declare'. The CHKLOCAL flag means to set attributes or values on + an existing local variable */ if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) - w->word->flags |= W_ASSNGLOBAL; + w->word->flags |= W_ASSNGLOBAL|W_CHKLOCAL; } #if defined (ARRAY_VARS) /* Note that we saw an associative array option to a builtin that takes @@ -4032,9 +4132,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell && sourcelevel == 0) { - line_number -= function_line_number; - if (line_number < 0) - line_number = 0; + /* line numbers in a function start at 1 */ + line_number -= function_line_number - 1; + if (line_number <= 0) + line_number = 1; } /* Remember what this command line looks like at invocation. */ @@ -4067,7 +4168,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) last_command_subst_pid = NO_PID; old_last_async_pid = last_asynchronous_pid; - already_forked = dofork = 0; + already_forked = 0; /* If we're in a pipeline or run in the background, set DOFORK so we make the child early, before word expansion. This keeps assignment @@ -4085,13 +4186,15 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (dofork) { + char *p; + /* Do this now, because execute_disk_command will do it anyway in the vast majority of cases. */ maybe_make_export_env (); /* Don't let a DEBUG trap overwrite the command string to be saved with the process/job associated with this child. */ - if (make_child (savestring (the_printed_command_except_trap), async) == 0) + if (make_child (p = savestring (the_printed_command_except_trap), async) == 0) { already_forked = 1; simple_command->flags |= CMD_NO_FORK; @@ -4124,6 +4227,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (async) subshell_level++; /* not for pipes yet */ + +#if defined (JOB_CONTROL) + FREE (p); /* child doesn't use pointer */ +#endif } else { @@ -4133,11 +4240,13 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) result = last_command_exit_value; close_pipes (pipe_in, pipe_out); #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) +#if 0 /* Close /dev/fd file descriptors in the parent after forking the last child in a (possibly one-element) pipeline. Defer this until any running shell function completes. */ if (pipe_out == NO_PIPE && variable_context == 0) /* XXX */ unlink_fifo_list (); /* XXX */ +#endif #endif command_line = (char *)NULL; /* don't free this. */ bind_lastarg ((char *)NULL); @@ -4345,10 +4454,18 @@ run_builtin: last_command_exit_value = EXECUTION_FAILURE; jump_to_top_level (ERREXIT); } + break; + case EX_DISKFALLBACK: + /* XXX - experimental */ + executing_builtin = old_builtin; + executing_command_builtin = old_command_builtin; + builtin = 0; + /* XXX - redirections will have to be performed again */ + goto execute_from_filesystem; } result = builtin_status (result); if (builtin_is_special) - special_builtin_failed = 1; + special_builtin_failed = 1; /* XXX - take command builtin into account? */ } /* In POSIX mode, if there are assignment statements preceding a special builtin, they persist after the builtin @@ -4379,6 +4496,7 @@ run_builtin: goto run_builtin; } +execute_from_filesystem: if (command_line == 0) command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); @@ -4439,11 +4557,12 @@ execute_builtin (builtin, words, flags, subshell) WORD_LIST *words; int flags, subshell; { - int result, eval_unwind, ignexit_flag, old_e_flag; - int isbltinenv; + int result, eval_unwind, ignexit_flag; + int isbltinenv, should_keep; char *error_trap; error_trap = 0; + should_keep = 0; /* The eval builtin calls parse_and_execute, which does not know about the setting of flags, and always calls the execution functions with @@ -4479,7 +4598,18 @@ execute_builtin (builtin, words, flags, subshell) problem only with the `unset', `source' and `eval' builtins. `mapfile' is a special case because it uses evalstring (same as eval or source) to run its callbacks. */ + /* SHOULD_KEEP is for the pop_scope call below; it only matters when + posixly_correct is set, but we should propagate the temporary environment + to the enclosing environment only for special builtins. */ isbltinenv = (builtin == source_builtin || builtin == eval_builtin || builtin == unset_builtin || builtin == mapfile_builtin); + should_keep = isbltinenv && builtin != mapfile_builtin; +#if defined (HISTORY) && defined (READLINE) + if (builtin == fc_builtin || builtin == read_builtin) + { + isbltinenv = 1; + should_keep = 0; + } +#endif if (isbltinenv) { @@ -4489,8 +4619,10 @@ execute_builtin (builtin, words, flags, subshell) if (temporary_env) { push_scope (VC_BLTNENV, temporary_env); + if (flags & CMD_COMMAND_BUILTIN) + should_keep = 0; if (subshell == 0) - add_unwind_protect (pop_scope, (flags & CMD_COMMAND_BUILTIN) ? 0 : "1"); + add_unwind_protect (pop_scope, should_keep ? "1" : 0); temporary_env = (HASH_TABLE *)NULL; } } @@ -4549,7 +4681,7 @@ execute_builtin (builtin, words, flags, subshell) if (error_trap) { set_error_trap (error_trap); - xfree (error_trap); + free (error_trap); } discard_unwind_frame ("eval_builtin"); } @@ -4561,8 +4693,6 @@ static void maybe_restore_getopt_state (gs) sh_getopt_state_t *gs; { - SHELL_VAR *v; - /* If we have a local copy of OPTIND and it's at the right (current) context, then we restore getopt's internal state. If not, we just let it go. We know there is a local OPTIND if gs->gs_flags & 1. @@ -4638,6 +4768,12 @@ execute_function (var, words, flags, fds_to_close, async, subshell) if (subshell == 0) { begin_unwind_frame ("function_calling"); + /* If the shell is in posix mode, this will push the variables in + the temporary environment to the "current shell environment" (the + global scope), and dispose the temporary env before setting it to + NULL later. This behavior has disappeared from the latest edition + of the standard, so I will eventually remove it from variables.c: + push_var_context. */ push_context (var->name, subshell, temporary_env); /* This has to be before the pop_context(), because the unwinding of local variables may cause the restore of a local declaration of @@ -4698,11 +4834,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) /* Shell functions inherit the RETURN trap if function tracing is on globally or on individually for this function. */ -#if 0 - if (return_trap && ((trace_p (var) == 0) && function_trace_mode == 0)) -#else if (return_trap && (signal_in_progress (DEBUG_TRAP) || ((trace_p (var) == 0) && function_trace_mode == 0))) -#endif { if (subshell == 0) { @@ -4741,6 +4873,11 @@ execute_function (var, words, flags, fds_to_close, async, subshell) /* The temporary environment for a function is supposed to apply to all commands executed within the function body. */ + /* Initialize BASH_ARGC and BASH_ARGV before we blow away the positional + parameters */ + if (debugging_mode || shell_compatibility_level <= 44) + init_bash_argv (); + remember_args (words->next, 1); /* Update BASH_ARGV and BASH_ARGC */ @@ -4911,6 +5048,8 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, without_job_control (); set_sigchld_handler (); +#else + without_job_control (); #endif /* JOB_CONTROL */ set_sigint_handler (); @@ -4947,6 +5086,15 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, fflush (stdout); if (r == EX_USAGE) r = EX_BADUSAGE; + /* XXX - experimental */ + else if (r == EX_DISKFALLBACK) + { + char *command_line; + + command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); + r = execute_disk_command (words, (REDIRECT *)0, command_line, + -1, -1, async, (struct fd_bitmap *)0, flags|CMD_NO_FORK); + } sh_exit (r); } } @@ -4995,8 +5143,7 @@ execute_builtin_or_function (words, builtin, var, redirects, if (do_redirections (redirects, RX_ACTIVE|RX_UNDOABLE) != 0) { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; + undo_partial_redirects (); dispose_exec_redirects (); #if defined (PROCESS_SUBSTITUTION) free (ofifo_list); @@ -5063,11 +5210,7 @@ execute_builtin_or_function (words, builtin, var, redirects, discard_unwind_frame ("saved-redirects"); } - if (redirection_undo_list) - { - cleanup_redirects (redirection_undo_list); - redirection_undo_list = (REDIRECT *)NULL; - } + undo_partial_redirects (); #if defined (PROCESS_SUBSTITUTION) /* Close any FIFOs created by this builtin or function. */ @@ -5139,7 +5282,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, struct fd_bitmap *fds_to_close; int cmdflags; { - char *pathname, *command, **args; + char *pathname, *command, **args, *p; int nofork, stdpath, result; pid_t pid; SHELL_VAR *hookf; @@ -5149,6 +5292,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ pathname = words->word->word; + p = 0; result = EXECUTION_SUCCESS; #if defined (RESTRICTED_SHELL) command = (char *)NULL; @@ -5168,9 +5312,15 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, #endif /* RESTRICTED_SHELL */ command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0)); + QUIT; if (command) { + /* If we're optimizing out the fork (implicit `exec'), decrement the + shell level like `exec' would do. */ + if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) + adjust_shell_level (-1); + maybe_make_export_env (); put_command_name_into_env (command); } @@ -5182,7 +5332,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE) pid = 0; else - pid = make_child (savestring (command_line), async); + pid = make_child (p = savestring (command_line), async); if (pid == 0) { @@ -5194,6 +5344,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, CHECK_SIGTERM; +#if defined (JOB_CONTROL) + FREE (p); +#endif + /* restore_original_signals may have undone the work done by make_child to ensure that SIGINT and SIGQUIT are ignored in asynchronous children. */ @@ -5246,9 +5400,13 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ } + /* We don't want to manage process groups for processes we start + from here, so we turn off job control and don't attempt to + manipulate the terminal's process group. */ + without_job_control (); + #if defined (JOB_CONTROL) - /* May need to reinitialize more of the job control state here. */ - kill_current_pipeline (); + set_sigchld_handler (); #endif wl = make_word_list (make_word (NOTFOUND_HOOK), words); @@ -5271,8 +5429,10 @@ parent_return: /* Make sure that the pipes are closed in the parent. */ close_pipes (pipe_in, pipe_out); #if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD) +#if 0 if (variable_context == 0) unlink_fifo_list (); +#endif #endif FREE (command); return (result); @@ -5619,6 +5779,7 @@ execute_intern_function (name, funcdef) FUNCTION_DEF *funcdef; { SHELL_VAR *var; + char *t; if (check_identifier (name, posixly_correct) == 0) { @@ -5630,6 +5791,13 @@ execute_intern_function (name, funcdef) return (EXECUTION_FAILURE); } + if (strchr (name->word, CTLESC)) /* WHY? */ + { + t = dequote_escapes (name->word); + free (name->word); + name->word = t; + } + /* Posix interpretation 383 */ if (posixly_correct && find_special_builtin (name->word)) { @@ -5647,7 +5815,7 @@ execute_intern_function (name, funcdef) } #if defined (DEBUGGER) - bind_function_def (name->word, funcdef); + bind_function_def (name->word, funcdef, 1); #endif bind_function (name->word, funcdef->command); diff --git a/execute_cmd.h b/execute_cmd.h index 62bec829d..dc2f15ec6 100644 --- a/execute_cmd.h +++ b/execute_cmd.h @@ -1,6 +1,6 @@ /* execute_cmd.h - functions from execute_cmd.c. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,6 +35,40 @@ struct func_array_state }; #endif +/* Placeholder for later expansion to include more execution state */ +/* XXX - watch out for pid_t */ +struct execstate + { + pid_t pid; + int subshell_env; + }; + + +/* Variables delared in execute_cmd.c, used by many other files */ +extern int return_catch_flag; +extern int return_catch_value; +extern volatile int last_command_exit_value; +extern int last_command_exit_signal; +extern int builtin_ignoring_errexit; +extern int executing_builtin; +extern int executing_list; +extern int comsub_ignore_return; +extern int subshell_level; +extern int match_ignore_case; +extern int executing_command_builtin; +extern int funcnest, funcnest_max; +extern int evalnest, evalnest_max; +extern int sourcenest, sourcenest_max; +extern int stdin_redir; +extern int line_number_for_err_trap; + +extern char *the_printed_command_except_trap; + +extern char *this_command_name; +extern SHELL_VAR *this_shell_function; + +/* Functions delared in execute_cmd.c, used by many other files */ + extern struct fd_bitmap *new_fd_bitmap __P((int)); extern void dispose_fd_bitmap __P((struct fd_bitmap *)); extern void close_fd_bitmap __P((struct fd_bitmap *)); @@ -43,7 +77,10 @@ extern int execute_command __P((COMMAND *)); extern int execute_command_internal __P((COMMAND *, int, int, int, struct fd_bitmap *)); extern int shell_execve __P((char *, char **, char **)); extern void setup_async_signals __P((void)); -extern void dispose_exec_redirects __P ((void)); + +extern void undo_partial_redirects __P((void)); +extern void dispose_partial_redirects __P((void)); +extern void dispose_exec_redirects __P((void)); extern int execute_shell_function __P((SHELL_VAR *, WORD_LIST *)); @@ -57,6 +94,7 @@ extern void coproc_flush __P((void)); extern void coproc_close __P((struct coproc *)); extern void coproc_closeall __P((void)); extern void coproc_reap __P((void)); +extern pid_t coproc_active __P((void)); extern void coproc_rclose __P((struct coproc *, int)); extern void coproc_wclose __P((struct coproc *, int)); diff --git a/expr.c b/expr.c index 172964a24..c51240f40 100644 --- a/expr.c +++ b/expr.c @@ -82,6 +82,10 @@ #include "bashintl.h" #include "shell.h" +#include "arrayfunc.h" +#include "execute_cmd.h" +#include "flags.h" +#include "subst.h" #include "typemax.h" /* INTMAX_MAX, INTMAX_MIN */ /* Because of the $((...)) construct, expressions may include newlines. @@ -171,6 +175,9 @@ static intmax_t tokval; /* current token value */ static int noeval; /* set to 1 if no assignment to be done */ static procenv_t evalbuf; +/* set to 1 if the expression has already been run through word expansion */ +static int already_expanded; + static struct lvalue curlval = {0, 0, 0, -1}; static struct lvalue lastlval = {0, 0, 0, -1}; @@ -217,9 +224,6 @@ static EXPR_CONTEXT **expr_stack; static int expr_depth; /* Location in the stack. */ static int expr_stack_size; /* Number of slots already allocated. */ -extern char *this_command_name; -extern int unbound_vars_is_error, last_command_exit_value; - #if defined (ARRAY_VARS) extern const char * const bash_badsub_errmsg; #endif @@ -279,8 +283,13 @@ popexp () { EXPR_CONTEXT *context; - if (expr_depth == 0) - evalerror (_("recursion stack underflow")); + if (expr_depth <= 0) + { + /* See the comment at the top of evalexp() for an explanation of why + this is done. */ + expression = lasttp = 0; + evalerror (_("recursion stack underflow")); + } context = expr_stack[--expr_depth]; @@ -303,7 +312,8 @@ expr_unwind () free (expr_stack[expr_depth]); } - free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ + if (expr_depth == 0) + free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */ noeval = 0; /* XXX */ } @@ -313,8 +323,14 @@ expr_bind_variable (lhs, rhs) char *lhs, *rhs; { SHELL_VAR *v; + int aflags; - v = bind_int_variable (lhs, rhs); +#if defined (ARRAY_VARS) + aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0; +#else + aflags = 0; +#endif + v = bind_int_variable (lhs, rhs, aflags); if (v && (readonly_p (v) || noassign_p (v))) sh_longjmp (evalbuf, 1); /* variable assignment error */ stupidly_hack_special_variables (lhs); @@ -334,7 +350,7 @@ expr_bind_array_element (tok, ind, rhs) char ibuf[INT_STRLEN_BOUND (arrayind_t) + 1], *istr; istr = fmtumax (ind, 10, ibuf, sizeof (ibuf), 0); - vname = array_variable_name (tok, (char **)NULL, (int *)NULL); + vname = array_variable_name (tok, 0, (char **)NULL, (int *)NULL); llen = strlen (vname) + sizeof (ibuf) + 3; lhs = xmalloc (llen); @@ -362,8 +378,9 @@ expr_bind_array_element (tok, ind, rhs) safe to let the loop terminate when expr_depth == 0, without freeing up any of the expr_depth[0] stuff. */ intmax_t -evalexp (expr, validp) +evalexp (expr, flags, validp) char *expr; + int flags; int *validp; { intmax_t val; @@ -372,6 +389,7 @@ evalexp (expr, validp) val = 0; noeval = 0; + already_expanded = (flags&EXP_EXPANDED); FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf)); @@ -384,6 +402,10 @@ evalexp (expr, validp) tokstr = expression = (char *)NULL; expr_unwind (); + expr_depth = 0; /* XXX - make sure */ + + /* We copy in case we've called evalexp recursively */ + FASTCOPY (oevalbuf, evalbuf, sizeof (evalbuf)); if (validp) *validp = 0; @@ -480,6 +502,9 @@ expassign () lvalue = value; } + if (tokstr == 0) + evalerror (_("syntax error in variable assignment")); + /* XXX - watch out for pointer aliasing issues here */ lhs = savestring (tokstr); /* save ind in case rhs is string var and evaluation overwrites it */ @@ -1093,19 +1118,28 @@ expr_streval (tok, e, lvalue) SHELL_VAR *v; char *value; intmax_t tval; + int initial_depth; #if defined (ARRAY_VARS) arrayind_t ind; + int tflag, aflag; #endif -/*itrace("expr_streval: %s: noeval = %d", tok, noeval);*/ +/*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/ /* If we are suppressing evaluation, just short-circuit here instead of going through the rest of the evaluator. */ if (noeval) return (0); + initial_depth = expr_depth; + +#if defined (ARRAY_VARS) + tflag = assoc_expand_once && already_expanded; /* for a start */ +#endif + /* [[[[[ */ #if defined (ARRAY_VARS) - v = (e == ']') ? array_variable_part (tok, (char **)0, (int *)0) : find_variable (tok); + aflag = (tflag) ? AV_NOEXPAND : 0; + v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok); #else v = find_variable (tok); #endif @@ -1113,7 +1147,7 @@ expr_streval (tok, e, lvalue) if ((v == 0 || invisible_p (v)) && unbound_vars_is_error) { #if defined (ARRAY_VARS) - value = (e == ']') ? array_variable_name (tok, (char **)0, (int *)0) : tok; + value = (e == ']') ? array_variable_name (tok, tflag, (char **)0, (int *)0) : tok; #else value = tok; #endif @@ -1141,15 +1175,23 @@ expr_streval (tok, e, lvalue) #if defined (ARRAY_VARS) ind = -1; - /* Second argument of 0 to get_array_value means that we don't allow - references like array[@]. In this case, get_array_value is just - like get_variable_value in that it does not return newly-allocated - memory or quote the results. */ - value = (e == ']') ? get_array_value (tok, 0, (int *)NULL, &ind) : get_variable_value (v); + /* If the second argument to get_array_value doesn't include AV_ALLOWALL, + we don't allow references like array[@]. In this case, get_array_value + is just like get_variable_value in that it does not return newly-allocated + memory or quote the results. AFLAG is set above and is either AV_NOEXPAND + or 0. */ + value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v); #else value = get_variable_value (v); #endif + if (expr_depth < initial_depth) + { + if (no_longjmp_on_fatal_error && interactive_shell) + sh_longjmp (evalbuf, 1); + return (0); + } + tval = (value && *value) ? subexpr (value) : 0; if (lvalue) @@ -1270,7 +1312,7 @@ readtok () #if defined (ARRAY_VARS) if (c == '[') { - e = skipsubscript (cp, 0, 0); + e = skipsubscript (cp, 0, 1); /* XXX - arg 3 was 0 */ if (cp[e] == ']') { cp += e + 1; @@ -1371,6 +1413,14 @@ readtok () c = POWER; else if ((c == '-' || c == '+') && c1 == c && curtok == STR) c = (c == '-') ? POSTDEC : POSTINC; + else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC)) + { + /* This catches something like --FOO++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } else if ((c == '-' || c == '+') && c1 == c) { /* Quickly scan forward to see if this is followed by optional @@ -1381,7 +1431,19 @@ readtok () if (legal_variable_starter ((unsigned char)*xp)) c = (c == '-') ? PREDEC : PREINC; else + /* Could force parsing as preinc or predec and throw an error */ +#if 0 + { + /* bash-5.0 */ + /* This catches something like --4++ */ + if (c == '-') + evalerror ("--: assignment requires lvalue"); + else + evalerror ("++: assignment requires lvalue"); + } +#else cp--; /* not preinc or predec, so unget the character */ +#endif } else if (c1 == EQ && member (c, "*/%+-&^|")) { @@ -1417,11 +1479,11 @@ evalerror (msg) char *name, *t; name = this_command_name; - for (t = expression; whitespace (*t); t++) + for (t = expression; t && whitespace (*t); t++) ; internal_error (_("%s%s%s: %s (error token is \"%s\")"), - name ? name : "", name ? ": " : "", t, - msg, (lasttp && *lasttp) ? lasttp : ""); + name ? name : "", name ? ": " : "", + t ? t : "", msg, (lasttp && *lasttp) ? lasttp : ""); sh_longjmp (evalbuf, 1); } @@ -1544,7 +1606,7 @@ main (argc, argv) for (i = 1; i < argc; i++) { - v = evalexp (argv[i], &expok); + v = evalexp (argv[i], 0, &expok); if (expok == 0) fprintf (stderr, _("%s: expression error\n"), argv[i]); else diff --git a/externs.h b/externs.h index fa0603d34..9faf30598 100644 --- a/externs.h +++ b/externs.h @@ -27,7 +27,9 @@ #include "stdc.h" /* Functions from expr.c. */ -extern intmax_t evalexp __P((char *, int *)); +#define EXP_EXPANDED 0x01 + +extern intmax_t evalexp __P((char *, int, int *)); /* Functions from print_cmd.c. */ #define FUNC_MULTILINE 0x01 @@ -92,6 +94,7 @@ extern void get_current_user_info __P((void)); /* Functions from eval.c. */ extern int reader_loop __P((void)); +extern int pretty_print_loop __P((void)); extern int parse_command __P((void)); extern int read_command __P((void)); @@ -137,6 +140,9 @@ extern char *get_locale_var __P((char *)); extern char *localetrans __P((char *, int, int *)); extern char *mk_msgstr __P((char *, int *)); extern char *localeexpand __P((char *, int, int, int, int *)); +#ifndef locale_decpoint +extern int locale_decpoint __P((void)); +#endif /* Declarations for functions defined in list.c. */ extern void list_walk __P((GENERIC_LIST *, sh_glist_func_t *)); diff --git a/findcmd.c b/findcmd.c index 7ff349ce8..c3f00a408 100644 --- a/findcmd.c +++ b/findcmd.c @@ -1,6 +1,6 @@ /* findcmd.c -- Functions to search for commands by name. */ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. +/* Copyright (C) 1997-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,6 +38,7 @@ #include "memalloc.h" #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #include "hashlib.h" #include "pathexp.h" @@ -50,9 +51,6 @@ extern int errno; #endif -extern int posixly_correct; -extern int last_command_exit_value; - /* Static functions defined and used in this file. */ static char *_find_user_command_internal __P((const char *, int)); static char *find_user_command_internal __P((const char *, int)); @@ -339,7 +337,7 @@ search_for_command (pathname, flags) const char *pathname; int flags; { - char *hashed_file, *command, *pathlist; + char *hashed_file, *command, *path_list; int temp_path, st; SHELL_VAR *path; @@ -380,13 +378,13 @@ search_for_command (pathname, flags) else { if (flags & CMDSRCH_STDPATH) - pathlist = conf_standard_path (); + path_list = conf_standard_path (); else if (temp_path || path) - pathlist = value_cell (path); + path_list = value_cell (path); else - pathlist = 0; + path_list = 0; - command = find_user_command_in_path (pathname, pathlist, FS_EXEC_PREFERRED|FS_NODIRS); + command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS); if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH)) { @@ -404,7 +402,7 @@ search_for_command (pathname, flags) } if (flags & CMDSRCH_STDPATH) - free (pathlist); + free (path_list); } return (command); diff --git a/findcmd.h b/findcmd.h index bc4a41afb..34b491495 100644 --- a/findcmd.h +++ b/findcmd.h @@ -39,4 +39,9 @@ extern char *search_for_command __P((const char *, int)); extern char *user_command_matches __P((const char *, int, int)); extern void setup_exec_ignore __P((char *)); +extern int dot_found_in_search; + +/* variables managed via shopt */ +extern int check_hashed_filenames; + #endif /* _FINDCMD_H_ */ diff --git a/flags.c b/flags.c index 4b94fb030..6e208419f 100644 --- a/flags.c +++ b/flags.c @@ -25,6 +25,7 @@ #endif #include "shell.h" +#include "execute_cmd.h" #include "flags.h" #if defined (BANG_HISTORY) @@ -35,16 +36,6 @@ extern int set_job_control __P((int)); #endif -#if defined (RESTRICTED_SHELL) -extern char *shell_name; -#endif - -extern int shell_initialized; -extern int builtin_ignoring_errexit; - -/* -c, -s invocation options -- not really flags, but they show up in $- */ -extern int want_pending_command, read_from_stdin; - /* **************************************************************** */ /* */ /* The Standard sh Flags. */ @@ -130,11 +121,8 @@ int hashing_enabled = 1; #if defined (BANG_HISTORY) /* Non-zero means that we are doing history expansion. The default. This means !22 gets the 22nd line of history. */ -# if defined (STRICT_POSIX) -int history_expansion = 0; -# else -int history_expansion = 1; -# endif +int history_expansion = HISTEXPAND_DEFAULT; +int histexp_flag = 0; #endif /* BANG_HISTORY */ /* Non-zero means that we allow comments to appear in interactive commands. */ @@ -211,7 +199,7 @@ const struct flags_alist shell_flags[] = { { 'C', &noclobber }, { 'E', &error_trace_mode }, #if defined (BANG_HISTORY) - { 'H', &history_expansion }, + { 'H', &histexp_flag }, #endif /* BANG_HISTORY */ { 'I', &no_invisible_vars }, { 'P', &no_symbolic_links }, @@ -265,6 +253,7 @@ change_flag (flag, on_or_off) { #if defined (BANG_HISTORY) case 'H': + history_expansion = histexp_flag; if (on_or_off == FLAG_ON) bash_initialize_history (); break; diff --git a/flags.h b/flags.h index d5ed334e1..fdbf7f975 100644 --- a/flags.h +++ b/flags.h @@ -50,6 +50,9 @@ extern int asynchronous_notification, interactive_comments, no_symbolic_links, function_trace_mode, error_trace_mode, pipefail_opt; +/* -c, -s invocation options -- not really flags, but they show up in $- */ +extern int want_pending_command, read_from_stdin; + #if 0 extern int lexical_scoping; #endif @@ -60,6 +63,7 @@ extern int brace_expansion; #if defined (BANG_HISTORY) extern int history_expansion; +extern int histexp_flag; #endif /* BANG_HISTORY */ #if defined (RESTRICTED_SHELL) diff --git a/general.c b/general.c index 2d327add6..b1598621f 100644 --- a/general.c +++ b/general.c @@ -39,9 +39,14 @@ #include "bashintl.h" #include "shell.h" +#include "parser.h" +#include "flags.h" +#include "findcmd.h" #include "test.h" #include "trap.h" +#include "builtins/common.h" + #if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) # include /* mbschr */ #endif @@ -52,13 +57,9 @@ extern int errno; #endif /* !errno */ -extern int expand_aliases; -extern int interactive_comments; -extern int check_hashed_filenames; -extern int source_uses_path; -extern int source_searches_cwd; -extern int posixly_correct; -extern int inherit_errexit; +#ifdef __CYGWIN__ +# include +#endif static char *bash_special_tilde_expansions __P((char *)); static int unquoted_tilde_word __P((const char *)); @@ -265,7 +266,7 @@ check_selfref (name, value, flags) #if defined (ARRAY_VARS) if (valid_array_reference (value, 0)) { - t = array_variable_name (value, (char **)NULL, (int *)NULL); + t = array_variable_name (value, 0, (char **)NULL, (int *)NULL); if (t && STREQ (name, t)) { free (t); @@ -349,7 +350,8 @@ legal_alias_name (string, flags) } /* Returns non-zero if STRING is an assignment statement. The returned value - is the index of the `=' sign. */ + is the index of the `=' sign. If FLAGS&1 we are expecting a compound assignment + and don't want an array subscript before the `='. */ int assignment (string, flags) const char *string; @@ -361,7 +363,7 @@ assignment (string, flags) c = string[indx = 0]; #if defined (ARRAY_VARS) - if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ + if ((legal_variable_starter (c) == 0) && ((flags&1) == 0 || c != '[')) /* ] */ #else if (legal_variable_starter (c) == 0) #endif @@ -377,7 +379,9 @@ assignment (string, flags) #if defined (ARRAY_VARS) if (c == '[') { - newi = skipsubscript (string, indx, 0); + newi = skipsubscript (string, indx, (flags & 2) ? 1 : 0); + /* XXX - why not check for blank subscripts here, if we do in + valid_array_reference? */ if (string[newi++] != ']') return (0); if (string[newi] == '+' && string[newi+1] == '=') @@ -400,6 +404,20 @@ assignment (string, flags) return (0); } +int +line_isblank (line) + const char *line; +{ + register int i; + + if (line == 0) + return 0; /* XXX */ + for (i = 0; line[i]; i++) + if (isblank ((unsigned char)line[i]) == 0) + break; + return (line[i] == '\0'); +} + /* **************************************************************** */ /* */ /* Functions to manage files and file descriptors */ @@ -447,6 +465,14 @@ sh_unset_nodelay_mode (fd) return 0; } +/* Just a wrapper for the define in include/filecntl.h */ +int +sh_setclexec (fd) + int fd; +{ + return (SET_CLOSE_ON_EXEC (fd)); +} + /* Return 1 if file descriptor FD is valid; 0 otherwise. */ int sh_validfd (fd) @@ -718,7 +744,8 @@ make_absolute (string, dot_path) { char pathbuf[PATH_MAX + 1]; - cygwin_conv_to_full_posix_path (string, pathbuf); + /* WAS cygwin_conv_to_full_posix_path (string, pathbuf); */ + cygwin_conv_path (CCP_WIN_A_TO_POSIX, string, pathbuf, PATH_MAX); result = savestring (pathbuf); } #else @@ -1321,3 +1348,26 @@ conf_standard_path () # endif /* !CS_PATH */ #endif /* !_CS_PATH || !HAVE_CONFSTR */ } + +int +default_columns () +{ + char *v; + int c; + + c = -1; + v = get_string_value ("COLUMNS"); + if (v && *v) + { + c = atoi (v); + if (c > 0) + return c; + } + + if (check_window_size) + get_new_window_size (0, (int *)0, &c); + + return (c > 0 ? c : 80); +} + + diff --git a/general.h b/general.h index 819634ce2..14cbe833d 100644 --- a/general.h +++ b/general.h @@ -92,15 +92,27 @@ extern char *strcpy __P((char *, const char *)); /* Nonzero if the integer type T is signed. */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +/* The width in bits of the integer type or expression T. + Padding bits are not supported; this is checked at compile-time below. */ +#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* Bound on length of the string representing an unsigned integer + value representable in B bits. log10 (2.0) < 146/485. The + smallest value of B where this bound is not tight is 2621. */ +#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485) + /* Bound on length of the string representing an integer value of type T. Subtract one for the sign bit if T is signed; 302 / 1000 is log10 (2) rounded up; add one for integer division truncation; add one more for a minus sign if t is signed. */ #define INT_STRLEN_BOUND(t) \ - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \ + ((TYPE_WIDTH (t) - TYPE_SIGNED (t)) * 302 / 1000 \ + 1 + TYPE_SIGNED (t)) +/* Bound on buffer size needed to represent an integer type or expression T, + including the terminating null. */ +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) /* Define exactly what a legal shell identifier consists of. */ #define legal_variable_starter(c) (ISALPHA(c) || (c == '_')) @@ -292,9 +304,11 @@ extern int check_identifier __P((WORD_DESC *, int)); extern int valid_nameref_value __P((const char *, int)); extern int check_selfref __P((const char *, char *, int)); extern int legal_alias_name __P((const char *, int)); +extern int line_isblank __P((const char *)); extern int assignment __P((const char *, int)); extern int sh_unset_nodelay_mode __P((int)); +extern int sh_setclexec __P((int)); extern int sh_validfd __P((int)); extern int fd_ispipe __P((int)); extern void check_dev_tty __P((void)); @@ -333,5 +347,6 @@ extern char **get_group_list __P((int *)); extern int *get_group_array __P((int *)); extern char *conf_standard_path __P((void)); +extern int default_columns __P((void)); #endif /* _GENERAL_H_ */ diff --git a/hashcmd.c b/hashcmd.c index fc0bfbe27..c53764f11 100644 --- a/hashcmd.c +++ b/hashcmd.c @@ -31,11 +31,10 @@ #include "bashansi.h" #include "shell.h" +#include "flags.h" #include "findcmd.h" #include "hashcmd.h" -extern int hashing_enabled; - HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL; static void phash_freedata __P((PTR_T)); diff --git a/include/shmbutil.h b/include/shmbutil.h index dbaaba86f..264cae33f 100644 --- a/include/shmbutil.h +++ b/include/shmbutil.h @@ -37,6 +37,7 @@ extern size_t mbstrlen __P((const char *)); extern char *xstrchr __P((const char *, int)); extern int locale_mb_cur_max; /* XXX */ +extern int locale_utf8locale; /* XXX */ #ifndef MB_INVALIDCH #define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) @@ -109,6 +110,8 @@ extern int locale_mb_cur_max; /* XXX */ _f = is_basic ((_str)[_i]); \ if (_f) \ mblength = 1; \ + else if (locale_utf8locale && (((_str)[_i] & 0x80) == 0)) \ + mblength = 1; \ else \ { \ state_bak = state; \ @@ -267,6 +270,8 @@ extern int locale_mb_cur_max; /* XXX */ _k = is_basic (*(_src)); \ if (_k) \ mblength = 1; \ + else if (locale_utf8locale && ((*(_src) & 0x80) == 0)) \ + mblength = 1; \ else \ { \ state_bak = state; \ diff --git a/include/stdc.h b/include/stdc.h index d2fd4b258..c66492f03 100644 --- a/include/stdc.h +++ b/include/stdc.h @@ -36,6 +36,16 @@ # endif #endif +/* New definition to use, moving away from __P since it's part of a reserved + namespace */ +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + /* Fortify, at least, has trouble with this definition */ #if defined (HAVE_STRINGIZE) # define CPP_STRING(x) #x diff --git a/include/typemax.h b/include/typemax.h index aa21c9c66..0f696388b 100644 --- a/include/typemax.h +++ b/include/typemax.h @@ -35,14 +35,23 @@ # define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) #endif +#ifndef TYPE_SIGNED_MAGNITUDE +# define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) +#endif + +#ifndef TYPE_WIDTH +# define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) +#endif + #ifndef TYPE_MINIMUM -# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ - ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ - : (t) 0)) +# define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) #endif #ifndef TYPE_MAXIMUM -# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) +# define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) #endif #ifdef HAVE_LONG_LONG diff --git a/input.c b/input.c index 308b87e42..8b3e4259b 100644 --- a/input.c +++ b/input.c @@ -1,6 +1,6 @@ /* input.c -- functions to perform buffered input with synchronization. */ -/* Copyright (C) 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1992-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -36,12 +36,9 @@ #include "bashansi.h" #include "bashintl.h" -#include "command.h" -#include "general.h" +#include "shell.h" #include "input.h" -#include "error.h" #include "externs.h" -#include "quit.h" #include "trap.h" #if !defined (errno) @@ -153,8 +150,6 @@ ungetc_with_restart (c, stream) #endif #define min(a, b) ((a) > (b) ? (b) : (a)) -extern int interactive_shell; - int bash_input_fd_changed; /* This provides a way to map from a file descriptor to the buffer @@ -277,6 +272,8 @@ save_bash_input (fd, new_fd) /* What's this? A stray buffer without an associated open file descriptor? Free up the buffer and report the error. */ internal_error (_("save_bash_input: buffer already exists for new fd %d"), nfd); + if (buffers[nfd]->b_flag & B_SHAREDBUF) + buffers[nfd]->b_buffer = (char *)NULL; free_buffered_stream (buffers[nfd]); } @@ -356,6 +353,12 @@ duplicate_buffered_stream (fd1, fd2) /* If the two objects share the same b_buffer, don't free it. */ if (buffers[fd1] && buffers[fd1]->b_buffer && buffers[fd1]->b_buffer == buffers[fd2]->b_buffer) buffers[fd2] = (BUFFERED_STREAM *)NULL; + /* If this buffer is shared with another fd, don't free the buffer */ + else if (buffers[fd2]->b_flag & B_SHAREDBUF) + { + buffers[fd2]->b_buffer = (char *)NULL; + free_buffered_stream (buffers[fd2]); + } else free_buffered_stream (buffers[fd2]); } @@ -370,6 +373,9 @@ duplicate_buffered_stream (fd1, fd2) buffers[fd2]->b_flag |= B_WASBASHINPUT; } + if (fd_is_bash_input (fd1) || (buffers[fd1] && (buffers[fd1]->b_flag & B_SHAREDBUF))) + buffers[fd2]->b_flag |= B_SHAREDBUF; + return (fd2); } @@ -441,6 +447,8 @@ close_buffered_stream (bp) if (!bp) return (0); fd = bp->b_fd; + if (bp->b_flag & B_SHAREDBUF) + bp->b_buffer = (char *)NULL; free_buffered_stream (bp); return (close (fd)); } @@ -504,7 +512,7 @@ b_fill_buffer (bp) nr = zread (bp->b_fd, bp->b_buffer, bp->b_size); if (nr <= 0) { - bp->b_used = 0; + bp->b_used = bp->b_inputp = 0; bp->b_buffer[0] = 0; if (nr == 0) bp->b_flag |= B_EOF; @@ -530,7 +538,7 @@ bufstream_ungetc(c, bp) int c; BUFFERED_STREAM *bp; { - if (c == EOF || bp->b_inputp == 0) + if (c == EOF || bp == 0 || bp->b_inputp == 0) return (EOF); bp->b_buffer[--bp->b_inputp] = c; @@ -561,6 +569,9 @@ buffered_getchar () { CHECK_TERMSIG; + if (bash_input.location.buffered_fd < 0 || buffers[bash_input.location.buffered_fd] == 0) + return EOF; + #if !defined (DJGPP) return (bufstream_getc (buffers[bash_input.location.buffered_fd])); #else diff --git a/input.h b/input.h index 0cbfcbee7..6aef12692 100644 --- a/input.h +++ b/input.h @@ -1,6 +1,6 @@ /* input.h -- Structures and unions used for reading input. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -49,6 +49,7 @@ enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream}; #define B_UNBUFF 0x04 #define B_WASBASHINPUT 0x08 #define B_TEXT 0x10 +#define B_SHAREDBUF 0x20 /* shared input buffer */ /* A buffered stream. Like a FILE *, but with our own buffering and synchronization. Look in input.c for the implementation. */ @@ -67,6 +68,7 @@ extern BUFFERED_STREAM **buffers; #endif extern int default_buffered_input; +extern int bash_input_fd_changed; #endif /* BUFFERED_INPUT */ diff --git a/jobs.c b/jobs.c index fc9660366..45ee572d9 100644 --- a/jobs.c +++ b/jobs.c @@ -3,7 +3,7 @@ /* This file works with both POSIX and BSD systems. It implements job control. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -68,10 +68,13 @@ #include "bashansi.h" #include "bashintl.h" #include "shell.h" +#include "parser.h" #include "jobs.h" #include "execute_cmd.h" #include "flags.h" +#include "typemax.h" + #include "builtins/builtext.h" #include "builtins/common.h" @@ -92,7 +95,7 @@ extern int killpg __P((pid_t, int)); #endif #if !MAX_CHILD_MAX -# define MAX_CHILD_MAX 8192 +# define MAX_CHILD_MAX 32768 #endif #if !defined (DEBUG) @@ -162,19 +165,7 @@ extern int killpg __P((pid_t, int)); typedef int sh_job_map_func_t __P((JOB *, int, int, int)); /* Variables used here but defined in other files. */ -extern int subshell_environment, line_number; -extern int posixly_correct, shell_level; -extern int last_command_exit_value, last_command_exit_signal; -extern int loop_level, breaking; -extern int executing_list; -extern int sourcelevel; -extern int running_trap; -extern sh_builtin_func_t *this_shell_builtin; -extern char *shell_name, *this_command_name; extern sigset_t top_level_mask; -extern procenv_t wait_intr_buf; -extern int wait_intr_flag; -extern int wait_signal_received; extern WORD_LIST *subst_assign_varlist; extern SigHandler **original_signals; @@ -217,14 +208,6 @@ pid_t pipeline_pgrp = (pid_t)0; int pgrp_pipe[2] = { -1, -1 }; #endif -#if 0 -/* The job which is current; i.e. the one that `%+' stands for. */ -int current_job = NO_JOB; - -/* The previous job; i.e. the one that `%-' stands for. */ -int previous_job = NO_JOB; -#endif - /* Last child made by the shell. */ volatile pid_t last_made_pid = NO_PID; @@ -251,6 +234,8 @@ PROCESS *last_procsub_child = (PROCESS *)NULL; /* Functions local to this file. */ +void debug_print_pgrps (void); + static sighandler wait_sigint_handler __P((int)); static sighandler sigchld_handler __P((int)); static sighandler sigcont_sighandler __P((int)); @@ -751,7 +736,7 @@ stop_pipeline (async, deferred) static void bgp_resize () { - ps_index_t nsize; + ps_index_t nsize, nsize_cur, nsize_max; ps_index_t psi; if (bgpids.nalloc == 0) @@ -765,10 +750,19 @@ bgp_resize () else nsize = bgpids.nalloc; - while (nsize < js.c_childmax) - nsize *= 2; + nsize_max = TYPE_MAXIMUM (ps_index_t); + nsize_cur = (ps_index_t)js.c_childmax; + if (nsize_cur < 0) /* overflow */ + nsize_cur = MAX_CHILD_MAX; - if (bgpids.nalloc < js.c_childmax) + while (nsize > 0 && nsize < nsize_cur) /* > 0 should catch overflow */ + nsize <<= 1; + if (nsize > nsize_max || nsize <= 0) /* overflow? */ + nsize = nsize_max; + if (nsize > MAX_CHILD_MAX) + nsize = nsize_max = MAX_CHILD_MAX; /* hard cap */ + + if (bgpids.nalloc < nsize_cur && bgpids.nalloc < nsize_max) { bgpids.storage = (struct pidstat *)xrealloc (bgpids.storage, nsize * sizeof (struct pidstat)); @@ -785,9 +779,7 @@ bgp_resize () static ps_index_t bgp_getindex () { - ps_index_t psi; - - if (bgpids.nalloc < js.c_childmax || bgpids.head >= bgpids.nalloc) + if (bgpids.nalloc < (ps_index_t)js.c_childmax || bgpids.head >= bgpids.nalloc) bgp_resize (); pshash_delindex (bgpids.head); /* XXX - clear before reusing */ @@ -812,8 +804,22 @@ bgp_add (pid, status) ps_index_t *bucket, psi; struct pidstat *ps; - bucket = pshash_getbucket (pid); - psi = bgp_getindex (); + /* bucket == existing chain of pids hashing to same value + psi = where were going to put this pid/status */ + + bucket = pshash_getbucket (pid); /* index into pidstat_table */ + psi = bgp_getindex (); /* bgpids.head, index into storage */ + + /* 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 + bgpids.storage[psi].pid = NO_PID; /* make sure */ + psi = bgp_getindex (); /* skip to next one */ + } + ps = &bgpids.storage[psi]; ps->pid = pid; @@ -841,32 +847,47 @@ pshash_delindex (psi) ps_index_t psi; { struct pidstat *ps; + ps_index_t *bucket; ps = &bgpids.storage[psi]; if (ps->pid == NO_PID) return; - if (ps->bucket_next != NO_PID) + if (ps->bucket_next != NO_PIDSTAT) bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; - if (ps->bucket_prev != NO_PID) + if (ps->bucket_prev != NO_PIDSTAT) bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; else - *(pshash_getbucket (ps->pid)) = ps->bucket_next; + { + bucket = pshash_getbucket (ps->pid); + *bucket = ps->bucket_next; /* deleting chain head in hash table */ + } + + /* clear out this cell, just in case */ + ps->pid = NO_PID; + ps->bucket_next = ps->bucket_prev = NO_PIDSTAT; } static int bgp_delete (pid) pid_t pid; { - ps_index_t psi; + ps_index_t psi, orig_psi; if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) return 0; /* Search chain using hash to find bucket in pidstat_table */ - for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) - if (bgpids.storage[psi].pid == pid) - break; + for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + { + if (bgpids.storage[psi].pid == pid) + break; + if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ + { + internal_warning ("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next", psi); + return 0; + } + } if (psi == NO_PIDSTAT) return 0; /* not found */ @@ -904,15 +925,22 @@ static int bgp_search (pid) pid_t pid; { - ps_index_t psi; + ps_index_t psi, orig_psi; if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) return -1; /* Search chain using hash to find bucket in pidstat_table */ - for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) - if (bgpids.storage[psi].pid == pid) - return (bgpids.storage[psi].status); + for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + { + if (bgpids.storage[psi].pid == pid) + return (bgpids.storage[psi].status); + if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */ + { + internal_warning ("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next", psi); + return -1; + } + } return -1; } @@ -974,6 +1002,7 @@ cleanup_dead_jobs () { register int i; int os; + PROCESS *discard; if (js.j_jobslots == 0 || jobs_list_frozen) return; @@ -998,8 +1027,9 @@ cleanup_dead_jobs () if (last_procsub_child && last_procsub_child->running == PS_DONE) { bgp_add (last_procsub_child->pid, process_exit_status (last_procsub_child->status)); /* XXX */ - discard_pipeline (last_procsub_child); + discard = last_procsub_child; last_procsub_child = (PROCESS *)NULL; + discard_pipeline (discard); } #endif @@ -1961,6 +1991,9 @@ make_child (command, async_p) signals to the default state for a new process. */ pid_t mypid; + /* If this ends up being changed to modify or use `command' in the + child process, go back and change callers who free `command' in + the child process when this returns. */ mypid = getpid (); #if defined (BUFFERED_INPUT) /* Close default_buffered_input if it's > 0. We don't close it if it's @@ -2333,8 +2366,8 @@ find_last_pid (job, block) This low-level function prints an error message if PID is not a child of this shell. It returns -1 if it fails, or whatever wait_for returns otherwise. If the child is not found in the - jobs table, it returns 127. If FLAGS doesn't include 1, we - suppress the error message if PID isn't found. */ + jobs table, it returns 127. If FLAGS doesn't include JWAIT_PERROR, + we suppress the error message if PID isn't found. */ int wait_for_single_pid (pid, flags) @@ -2343,7 +2376,7 @@ wait_for_single_pid (pid, flags) { register PROCESS *child; sigset_t set, oset; - int r, job; + int r, job, alive; BLOCK_CHILD (set, oset); child = find_pipeline (pid, 0, (int *)NULL); @@ -2358,12 +2391,23 @@ wait_for_single_pid (pid, flags) if (child == 0) { - if (flags & 1) + if (flags & JWAIT_PERROR) internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); return (127); } - r = wait_for (pid); + alive = 0; + do + { + r = wait_for (pid); + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + alive = PALIVE (child); + UNBLOCK_CHILD (oset); + } + while (alive); /* POSIX.2: if we just waited for a job, we can remove it from the jobs table. */ @@ -2387,11 +2431,12 @@ wait_for_single_pid (pid, flags) void wait_for_background_pids () { - register int i, r, waited_for; + register int i, r; + int any_stopped, check_async; sigset_t set, oset; pid_t pid; - for (waited_for = 0;;) + for (any_stopped = 0, check_async = 1;;) { BLOCK_CHILD (set, oset); @@ -2405,6 +2450,12 @@ wait_for_background_pids () if (i > js.j_lastj && jobs[i]) itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); #endif + if (jobs[i] && STOPPED (i)) + { + builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0)); + any_stopped = 1; + } + if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0) break; } @@ -2419,17 +2470,36 @@ wait_for_background_pids () UNBLOCK_CHILD (oset); QUIT; errno = 0; /* XXX */ - r = wait_for_single_pid (pid, 1); - if (r == -1) + r = wait_for_single_pid (pid, JWAIT_PERROR); + if (r == -1 && errno == ECHILD) { /* If we're mistaken about job state, compensate. */ - if (errno == ECHILD) - mark_all_jobs_as_dead (); + check_async = 0; + mark_all_jobs_as_dead (); } - else - waited_for++; } +#if defined (PROCESS_SUBSTITUTION) + if (last_procsub_child && last_procsub_child->pid != NO_PID) + r = wait_for (last_procsub_child->pid); + wait_procsubs (); + reap_procsubs (); +#if 1 + /* We don't want to wait indefinitely if we have stopped children. */ + /* XXX - should add a loop that goes through the list of process + substitutions and waits for each proc in turn before this code. */ + if (any_stopped == 0) + { + /* Check whether or not we have any unreaped children. */ + while ((r = wait_for (ANY_PID)) >= 0) + { + QUIT; + CHECK_WAIT_INTR; + } + } +#endif +#endif + /* POSIX.2 says the shell can discard the statuses of all completed jobs if `wait' is called with no arguments. */ mark_dead_jobs_as_notified (1); @@ -2653,7 +2723,17 @@ wait_for (pid) wait_sigint_received = child_caught_sigint = 0; if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) { - old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + SigHandler *temp_sigint_handler; + + 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 + } + else + old_sigint_handler = temp_sigint_handler; waiting_for_child = 0; if (old_sigint_handler == SIG_IGN) set_signal_handler (SIGINT, old_sigint_handler); @@ -2682,7 +2762,7 @@ wait_for (pid) job to finish. Otherwise, we are waiting for the child to finish. We check for JDEAD in case the job state has been set by waitchld after receipt of a SIGCHLD. */ - if (job == NO_JOB) /* XXX -- && pid != ANY_PID ? */ + if (job == NO_JOB && pid != ANY_PID) /* XXX -- && pid != ANY_PID ? */ job = find_job (pid, 0, NULL); /* waitchld() takes care of setting the state of the job. If the job @@ -2728,7 +2808,8 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin) { termination_state = -1; - /* XXX - restore sigint handler here? */ + /* XXX - restore sigint handler here */ + restore_sigint_handler (); goto wait_for_return; } @@ -2772,9 +2853,12 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil CHECK_WAIT_INTR; if (pid == ANY_PID) - /* XXX - could set child but we don't have a handle on what waitchld - reaps. Leave termination_state alone. */ - goto wait_for_return; + { + /* XXX - could set child but we don't have a handle on what waitchld + reaps. Leave termination_state alone. */ + restore_sigint_handler (); + goto wait_for_return; + } } while (PRUNNING (child) || (job != NO_JOB && RUNNING (job))); @@ -2881,6 +2965,10 @@ if (job == NO_JOB) loop. */ else if (signal_is_trapped (SIGINT) && loop_level) ADDINTERRUPT; + /* If an interactive shell with job control enabled is sourcing + a file, allow the interrupt to terminate the file sourcing. */ + else if (interactive_shell && signal_is_trapped (SIGINT) == 0 && sourcelevel) + ADDINTERRUPT; else { putchar ('\n'); @@ -2905,8 +2993,21 @@ if (job == NO_JOB) kill (getpid (), SIGINT); } } - else if (interactive_shell == 0 && IS_FOREGROUND (job) && check_window_size) - get_new_window_size (0, (int *)0, (int *)0); + else if (interactive_shell == 0 && subshell_environment == 0 && IS_FOREGROUND (job)) + { + s = job_signal_status (job); + + /* XXX - bash-5.0 */ + /* If we are non-interactive, but job control is enabled, and the job + died due to SIGINT, pretend we got the SIGINT */ + if (job_control && IS_JOBCONTROL (job) && WIFSIGNALED (s) && WTERMSIG (s) == SIGINT) + { + ADDINTERRUPT; /* For now */ + } + + if (check_window_size) + get_new_window_size (0, (int *)0, (int *)0); + } /* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD signal handler path */ @@ -2930,22 +3031,39 @@ wait_for_return: /* Wait for the last process in the pipeline for JOB. Returns whatever wait_for returns: the last process's termination state or -1 if there - are no unwaited-for child processes or an error occurs. */ + are no unwaited-for child processes or an error occurs. If FLAGS + includes JWAIT_FORCE, we wait for the job to terminate, no just change + state */ int -wait_for_job (job) - int job; +wait_for_job (job, flags) + int job, flags; { pid_t pid; - int r; + int r, state; sigset_t set, oset; BLOCK_CHILD(set, oset); - if (JOBSTATE (job) == JSTOPPED) + state = JOBSTATE (job); + if (state == JSTOPPED) internal_warning (_("wait_for_job: job %d is stopped"), job+1); pid = find_last_pid (job, 0); UNBLOCK_CHILD(oset); - r = wait_for (pid); + + do + { + r = wait_for (pid); + if (r == -1 && errno == ECHILD) + mark_all_jobs_as_dead (); + + if ((flags & JWAIT_FORCE) == 0) + break; + + BLOCK_CHILD (set, oset); + state = (job != NO_JOB && jobs[job]) ? JOBSTATE (job) : JDEAD; + UNBLOCK_CHILD (oset); + } + while (state != JDEAD); /* POSIX.2: we can remove the job from the jobs table if we just waited for it. */ @@ -2962,10 +3080,11 @@ wait_for_job (job) the next exiting job, -1 if there are no background jobs. The caller is responsible for translating -1 into the right return value. */ int -wait_for_any_job () +wait_for_any_job (flags) + int flags; { pid_t pid; - int i, r, waited_for; + int i, r; sigset_t set, oset; if (jobs_list_frozen) @@ -2992,7 +3111,7 @@ return_job: /* At this point, we have no dead jobs in the jobs table. Wait until we get one, even if it takes multiple pids exiting. */ - for (waited_for = 0;;) + for (;;) { /* Make sure there is a background job to wait for */ BLOCK_CHILD (set, oset); @@ -3443,6 +3562,7 @@ waitchld (wpid, block) WAIT status; PROCESS *child; pid_t pid; + int ind; int call_set_current, last_stopped_job, job, children_exited, waitpid_flags; static int wcontinued = WCONTINUED; /* run-time fix for glibc problem */ @@ -3549,6 +3669,14 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc coproc_pidchk (pid, WSTATUS(status)); #endif +#if defined (PROCESS_SUBSTITUTION) + /* Only manipulate the list of process substitutions while SIGCHLD + is blocked. */ + if ((ind = find_procsub_child (pid)) >= 0) + set_procsub_status (ind, pid, WSTATUS (status)); + /* XXX - save in bgpids list? */ +#endif + /* It is not an error to have a child terminate that we did not have a record of. This child could have been part of a pipeline in backquote substitution. Even so, I'm not @@ -3594,7 +3722,8 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc } /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ - if (job_control && children_exited && + /* XXX - bash-5.0 removes test for job_control */ + if (children_exited && (signal_is_trapped (SIGCHLD) || trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) && trap_list[SIGCHLD] != (char *)IGNORE_SIG) { @@ -4046,7 +4175,7 @@ initialize_job_control (force) int force; { pid_t t; - int t_errno; + int t_errno, tty_sigs; t_errno = -1; shell_pgrp = getpgid (0); @@ -4096,15 +4225,24 @@ initialize_job_control (force) tcsetpgrp (shell_tty, shell_pgrp); } + tty_sigs = 0; while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) { if (shell_pgrp != terminal_pgrp) { SigHandler *ottin; + CHECK_TERMSIG; ottin = set_signal_handler (SIGTTIN, SIG_DFL); kill (0, SIGTTIN); set_signal_handler (SIGTTIN, ottin); + if (tty_sigs++ > 16) + { + sys_error (_("initialize_job_control: no job control in background")); + job_control = 0; + original_pgrp = terminal_pgrp; /* for eventual give_terminal_to */ + goto just_bail; + } continue; } break; @@ -4164,6 +4302,7 @@ initialize_job_control (force) internal_error (_("no job control in this shell")); } +just_bail: running_in_background = terminal_pgrp != shell_pgrp; if (shell_tty != fileno (stderr)) @@ -4686,7 +4825,7 @@ without_job_control () void end_job_control () { - if (interactive_shell || job_control) /* XXX - should it be just job_control? */ + if (job_control) { terminate_stopped_jobs (); diff --git a/jobs.h b/jobs.h index 6df0607ed..4eca62609 100644 --- a/jobs.h +++ b/jobs.h @@ -1,6 +1,6 @@ /* jobs.h -- structures and definitions used by the jobs.c file. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,6 +38,10 @@ /* I looked it up. For pretty_print_job (). The real answer is 24. */ #define LONGEST_SIGNAL_DESC 24 +/* Defines for the wait_for functions and for the wait builtin to use */ +#define JWAIT_PERROR 0x01 +#define JWAIT_FORCE 0x02 + /* The max time to sleep while retrying fork() on EAGAIN failure */ #define FORKSLEEP_MAX 16 @@ -185,6 +189,11 @@ extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp; extern volatile pid_t last_made_pid, last_asynchronous_pid; extern int asynchronous_notification; +extern int already_making_children; +extern int running_in_background; + +extern PROCESS *last_procsub_child; + extern JOB **jobs; extern void making_children __P((void)); @@ -234,8 +243,8 @@ extern int job_exit_signal __P((int)); extern int wait_for_single_pid __P((pid_t, int)); extern void wait_for_background_pids __P((void)); extern int wait_for __P((pid_t)); -extern int wait_for_job __P((int)); -extern int wait_for_any_job __P((void)); +extern int wait_for_job __P((int, int)); +extern int wait_for_any_job __P((int)); extern void wait_sigint_cleanup __P((void)); diff --git a/lib/glob/Makefile.in b/lib/glob/Makefile.in index 23bf8c8b0..314622f13 100644 --- a/lib/glob/Makefile.in +++ b/lib/glob/Makefile.in @@ -53,7 +53,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \ - $(LOCAL_CFLAGS) $(CFLAGS) + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} # Here is a rule for making .o files from .c files that doesn't force # the type of the machine (like -sun3) into the flags. @@ -164,4 +164,5 @@ xmbsrtowcs.o: xmbsrtowcs.c # dependencies for C files that include other C files glob.o: glob_loop.c +gmisc.o: gm_loop.c smatch.o: sm_loop.c diff --git a/lib/glob/glob.c b/lib/glob/glob.c index 7f6eafe7d..774435f12 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -1,6 +1,6 @@ /* glob.c -- file-name wildcard pattern matching for Bash. - Copyright (C) 1985-2009 Free Software Foundation, Inc. + Copyright (C) 1985-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -123,10 +123,14 @@ static char **glob_dir_to_array __P((char *, char **, int)); extern char *glob_patscan __P((char *, char *, int)); extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); +/* And this from gmisc.c/gm_loop.c */ +extern int wextglob_pattern_p __P((wchar_t *)); + extern char *glob_dirscan __P((char *, int)); /* Compile `glob_loop.c' for single-byte characters. */ -#define CHAR unsigned char +#define GCHAR unsigned char +#define CHAR char #define INT int #define L(CS) CS #define INTERNAL_GLOB_PATTERN_P internal_glob_pattern_p @@ -135,6 +139,7 @@ extern char *glob_dirscan __P((char *, int)); /* Compile `glob_loop.c' again for multibyte characters. */ #if HANDLE_MULTIBYTE +#define GCHAR wchar_t #define CHAR wchar_t #define INT wint_t #define L(CS) L##CS @@ -182,9 +187,10 @@ extglob_skipname (pat, dname, flags) int flags; { char *pp, *pe, *t, *se; - int n, r, negate; + int n, r, negate, wild; negate = *pat == '!'; + wild = *pat == '*' || *pat == '?'; pp = pat + 2; se = pp + strlen (pp) - 1; /* end of string */ pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ @@ -203,14 +209,19 @@ extglob_skipname (pat, dname, flags) r = skipname (pp, dname, flags); /*(*/ #endif *pe = ')'; + if (wild && pe[1]) /* if we can match zero instances, check further */ + return (skipname (pe+1, dname, flags)); return r; } /* check every subpattern */ while (t = glob_patscan (pp, pe, '|')) { - n = t[-1]; - t[-1] = '\0'; + n = t[-1]; /* ( */ + if (extglob_pattern_p (pp) && n == ')') + t[-1] = n; /* no-op for now */ + else + t[-1] = '\0'; #if defined (HANDLE_MULTIBYTE) r = mbskipname (pp, dname, flags); #else @@ -222,12 +233,14 @@ extglob_skipname (pat, dname, flags) pp = t; } /*(*/ - /* glob_patscan might find end of pattern */ + /* glob_patscan might find end of string */ if (pp == se) return r; /* but if it doesn't then we didn't match a leading dot */ - return 0; + if (wild && *pe) /* if we can match zero instances, check further */ + return (skipname (pe, dname, flags)); + return 1; } #endif @@ -263,22 +276,23 @@ skipname (pat, dname, flags) #if HANDLE_MULTIBYTE static int -wchkname (pat_wc, dn_wc) - wchar_t *pat_wc, *dn_wc; +wskipname (pat, dname, flags) + wchar_t *pat, *dname; + int flags; { /* If a leading dot need not be explicitly matched, and the pattern doesn't start with a `.', don't match `.' or `..' */ - if (noglob_dot_filenames == 0 && pat_wc[0] != L'.' && - (pat_wc[0] != L'\\' || pat_wc[1] != L'.') && - (dn_wc[0] == L'.' && - (dn_wc[1] == L'\0' || (dn_wc[1] == L'.' && dn_wc[2] == L'\0')))) + if (noglob_dot_filenames == 0 && pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.') && + (dname[0] == L'.' && + (dname[1] == L'\0' || (dname[1] == L'.' && dname[2] == L'\0')))) return 1; /* If a leading dot must be explicitly matched, check to see if the pattern and dirname both have one. */ - else if (noglob_dot_filenames && dn_wc[0] == L'.' && - pat_wc[0] != L'.' && - (pat_wc[0] != L'\\' || pat_wc[1] != L'.')) + else if (noglob_dot_filenames && dname[0] == L'.' && + pat[0] != L'.' && + (pat[0] != L'\\' || pat[1] != L'.')) return 1; return 0; @@ -291,9 +305,10 @@ wextglob_skipname (pat, dname, flags) { #if EXTENDED_GLOB wchar_t *pp, *pe, *t, n, *se; - int r, negate; + int r, negate, wild; negate = *pat == L'!'; + wild = *pat == L'*' || *pat == L'?'; pp = pat + 2; se = pp + wcslen (pp) - 1; /*(*/ pe = glob_patscan_wc (pp, se, 0); @@ -301,17 +316,22 @@ wextglob_skipname (pat, dname, flags) if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) { *pe = L'\0'; - r = wchkname (pp, dname); /*(*/ + r = wskipname (pp, dname, flags); /*(*/ *pe = L')'; + if (wild && pe[1] != L'\0') + return (wskipname (pe+1, dname, flags)); return r; } /* check every subpattern */ while (t = glob_patscan_wc (pp, pe, '|')) { - n = t[-1]; - t[-1] = L'\0'; - r = wchkname (pp, dname); + n = t[-1]; /* ( */ + if (wextglob_pattern_p (pp) && n == L')') + t[-1] = n; /* no-op for now */ + else + t[-1] = L'\0'; + r = wskipname (pp, dname, flags); t[-1] = n; if (r == 0) return 0; @@ -322,9 +342,11 @@ wextglob_skipname (pat, dname, flags) return r; /* but if it doesn't then we didn't match a leading dot */ - return 0; + if (wild && *pe != L'\0') + return (wskipname (pe, dname, flags)); + return 1; #else - return (wchkname (pat, dname)); + return (wskipname (pat, dname, flags)); #endif } @@ -355,7 +377,7 @@ mbskipname (pat, dname, flags) ret = 0; if (pat_n != (size_t)-1 && dn_n !=(size_t)-1) - ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wchkname (pat_wc, dn_wc); + ret = ext ? wextglob_skipname (pat_wc, dn_wc, flags) : wskipname (pat_wc, dn_wc, flags); else ret = skipname (pat, dname, flags); @@ -455,7 +477,7 @@ dequote_pathname (pathname) # endif /* AFS */ #endif /* !HAVE_LSTAT */ -/* Return 0 if DIR is a directory, -1 otherwise. */ +/* Return 0 if DIR is a directory, -2 if DIR is a symlink, -1 otherwise. */ static int glob_testdir (dir, flags) char *dir; @@ -473,6 +495,11 @@ glob_testdir (dir, flags) if (r < 0) return (-1); +#if defined (S_ISLNK) + if (S_ISLNK (finfo.st_mode)) + return (-2); +#endif + if (S_ISDIR (finfo.st_mode) == 0) return (-1); @@ -778,6 +805,15 @@ glob_vector (pat, dir, flags) } } + /* When FLAGS includes GX_ALLDIRS, we want to skip a symlink + to a directory, since we will pick the directory up later. */ + if (isdir == -2 && glob_testdir (subdir, 0) == 0) + { + free (subdir); + continue; + } + + /* XXX - should we even add this if it's not a directory? */ nextlink = (struct globval *) malloc (sizeof (struct globval)); if (firstmalloc == 0) firstmalloc = nextlink; @@ -1018,7 +1054,7 @@ glob_filename (pathname, flags) char *pathname; int flags; { - char **result; + char **result, **new_result; unsigned int result_size; char *directory_name, *filename, *dname, *fn; unsigned int directory_len; @@ -1248,16 +1284,16 @@ glob_filename (pathname, flags) while (array[l] != NULL) ++l; - result = - (char **)realloc (result, (result_size + l) * sizeof (char *)); + new_result = (char **)realloc (result, (result_size + l) * sizeof (char *)); - if (result == NULL) + if (new_result == NULL) { for (l = 0; array[l]; ++l) free (array[l]); free ((char *)array); goto memory_error; } + result = new_result; for (l = 0; array[l] != NULL; ++l) result[result_size++ - 1] = array[l]; diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c index 89e86af57..7d6ae2113 100644 --- a/lib/glob/glob_loop.c +++ b/lib/glob/glob_loop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2005 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -16,16 +16,16 @@ along with Bash. If not, see . */ -static int INTERNAL_GLOB_PATTERN_P __P((const CHAR *)); +static int INTERNAL_GLOB_PATTERN_P __P((const GCHAR *)); /* Return nonzero if PATTERN has any special globbing chars in it. Compiled twice, once each for single-byte and multibyte characters. */ static int INTERNAL_GLOB_PATTERN_P (pattern) - const CHAR *pattern; + const GCHAR *pattern; { - register const CHAR *p; - register CHAR c; + register const GCHAR *p; + register GCHAR c; int bopen; p = pattern; @@ -54,8 +54,11 @@ INTERNAL_GLOB_PATTERN_P (pattern) continue; case L('\\'): - if (*p++ == L('\0')) - return 0; + /* Don't let the pattern end in a backslash (GMATCH returns no match + if the pattern ends in a backslash anyway), but otherwise return 1, + since the matching engine uses backslash as an escape character + and it can be removed. */ + return (*p != L('\0')); } return 0; @@ -65,3 +68,4 @@ INTERNAL_GLOB_PATTERN_P (pattern) #undef L #undef INT #undef CHAR +#undef GCHAR diff --git a/lib/glob/gm_loop.c b/lib/glob/gm_loop.c new file mode 100644 index 000000000..ac516f82c --- /dev/null +++ b/lib/glob/gm_loop.c @@ -0,0 +1,208 @@ +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#if EXTENDED_GLOB +int +EXTGLOB_PATTERN_P (pat) + const CHAR *pat; +{ + switch (pat[0]) + { + case L('*'): + case L('+'): + case L('!'): + case L('@'): + case L('?'): + return (pat[1] == L('(')); /* ) */ + default: + return 0; + } + + return 0; +} +#endif + +/* Return 1 of the first character of STRING could match the first + character of pattern PAT. Compiled to both single and wiide character + versions. FLAGS is a subset of strmatch flags; used to do case-insensitive + matching for now. */ +int +MATCH_PATTERN_CHAR (pat, string, flags) + CHAR *pat, *string; + int flags; +{ + CHAR c; + + if (*string == 0) + return (*pat == L('*')); /* XXX - allow only * to match empty string */ + + switch (c = *pat++) + { + default: + return (FOLD(*string) == FOLD(c)); + case L('\\'): + return (FOLD(*string) == FOLD(*pat)); + case L('?'): + return (*pat == L('(') ? 1 : (*string != L'\0')); + case L('*'): + return (1); + case L('+'): + case L('!'): + case L('@'): + return (*pat == L('(') ? 1 : (FOLD(*string) == FOLD(c))); + case L('['): + return (*string != L('\0')); + } +} + +int +MATCHLEN (pat, max) + CHAR *pat; + size_t max; +{ + CHAR c; + int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; + + if (*pat == 0) + return (0); + + matlen = in_cclass = in_collsym = in_equiv = 0; + while (c = *pat++) + { + switch (c) + { + default: + matlen++; + break; + case L('\\'): + if (*pat == 0) + return ++matlen; + else + { + matlen++; + pat++; + } + break; + case L('?'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('*'): + return (matlen = -1); + case L('+'): + case L('!'): + case L('@'): + if (*pat == LPAREN) + return (matlen = -1); /* XXX for now */ + else + matlen++; + break; + case L('['): + /* scan for ending `]', skipping over embedded [:...:] */ + bracklen = 1; + c = *pat++; + do + { + if (c == 0) + { + pat--; /* back up to NUL */ + matlen += bracklen; + goto bad_bracket; + } + else if (c == L('\\')) + { + /* *pat == backslash-escaped character */ + bracklen++; + /* If the backslash or backslash-escape ends the string, + bail. The ++pat skips over the backslash escape */ + if (*pat == 0 || *++pat == 0) + { + matlen += bracklen; + goto bad_bracket; + } + } + else if (c == L('[') && *pat == L(':')) /* character class */ + { + pat++; + bracklen++; + in_cclass = 1; + } + else if (in_cclass && c == L(':') && *pat == L(']')) + { + pat++; + bracklen++; + in_cclass = 0; + } + else if (c == L('[') && *pat == L('.')) /* collating symbol */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as collating symbol */ + { + pat++; + bracklen++; + } + in_collsym = 1; + } + else if (in_collsym && c == L('.') && *pat == L(']')) + { + pat++; + bracklen++; + in_collsym = 0; + } + else if (c == L('[') && *pat == L('=')) /* equivalence class */ + { + pat++; + bracklen++; + if (*pat == L(']')) /* right bracket can appear as equivalence class */ + { + pat++; + bracklen++; + } + in_equiv = 1; + } + else if (in_equiv && c == L('=') && *pat == L(']')) + { + pat++; + bracklen++; + in_equiv = 0; + } + else + bracklen++; + } + while ((c = *pat++) != L(']')); + matlen++; /* bracket expression can only match one char */ +bad_bracket: + break; + } + } + + return matlen; +} + +#undef EXTGLOB_PATTERN_P +#undef MATCH_PATTERN_CHAR +#undef MATCHLEN +#undef FOLD +#undef L +#undef LPAREN +#undef RPAREN +#undef INT +#undef CHAR diff --git a/lib/glob/gmisc.c b/lib/glob/gmisc.c index 31906a4f2..a2bca9659 100644 --- a/lib/glob/gmisc.c +++ b/lib/glob/gmisc.c @@ -1,6 +1,6 @@ /* gmisc.c -- miscellaneous pattern matching utility functions for Bash. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne-Again SHell. @@ -35,367 +35,44 @@ #ifndef FNM_CASEFOLD # include "strmatch.h" #endif - -#ifndef LPAREN -# define LPAREN '(' -#endif -#ifndef RPAREN -# define RPAREN ')' -#endif - -#if defined (HANDLE_MULTIBYTE) -#define WLPAREN L'(' -#define WRPAREN L')' +#include "glob.h" /* Make sure these names continue to agree with what's in smatch.c */ extern char *glob_patscan __P((char *, char *, int)); -extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); - -#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) - -/* Return 1 of the first character of WSTRING could match the first - character of pattern WPAT. Wide character version. FLAGS is a - subset of strmatch flags; used to do case-insensitive matching for now. */ -int -match_pattern_wchar (wpat, wstring, flags) - wchar_t *wpat, *wstring; - int flags; -{ - wchar_t wc; - - if (*wstring == 0) - return (*wpat == L'*'); /* XXX - allow only * to match empty string */ - - switch (wc = *wpat++) - { - default: - return (FOLD(*wstring) == FOLD(wc)); - case L'\\': - return (FOLD(*wstring) == FOLD(*wpat)); - case L'?': - return (*wpat == WLPAREN ? 1 : (*wstring != L'\0')); - case L'*': - return (1); - case L'+': - case L'!': - case L'@': - return (*wpat == WLPAREN ? 1 : (FOLD(*wstring) == FOLD(wc))); - case L'[': - return (*wstring != L'\0'); - } -} - -int -wmatchlen (wpat, wmax) - wchar_t *wpat; - size_t wmax; -{ - wchar_t wc; - int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; - - if (*wpat == 0) - return (0); - - matlen = in_cclass = in_collsym = in_equiv = 0; - while (wc = *wpat++) - { - switch (wc) - { - default: - matlen++; - break; - case L'\\': - if (*wpat == 0) - return ++matlen; - else - { - matlen++; - wpat++; - } - break; - case L'?': - if (*wpat == WLPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case L'*': - return (matlen = -1); - case L'+': - case L'!': - case L'@': - if (*wpat == WLPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case L'[': - /* scan for ending `]', skipping over embedded [:...:] */ - bracklen = 1; - wc = *wpat++; - do - { - if (wc == 0) - { - wpat--; /* back up to NUL */ - matlen += bracklen; - goto bad_bracket; - } - else if (wc == L'\\') - { - /* *wpat == backslash-escaped character */ - bracklen++; - /* If the backslash or backslash-escape ends the string, - bail. The ++wpat skips over the backslash escape */ - if (*wpat == 0 || *++wpat == 0) - { - matlen += bracklen; - goto bad_bracket; - } - } - else if (wc == L'[' && *wpat == L':') /* character class */ - { - wpat++; - bracklen++; - in_cclass = 1; - } - else if (in_cclass && wc == L':' && *wpat == L']') - { - wpat++; - bracklen++; - in_cclass = 0; - } - else if (wc == L'[' && *wpat == L'.') /* collating symbol */ - { - wpat++; - bracklen++; - if (*wpat == L']') /* right bracket can appear as collating symbol */ - { - wpat++; - bracklen++; - } - in_collsym = 1; - } - else if (in_collsym && wc == L'.' && *wpat == L']') - { - wpat++; - bracklen++; - in_collsym = 0; - } - else if (wc == L'[' && *wpat == L'=') /* equivalence class */ - { - wpat++; - bracklen++; - if (*wpat == L']') /* right bracket can appear as equivalence class */ - { - wpat++; - bracklen++; - } - in_equiv = 1; - } - else if (in_equiv && wc == L'=' && *wpat == L']') - { - wpat++; - bracklen++; - in_equiv = 0; - } - else - bracklen++; - } - while ((wc = *wpat++) != L']'); - matlen++; /* bracket expression can only match one char */ -bad_bracket: - break; - } - } - return matlen; -} -#endif - -int -extglob_pattern_p (pat) - char *pat; -{ - switch (pat[0]) - { - case '*': - case '+': - case '!': - case '@': - case '?': - return (pat[1] == LPAREN); - default: - return 0; - } - - return 0; -} - -#undef FOLD +/* Compile `gm_loop.c' for single-byte characters. */ +#define CHAR char +#define INT int +#define L(CS) CS +#define EXTGLOB_PATTERN_P extglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_char +#define MATCHLEN umatchlen #define FOLD(c) ((flags & FNM_CASEFOLD) \ ? TOLOWER ((unsigned char)c) \ : ((unsigned char)c)) +#ifndef LPAREN +#define LPAREN '(' +#define RPAREN ')' +#endif +#include "gm_loop.c" -/* Return 1 of the first character of STRING could match the first - character of pattern PAT. Used to avoid n2 calls to strmatch(). - FLAGS is a subset of strmatch flags; used to do case-insensitive - matching for now. */ -int -match_pattern_char (pat, string, flags) - char *pat, *string; - int flags; -{ - char c; +/* Compile `gm_loop.c' again for multibyte characters. */ +#if HANDLE_MULTIBYTE - if (*string == 0) - return (*pat == '*'); /* XXX - allow only * to match empty string */ +#define CHAR wchar_t +#define INT wint_t +#define L(CS) L##CS +#define EXTGLOB_PATTERN_P wextglob_pattern_p +#define MATCH_PATTERN_CHAR match_pattern_wchar +#define MATCHLEN wmatchlen - switch (c = *pat++) - { - default: - return (FOLD(*string) == FOLD(c)); - case '\\': - return (FOLD(*string) == FOLD(*pat)); - case '?': - return (*pat == LPAREN ? 1 : (*string != '\0')); - case '*': - return (1); - case '+': - case '!': - case '@': - return (*pat == LPAREN ? 1 : (FOLD(*string) == FOLD(c))); - case '[': - return (*string != '\0'); - } -} - -int -umatchlen (pat, max) - char *pat; - size_t max; -{ - char c; - int matlen, bracklen, t, in_cclass, in_collsym, in_equiv; +#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) +#define LPAREN L'(' +#define RPAREN L')' +#include "gm_loop.c" - if (*pat == 0) - return (0); +#endif /* HANDLE_MULTIBYTE */ - matlen = in_cclass = in_collsym = in_equiv = 0; - while (c = *pat++) - { - switch (c) - { - default: - matlen++; - break; - case '\\': - if (*pat == 0) - return ++matlen; - else - { - matlen++; - pat++; - } - break; - case '?': - if (*pat == LPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case '*': - return (matlen = -1); - case '+': - case '!': - case '@': - if (*pat == LPAREN) - return (matlen = -1); /* XXX for now */ - else - matlen++; - break; - case '[': - /* scan for ending `]', skipping over embedded [:...:] */ - bracklen = 1; - c = *pat++; - do - { - if (c == 0) - { - pat--; /* back up to NUL */ - matlen += bracklen; - goto bad_bracket; - } - else if (c == '\\') - { - /* *pat == backslash-escaped character */ - bracklen++; - /* If the backslash or backslash-escape ends the string, - bail. The ++pat skips over the backslash escape */ - if (*pat == 0 || *++pat == 0) - { - matlen += bracklen; - goto bad_bracket; - } - } - else if (c == '[' && *pat == ':') /* character class */ - { - pat++; - bracklen++; - in_cclass = 1; - } - else if (in_cclass && c == ':' && *pat == ']') - { - pat++; - bracklen++; - in_cclass = 0; - } - else if (c == '[' && *pat == '.') /* collating symbol */ - { - pat++; - bracklen++; - if (*pat == ']') /* right bracket can appear as collating symbol */ - { - pat++; - bracklen++; - } - in_collsym = 1; - } - else if (in_collsym && c == '.' && *pat == ']') - { - pat++; - bracklen++; - in_collsym = 0; - } - else if (c == '[' && *pat == '=') /* equivalence class */ - { - pat++; - bracklen++; - if (*pat == ']') /* right bracket can appear as equivalence class */ - { - pat++; - bracklen++; - } - in_equiv = 1; - } - else if (in_equiv && c == '=' && *pat == ']') - { - pat++; - bracklen++; - in_equiv = 0; - } - else - bracklen++; - } - while ((c = *pat++) != ']'); - matlen++; /* bracket expression can only match one char */ -bad_bracket: - break; - } - } - - return matlen; -} #if defined (EXTENDED_GLOB) /* Skip characters in PAT and return the final occurrence of DIRSEP. This diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c index 65179e244..2de5acd31 100644 --- a/lib/glob/sm_loop.c +++ b/lib/glob/sm_loop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2011 Free Software Foundation, Inc. +/* Copyright (C) 1991-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -16,9 +16,15 @@ along with Bash. If not, see . */ +struct STRUCT +{ + CHAR *pattern; + CHAR *string; +}; + int FCT __P((CHAR *, CHAR *, int)); -static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, int)); +static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int)); static CHAR *PARSE_COLLSYM __P((CHAR *, INT *)); static CHAR *BRACKMATCH __P((CHAR *, U_CHAR, int)); static int EXTMATCH __P((INT, CHAR *, CHAR *, CHAR *, CHAR *, int)); @@ -39,15 +45,16 @@ FCT (pattern, string, flags) se = string + STRLEN ((XCHAR *)string); pe = pattern + STRLEN ((XCHAR *)pattern); - return (GMATCH (string, se, pattern, pe, flags)); + return (GMATCH (string, se, pattern, pe, (struct STRUCT *)NULL, flags)); } /* Match STRING against the filename pattern PATTERN, returning zero if it matches, FNM_NOMATCH if not. */ static int -GMATCH (string, se, pattern, pe, flags) +GMATCH (string, se, pattern, pe, ends, flags) CHAR *string, *se; CHAR *pattern, *pe; + struct STRUCT *ends; int flags; { CHAR *p, *n; /* pattern, string */ @@ -103,6 +110,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); break; case L('\\'): /* backslash escape removes special meaning */ + if (p == pe && sc == '\\' && (n+1 == se)) + break; + if (p == pe) return FNM_NOMATCH; @@ -118,7 +128,16 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); return FNM_NOMATCH; break; - case '*': /* Match zero or more characters */ + case L('*'): /* Match zero or more characters */ + /* See below for the reason for using this. It avoids backtracking + back to a previous `*'. Picked up from glibc. */ + if (ends != NULL) + { + ends->pattern = p - 1; + ends->string = n; + return (0); + } + if ((flags & FNM_PERIOD) && sc == L('.') && (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) /* `*' cannot match a `.' if it is the first character of the @@ -141,17 +160,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { CHAR *newn; -#if 0 - for (newn = n; newn < se; ++newn) - { - if (EXTMATCH (c, newn, se, p, pe, flags) == 0) - return (0); - } -#else /* We can match 0 or 1 times. If we match, return success */ if (EXTMATCH (c, n, se, p, pe, flags) == 0) return (0); -#endif /* We didn't match the extended glob pattern, but that's OK, since we can match 0 or 1 occurrences. @@ -241,7 +252,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { while (n < se && *n != L('/')) ++n; - if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, flags) == 0)) + if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, NULL, flags) == 0)) return 0; return FNM_NOMATCH; /* XXX */ } @@ -250,10 +261,13 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); { U_CHAR c1; const CHAR *endp; + struct STRUCT end; + end.pattern = NULL; endp = MEMCHR (n, (flags & FNM_PATHNAME) ? L('/') : L('\0'), se - n); if (endp == 0) endp = se; + c1 = ((flags & FNM_NOESCAPE) == 0 && c == L('\\')) ? *p : c; c1 = FOLD (c1); for (--p; n < endp; ++n) @@ -272,9 +286,24 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); continue; /* Otherwise, we just recurse. */ - if (GMATCH (n, se, p, pe, flags & ~FNM_PERIOD) == 0) - return (0); + if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0) + { + if (end.pattern == NULL) + return (0); + break; + } + } + /* This is a clever idea from glibc, used to avoid backtracking + to a `*' that appears earlier in the pattern. We get away + without saving se and pe because they are always the same, + even in the recursive calls to gmatch */ + if (end.pattern != NULL) + { + p = end.pattern; + n = end.string; + continue; } + return FNM_NOMATCH; } @@ -355,11 +384,13 @@ BRACKMATCH (p, test, flags) { register CHAR cstart, cend, c; register int not; /* Nonzero if the sense of the character class is inverted. */ - int brcnt, forcecoll; + int brcnt, brchr, forcecoll; INT pc; CHAR *savep; + U_CHAR orig_test; - test = FOLD (test); + orig_test = test; + test = FOLD (orig_test); savep = p; @@ -424,12 +455,23 @@ BRACKMATCH (p, test, flags) { bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR)); *(ccname + (close - p - 1)) = L('\0'); - pc = IS_CCLASS (test, (XCHAR *)ccname); + pc = IS_CCLASS (orig_test, (XCHAR *)ccname); } if (pc == -1) - pc = 0; + { + /* CCNAME is not a valid character class in the current + locale. In addition to noting no match (pc = 0), we have + a choice about what to do with the invalid charclass. + Posix leaves the behavior unspecified, but we're going + to skip over the charclass and keep going instead of + testing ORIG_TEST against each character in the class + string. If we don't want to do that, take out the update + of P. */ + pc = 0; + p = close + 2; + } else - p = close + 2; + p = close + 2; /* move past the closing `]' */ free (ccname); } @@ -546,16 +588,26 @@ matched: /* Skip the rest of the [...] that already matched. */ c = *--p; brcnt = 1; + brchr = 0; while (brcnt > 0) { + int oc; + /* A `[' without a matching `]' is just another character to match. */ if (c == L('\0')) return ((test == L('[')) ? savep : (CHAR *)0); + oc = c; c = *p++; if (c == L('[') && (*p == L('=') || *p == L(':') || *p == L('.'))) - brcnt++; - else if (c == L(']')) + { + brcnt++; + brchr = *p; + } + /* we only want to check brchr if we set it above */ + else if (c == L(']') && brcnt > 1 && brchr != 0 && oc == brchr) + brcnt--; + else if (c == L(']') && brcnt == 1) brcnt--; else if (!(flags & FNM_NOESCAPE) && c == L('\\')) { @@ -748,7 +800,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); /* If we can get away with no matches, don't even bother. Just call GMATCH on the rest of the pattern and return success if it succeeds. */ - if (xc == L('*') && (GMATCH (s, se, prest, pe, flags) == 0)) + if (xc == L('*') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) return 0; /* OK, we have to do this the hard way. First, we make sure one of @@ -761,7 +813,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* Match this substring (S -> SREST) against this subpattern (psub -> pnext - 1) */ - m1 = GMATCH (s, srest, psub, pnext - 1, flags) == 0; + m1 = GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0; /* OK, we matched a subpattern, so make sure the rest of the string matches the rest of the pattern. Also handle multiple matches of the pattern. */ @@ -769,8 +821,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) || - (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0); + m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) || + (s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0); } if (m1 && m2) return (0); @@ -785,7 +837,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); /* If we can get away with no matches, don't even bother. Just call gmatch on the rest of the pattern and return success if it succeeds. */ - if (xc == L('?') && (GMATCH (s, se, prest, pe, flags) == 0)) + if (xc == L('?') && (GMATCH (s, se, prest, pe, NULL, flags) == 0)) return 0; /* OK, we have to do this the hard way. First, we see if one of @@ -799,8 +851,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 && - GMATCH (srest, se, prest, pe, xflags) == 0) + if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 && + GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); } if (pnext == prest) @@ -816,14 +868,21 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); { pnext = PATSCAN (psub, pe, L('|')); /* If one of the patterns matches, just bail immediately. */ - if (m1 = (GMATCH (s, srest, psub, pnext - 1, flags) == 0)) + if (m1 = (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0)) break; if (pnext == prest) break; } + + /* If nothing matched, but the string starts with a period and we + need to match periods explicitly, don't return this as a match, + even for negation. Might need to do this only if srest == s. */ + if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD)) + return (FNM_NOMATCH); + /* if srest > s, we are not at start of string */ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags; - if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0) + if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0) return (0); } return (FNM_NOMATCH); @@ -847,6 +906,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); #undef PATSCAN #undef STRCOMPARE #undef EXTMATCH +#undef STRUCT #undef BRACKMATCH #undef STRCHR #undef STRCOLL diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index edc5b95d0..025fe4fca 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -1,7 +1,7 @@ /* strmatch.c -- ksh-like extended pattern matching for the shell and filename globbing. */ -/* Copyright (C) 1991-2011 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -144,25 +144,33 @@ static char const *const cclass_name[] = #define N_CHAR_CLASS (sizeof(cclass_name) / sizeof (cclass_name[0])) -static int -is_cclass (c, name) - int c; +static enum char_class +is_valid_cclass (name) const char *name; { - enum char_class char_class = CC_NO_CLASS; - int i, result; + enum char_class ret; + int i; + + ret = CC_NO_CLASS; for (i = 1; i < N_CHAR_CLASS; i++) { if (STREQ (name, cclass_name[i])) { - char_class = (enum char_class)i; + ret = (enum char_class)i; break; } } - if (char_class == 0) - return -1; + return ret; +} + +static int +cclass_test (c, char_class) + int c; + enum char_class char_class; +{ + int result; switch (char_class) { @@ -215,6 +223,22 @@ is_cclass (c, name) return result; } + +static int +is_cclass (c, name) + int c; + const char *name; +{ + enum char_class char_class; + int result; + + char_class = is_valid_cclass (name); + if (char_class == CC_NO_CLASS) + return -1; + + result = cclass_test (c, char_class); + return (result); +} /* Now include `sm_loop.c' for single-byte characters. */ /* The result of FOLD is an `unsigned char' */ @@ -230,6 +254,7 @@ is_cclass (c, name) #define PATSCAN glob_patscan #define STRCOMPARE strcompare #define EXTMATCH extmatch +#define STRUCT smat_struct #define STRCHR(S, C) strchr((S), (C)) #define MEMCHR(S, C, N) memchr((S), (C), (N)) #define STRCOLL(S1, S2) strcoll((S1), (S2)) @@ -355,6 +380,50 @@ is_wcclass (wc, name) return (iswctype (wc, desc)); } +/* Return 1 if there are no char class [:class:] expressions (degenerate case) + or only posix-specified (C locale supported) char class expressions in + PATTERN. These are the ones where it's safe to punt to the single-byte + code, since wide character support allows locale-defined char classes. + This only uses single-byte code, but is only needed to support multibyte + locales. */ +static int +posix_cclass_only (pattern) + char *pattern; +{ + char *p, *p1; + char cc[16]; /* sufficient for all valid posix char class names */ + enum char_class valid; + + p = pattern; + while (p = strchr (p, '[')) + { + if (p[1] != ':') + { + p++; + continue; + } + p += 2; /* skip past "[:" */ + /* Find end of char class expression */ + for (p1 = p; *p1; p1++) + if (*p1 == ':' && p1[1] == ']') + break; + if (*p1 == 0) /* no char class expression found */ + break; + /* Find char class name and validate it against posix char classes */ + if ((p1 - p) >= sizeof (cc)) + return 0; + bcopy (p, cc, p1 - p); + cc[p1 - p] = '\0'; + valid = is_valid_cclass (cc); + if (valid == CC_NO_CLASS) + return 0; /* found unrecognized char class name */ + + p = p1 + 2; /* found posix char class name */ + } + + return 1; /* no char class names or only posix */ +} + /* Now include `sm_loop.c' for multibyte characters. */ #define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) #define FCT internal_wstrmatch @@ -365,6 +434,7 @@ is_wcclass (wc, name) #define PATSCAN glob_patscan_wc #define STRCOMPARE wscompare #define EXTMATCH extmatch_wc +#define STRUCT wcsmat_struct #define STRCHR(S, C) wcschr((S), (C)) #define MEMCHR(S, C, N) wmemchr((S), (C), (N)) #define STRCOLL(S1, S2) wcscoll((S1), (S2)) @@ -390,10 +460,10 @@ xstrmatch (pattern, string, flags) wchar_t *wpattern, *wstring; size_t plen, slen, mplen, mslen; - if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0) + if (MB_CUR_MAX == 1) return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); - if (MB_CUR_MAX == 1) + if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern) ) return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags)); n = xdupmbstowcs (&wpattern, NULL, pattern); diff --git a/lib/glob/strmatch.h b/lib/glob/strmatch.h index 5c99e0cae..aee00cc8e 100644 --- a/lib/glob/strmatch.h +++ b/lib/glob/strmatch.h @@ -46,6 +46,8 @@ #define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ #define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */ +#define FNM_FIRSTCHAR (1 << 6) /* Match only the first character */ + /* Value returned by `strmatch' if STRING does not match PATTERN. */ #undef FNM_NOMATCH diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index 053305fcd..88d777e5a 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -81,7 +81,7 @@ #else # include #endif - +#include #include /* Define getpagesize () if the system does not. */ @@ -100,6 +100,12 @@ # include "watch.h" #endif +#ifdef powerof2 +# undef powerof2 +#endif +/* Could also use (((x) & -(x)) == (x)) */ +#define powerof2(x) ((((x) - 1) & (x)) == 0) + /* System-specific omissions. */ #ifdef HPUX # define NO_VALLOC @@ -240,6 +246,10 @@ static const unsigned long binsizes[NBUCKETS] = { /* binsizes[x] == (1 << ((x) + 3)) */ #define binsize(x) binsizes[(x)] +#if !defined (errno) +extern int errno; +#endif + /* Declarations for internal functions */ static PTR_T internal_malloc __P((size_t, const char *, int, int)); static PTR_T internal_realloc __P((PTR_T, size_t, const char *, int, int)); @@ -1033,11 +1043,15 @@ internal_realloc (mem, n, file, line, flags) _mstats.bytesreq += (n < tocopy) ? 0 : n - tocopy; #endif + /* If we're reallocating to the same size as previously, return now */ + if (n == p->mh_nbytes) + return mem; + /* See if desired size rounds to same power of 2 as actual size. */ nbytes = ALLOCATED_BYTES(n); /* If ok, use the same block, just marking its size as changed. */ - if (RIGHT_BUCKET(nbytes, nunits)) + if (RIGHT_BUCKET(nbytes, nunits) || RIGHT_BUCKET(nbytes, nunits-1)) { #if 0 m = (char *)mem + p->mh_nbytes; @@ -1121,6 +1135,57 @@ internal_memalign (alignment, size, file, line, flags) return aligned; } +int +posix_memalign (memptr, alignment, size) + void **memptr; + size_t alignment, size; +{ + void *mem; + + /* Perform posix-mandated error checking here */ + if ((alignment % sizeof (void *) != 0) || alignment == 0) + return EINVAL; + else if (powerof2 (alignment) == 0) + return EINVAL; + + mem = internal_memalign (alignment, size, (char *)0, 0, 0); + if (mem != 0) + { + *memptr = mem; + return 0; + } + return ENOMEM; +} + +size_t +malloc_usable_size (mem) + void *mem; +{ + register union mhead *p; + register char *ap; + register int maxbytes; + + + if ((ap = (char *)mem) == 0) + return 0; + + /* Find the true start of the memory block to discover which bin */ + p = (union mhead *) ap - 1; + if (p->mh_alloc == ISMEMALIGN) + { + ap -= p->mh_nbytes; + p = (union mhead *) ap - 1; + } + + /* XXX - should we return 0 if ISFREE? */ + maxbytes = binsize(p->mh_index); + + /* So the usable size is the maximum number of bytes in the bin less the + malloc overhead */ + maxbytes -= MOVERHEAD + MSLOP; + return (maxbytes); +} + #if !defined (NO_VALLOC) /* This runs into trouble with getpagesize on HPUX, and Multimax machines. Patching out seems cleaner than the ugly fix needed. */ diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in index 1291249d5..b2358c67a 100644 --- a/lib/readline/Makefile.in +++ b/lib/readline/Makefile.in @@ -64,7 +64,8 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib -CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \ + $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS} .c.o: ${RM} $@ diff --git a/lib/readline/bind.c b/lib/readline/bind.c index f1098c48b..2e05b4605 100644 --- a/lib/readline/bind.c +++ b/lib/readline/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -80,6 +80,8 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ ( static void _rl_init_file_error (); #endif +static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *)); + static char *_rl_read_file PARAMS((char *, size_t *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); @@ -87,6 +89,9 @@ static int glean_key_from_name PARAMS((char *)); static int find_boolean_var PARAMS((const char *)); static int find_string_var PARAMS((const char *)); +static const char *boolean_varname PARAMS((int)); +static const char *string_varname PARAMS((int)); + static char *_rl_get_string_variable_value PARAMS((const char *)); static int substring_member_of_array PARAMS((const char *, const char * const *)); @@ -95,6 +100,16 @@ static int currently_reading_init_file; /* used only in this file */ static int _rl_prefer_visible_bell = 1; +#define OP_EQ 1 +#define OP_NE 2 +#define OP_GT 3 +#define OP_GE 4 +#define OP_LT 5 +#define OP_LE 6 + +#define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>') +#define CMPSTART(c) ((c) == '=' || (c) == '!') + /* **************************************************************** */ /* */ /* Binding keys */ @@ -105,10 +120,7 @@ static int _rl_prefer_visible_bell = 1; Add NAME to the list of named functions. Make FUNCTION be the function that gets called. If KEY is not -1, then bind it. */ int -rl_add_defun (name, function, key) - const char *name; - rl_command_func_t *function; - int key; +rl_add_defun (const char *name, rl_command_func_t *function, int key) { if (key != -1) rl_bind_key (key, function); @@ -118,9 +130,7 @@ rl_add_defun (name, function, key) /* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */ int -rl_bind_key (key, function) - int key; - rl_command_func_t *function; +rl_bind_key (int key, rl_command_func_t *function) { char keyseq[3]; int l; @@ -168,10 +178,7 @@ rl_bind_key (key, function) /* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid KEY. */ int -rl_bind_key_in_map (key, function, map) - int key; - rl_command_func_t *function; - Keymap map; +rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map) { int result; Keymap oldmap; @@ -184,57 +191,44 @@ rl_bind_key_in_map (key, function, map) } /* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right - now, this is always used to attempt to bind the arrow keys, hence the - check for rl_vi_movement_mode. */ + now, this is always used to attempt to bind the arrow keys. */ int -rl_bind_key_if_unbound_in_map (key, default_func, kmap) - int key; - rl_command_func_t *default_func; - Keymap kmap; +rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap) { - char keyseq[2]; + char *keyseq; - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; + keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)); } int -rl_bind_key_if_unbound (key, default_func) - int key; - rl_command_func_t *default_func; +rl_bind_key_if_unbound (int key, rl_command_func_t *default_func) { - char keyseq[2]; + char *keyseq; - keyseq[0] = (unsigned char)key; - keyseq[1] = '\0'; + keyseq = rl_untranslate_keyseq ((unsigned char)key); return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } /* Make KEY do nothing in the currently selected keymap. - Returns non-zero in case of error. */ + Returns non-zero in case of error. This is not the same as self-insert; + this makes it a dead key. */ int -rl_unbind_key (key) - int key; +rl_unbind_key (int key) { return (rl_bind_key (key, (rl_command_func_t *)NULL)); } -/* Make KEY do nothing in MAP. - Returns non-zero in case of error. */ +/* Make KEY do nothing in MAP. Returns non-zero in case of error. */ int -rl_unbind_key_in_map (key, map) - int key; - Keymap map; +rl_unbind_key_in_map (int key, Keymap map) { return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map)); } /* Unbind all keys bound to FUNCTION in MAP. */ int -rl_unbind_function_in_map (func, map) - rl_command_func_t *func; - Keymap map; +rl_unbind_function_in_map (rl_command_func_t *func, Keymap map) { register int i, rval; @@ -249,10 +243,9 @@ rl_unbind_function_in_map (func, map) return rval; } +/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */ int -rl_unbind_command_in_map (command, map) - const char *command; - Keymap map; +rl_unbind_command_in_map (const char *command, Keymap map) { rl_command_func_t *func; @@ -266,9 +259,7 @@ rl_unbind_command_in_map (command, map) FUNCTION, starting in the current keymap. This makes new keymaps as necessary. */ int -rl_bind_keyseq (keyseq, function) - const char *keyseq; - rl_command_func_t *function; +rl_bind_keyseq (const char *keyseq, rl_command_func_t *function) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap)); } @@ -277,20 +268,14 @@ rl_bind_keyseq (keyseq, function) FUNCTION. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_bind_keyseq_in_map (keyseq, function, map) - const char *keyseq; - rl_command_func_t *function; - Keymap map; +rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } /* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */ int -rl_set_key (keyseq, function, map) - const char *keyseq; - rl_command_func_t *function; - Keymap map; +rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map) { return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map)); } @@ -299,16 +284,24 @@ rl_set_key (keyseq, function, map) now, this is always used to attempt to bind the arrow keys, hence the check for rl_vi_movement_mode. */ int -rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap) - const char *keyseq; - rl_command_func_t *default_func; - Keymap kmap; +rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap) { rl_command_func_t *func; + char *keys; + int keys_len; if (keyseq) { - func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL); + /* Handle key sequences that require translations and `raw' ones that + don't. This might be a problem with backslashes. */ + keys = (char *)xmalloc (1 + (2 * strlen (keyseq))); + if (rl_translate_keyseq (keyseq, keys, &keys_len)) + { + xfree (keys); + return -1; + } + func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL); + xfree (keys); #if defined (VI_MODE) if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode) #else @@ -322,9 +315,7 @@ rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap) } int -rl_bind_keyseq_if_unbound (keyseq, default_func) - const char *keyseq; - rl_command_func_t *default_func; +rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func) { return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap)); } @@ -333,9 +324,7 @@ rl_bind_keyseq_if_unbound (keyseq, default_func) the string of characters MACRO. This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_macro_bind (keyseq, macro, map) - const char *keyseq, *macro; - Keymap map; +rl_macro_bind (const char *keyseq, const char *macro, Keymap map) { char *macro_keys; int macro_keys_len; @@ -357,16 +346,13 @@ rl_macro_bind (keyseq, macro, map) a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps as necessary. The initial place to do bindings is in MAP. */ int -rl_generic_bind (type, keyseq, data, map) - int type; - const char *keyseq; - char *data; - Keymap map; +rl_generic_bind (int type, const char *keyseq, char *data, Keymap map) { char *keys; - int keys_len; + int keys_len, prevkey; register int i; KEYMAP_ENTRY k; + Keymap prevmap; k.function = 0; @@ -389,12 +375,18 @@ rl_generic_bind (type, keyseq, data, map) return -1; } + prevmap = map; + prevkey = keys[0]; + /* Bind keys, making new keymaps as necessary. */ for (i = 0; i < keys_len; i++) { unsigned char uc = keys[i]; int ic; + if (i > 0) + prevkey = ic; + ic = uc; if (ic < 0 || ic >= KEYMAP_SIZE) { @@ -406,7 +398,10 @@ rl_generic_bind (type, keyseq, data, map) { ic = UNMETA (ic); if (map[ESC].type == ISKMAP) - map = FUNCTION_TO_KEYMAP (map, ESC); + { + prevmap = map; + map = FUNCTION_TO_KEYMAP (map, ESC); + } } if ((i + 1) < keys_len) @@ -425,6 +420,7 @@ rl_generic_bind (type, keyseq, data, map) map[ic].type = ISKMAP; map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap()); } + prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); /* The dispatch code will return this function if no matching key sequence is found in the keymap. This (with a little @@ -444,6 +440,7 @@ rl_generic_bind (type, keyseq, data, map) xfree ((char *)map[ic].function); else if (map[ic].type == ISKMAP) { + prevmap = map; map = FUNCTION_TO_KEYMAP (map, ic); ic = ANYOTHERKEY; /* If we're trying to override a keymap with a null function @@ -460,7 +457,28 @@ rl_generic_bind (type, keyseq, data, map) } rl_binding_keymap = map; + + } + + /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap + points to the keymap where we unbound the key (sanity check), and the + current binding keymap is empty (rl_empty_keymap() returns non-zero), + and the binding keymap has ANYOTHERKEY set with type == ISFUNC + (overridden function), delete the now-empty keymap, take the previously- + overridden function and remove the override. */ + /* Right now, this only works one level back. */ + if (type == ISFUNC && data == 0 && + prevmap[prevkey].type == ISKMAP && + (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) && + rl_binding_keymap[ANYOTHERKEY].type == ISFUNC && + rl_empty_keymap (rl_binding_keymap)) + { + prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type; + prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function; + rl_discard_keymap (rl_binding_keymap); + rl_binding_keymap = prevmap; } + xfree (keys); return 0; } @@ -469,10 +487,7 @@ rl_generic_bind (type, keyseq, data, map) an array of characters. LEN gets the final length of ARRAY. Return non-zero if there was an error parsing SEQ. */ int -rl_translate_keyseq (seq, array, len) - const char *seq; - char *array; - int *len; +rl_translate_keyseq (const char *seq, char *array, int *len) { register int i, c, l, temp; @@ -483,7 +498,10 @@ rl_translate_keyseq (seq, array, len) c = seq[++i]; if (c == 0) - break; + { + array[l++] = '\\'; /* preserve trailing backslash */ + break; + } /* Handle \C- and \M- prefixes. */ if ((c == 'C' || c == 'M') && seq[i + 1] == '-') @@ -494,8 +512,6 @@ rl_translate_keyseq (seq, array, len) array[l++] = ESC; /* ESC is meta-prefix */ i += 5; array[l++] = CTRL (_rl_to_upper (seq[i])); - if (seq[i] == '\0') - i--; } else if (c == 'M') { @@ -524,6 +540,8 @@ rl_translate_keyseq (seq, array, len) /* Special hack for C-?... */ array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i])); } + if (seq[i] == '\0') + break; continue; } @@ -596,8 +614,7 @@ rl_translate_keyseq (seq, array, len) } static int -_rl_isescape (c) - int c; +_rl_isescape (int c) { switch (c) { @@ -613,8 +630,7 @@ _rl_isescape (c) } static int -_rl_escchar (c) - int c; +_rl_escchar (int c) { switch (c) { @@ -630,8 +646,7 @@ _rl_escchar (c) } char * -rl_untranslate_keyseq (seq) - int seq; +rl_untranslate_keyseq (int seq) { static char kseq[16]; int i, c; @@ -681,9 +696,7 @@ rl_untranslate_keyseq (seq) } char * -_rl_untranslate_macro_value (seq, use_escapes) - char *seq; - int use_escapes; +_rl_untranslate_macro_value (char *seq, int use_escapes) { char *ret, *r, *s; int c; @@ -742,8 +755,7 @@ _rl_untranslate_macro_value (seq, use_escapes) If STRING doesn't have a matching function, then a NULL pointer is returned. */ rl_command_func_t * -rl_named_function (string) - const char *string; +rl_named_function (const char *string) { register int i; @@ -760,18 +772,15 @@ rl_named_function (string) used. TYPE, if non-NULL, is a pointer to an int which will receive the type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap), or ISMACR (macro). */ -rl_command_func_t * -rl_function_of_keyseq (keyseq, map, type) - const char *keyseq; - Keymap map; - int *type; +static rl_command_func_t * +_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type) { register int i; if (map == 0) map = _rl_keymap; - for (i = 0; keyseq && keyseq[i]; i++) + for (i = 0; keyseq && i < len; i++) { unsigned char ic = keyseq[i]; @@ -823,6 +832,18 @@ rl_function_of_keyseq (keyseq, map, type) return ((rl_command_func_t *) NULL); } +rl_command_func_t * +rl_function_of_keyseq (const char *keyseq, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type); +} + +rl_command_func_t * +rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type) +{ + return _rl_function_of_keyseq_internal (keyseq, len, map, type); +} + /* The last key bindings file read. */ static char *last_readline_init_file = (char *)NULL; @@ -835,17 +856,20 @@ static int current_readline_init_lineno; The size of the buffer is returned in *SIZEP. Returns NULL if any errors were encountered. */ static char * -_rl_read_file (filename, sizep) - char *filename; - size_t *sizep; +_rl_read_file (char *filename, size_t *sizep) { struct stat finfo; size_t file_size; char *buffer; int i, file; - if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0) - return ((char *)NULL); + file = -1; + if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) + { + if (file >= 0) + close (file); + return ((char *)NULL); + } file_size = (size_t)finfo.st_size; @@ -882,8 +906,7 @@ _rl_read_file (filename, sizep) /* Re-read the current keybindings file. */ int -rl_re_read_init_file (count, ignore) - int count, ignore; +rl_re_read_init_file (int count, int ignore) { int r; r = rl_read_init_file ((const char *)NULL); @@ -900,8 +923,7 @@ rl_re_read_init_file (count, ignore) If the file existed and could be opened and read, 0 is returned, otherwise errno is returned. */ int -rl_read_init_file (filename) - const char *filename; +rl_read_init_file (const char *filename) { /* Default the filename. */ if (filename == 0) @@ -926,9 +948,7 @@ rl_read_init_file (filename) } static int -_rl_read_init_file (filename, include_level) - const char *filename; - int include_level; +_rl_read_init_file (const char *filename, int include_level) { register int i; char *buffer, *openname, *line, *end; @@ -1025,6 +1045,62 @@ _rl_init_file_error (va_alist) va_end (args); } +/* **************************************************************** */ +/* */ +/* Parser Helper Functions */ +/* */ +/* **************************************************************** */ + +static int +parse_comparison_op (s, indp) + const char *s; + int *indp; +{ + int i, peekc, op; + + if (OPSTART (s[*indp]) == 0) + return -1; + i = *indp; + peekc = s[i] ? s[i+1] : 0; + op = -1; + + if (s[i] == '=') + { + op = OP_EQ; + if (peekc == '=') + i++; + i++; + } + else if (s[i] == '!' && peekc == '=') + { + op = OP_NE; + i += 2; + } + else if (s[i] == '<' && peekc == '=') + { + op = OP_LE; + i += 2; + } + else if (s[i] == '>' && peekc == '=') + { + op = OP_GE; + i += 2; + } + else if (s[i] == '<') + { + op = OP_LT; + i += 1; + } + else if (s[i] == '>') + { + op = OP_GT; + i += 1; + } + + *indp = i; + return op; +} + /* **************************************************************** */ /* */ /* Parser Directives */ @@ -1055,10 +1131,11 @@ static int if_stack_size; /* Push _rl_parsing_conditionalized_out, and set parser state based on ARGS. */ static int -parser_if (args) - char *args; +parser_if (char *args) { - register int i; + int i, llen, boolvar, strvar; + + boolvar = strvar = -1; /* Push parser state. */ if (if_stack_depth + 1 >= if_stack_size) @@ -1075,6 +1152,8 @@ parser_if (args) if (_rl_parsing_conditionalized_out) return 0; + llen = strlen (args); + /* Isolate first argument. */ for (i = 0; args[i] && !whitespace (args[i]); i++); @@ -1117,10 +1196,138 @@ parser_if (args) _rl_parsing_conditionalized_out = mode != rl_editing_mode; } #endif /* VI_MODE */ + else if (_rl_strnicmp (args, "version", 7) == 0) + { + int rlversion, versionarg, op, previ, major, minor; + + _rl_parsing_conditionalized_out = 1; + rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR; + /* if "version" is separated from the operator by whitespace, or the + operand is separated from the operator by whitespace, restore it. + We're more liberal with allowed whitespace for this variable. */ + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = 7; whitespace (args[i]); i++) + ; + if (OPSTART(args[i]) == 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op <= 0) + { + _rl_init_file_error ("comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0 || _rl_digit_p (args[i]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+i); + return 0; + } + major = minor = 0; + previ = i; + for ( ; args[i] && _rl_digit_p (args[i]); i++) + major = major*10 + _rl_digit_value (args[i]); + if (args[i] == '.') + { + if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0) + { + _rl_init_file_error ("numeric argument expected, found `%s'", args+previ); + return 0; + } + for (++i; args[i] && _rl_digit_p (args[i]); i++) + minor = minor*10 + _rl_digit_value (args[i]); + } + /* optional - check for trailing garbage on the line, allow whitespace + and a trailing comment */ + previ = i; + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] && args[i] != '#') + { + _rl_init_file_error ("trailing garbage on line: `%s'", args+previ); + return 0; + } + versionarg = major*10 + minor; + + switch (op) + { + case OP_EQ: + _rl_parsing_conditionalized_out = rlversion == versionarg; + break; + case OP_NE: + _rl_parsing_conditionalized_out = rlversion != versionarg; + break; + case OP_GT: + _rl_parsing_conditionalized_out = rlversion > versionarg; + break; + case OP_GE: + _rl_parsing_conditionalized_out = rlversion >= versionarg; + break; + case OP_LT: + _rl_parsing_conditionalized_out = rlversion < versionarg; + break; + case OP_LE: + _rl_parsing_conditionalized_out = rlversion <= versionarg; + break; + } + } /* Check to see if the first word in ARGS is the same as the value stored in rl_readline_name. */ else if (_rl_stricmp (args, rl_readline_name) == 0) _rl_parsing_conditionalized_out = 0; + else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0) + { + int op, previ; + size_t vlen; + const char *vname; + char *valuearg, *vval, prevc; + + _rl_parsing_conditionalized_out = 1; + vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar); + vlen = strlen (vname); + if (i > 0 && i <= llen && args[i-1] == '\0') + args[i-1] = ' '; + args[llen] = '\0'; /* just in case */ + for (i = vlen; whitespace (args[i]); i++) + ; + if (CMPSTART(args[i]) == 0) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line"); + return 0; + } + previ = i; + op = parse_comparison_op (args, &i); + if (op != OP_EQ && op != OP_NE) + { + _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ); + return 0; + } + for ( ; args[i] && whitespace (args[i]); i++) + ; + if (args[i] == 0) + { + _rl_init_file_error ("argument expected, found `%s'", args+i); + return 0; + } + previ = i; + valuearg = args + i; + for ( ; args[i] && whitespace (args[i]) == 0; i++) + ; + prevc = args[i]; + args[i] = '\0'; /* null-terminate valuearg */ + vval = rl_variable_value (vname); + if (op == OP_EQ) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0; + else if (op == OP_NE) + _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0; + args[i] = prevc; + } else _rl_parsing_conditionalized_out = 1; return 0; @@ -1128,8 +1335,7 @@ parser_if (args) /* Invert the current parser state if there is anything on the stack. */ static int -parser_else (args) - char *args; +parser_else (char *args) { register int i; @@ -1159,8 +1365,7 @@ parser_else (args) /* Terminate a conditional, popping the value of _rl_parsing_conditionalized_out from the stack. */ static int -parser_endif (args) - char *args; +parser_endif (char *args) { if (if_stack_depth) _rl_parsing_conditionalized_out = if_stack[--if_stack_depth]; @@ -1170,8 +1375,7 @@ parser_endif (args) } static int -parser_include (args) - char *args; +parser_include (char *args) { const char *old_init_file; char *e; @@ -1211,8 +1415,7 @@ static const struct { /* Handle a parser directive. STATEMENT is the line of the directive without any leading `$'. */ static int -handle_parser_directive (statement) - char *statement; +handle_parser_directive (char *statement) { register int i; char *directive, *args; @@ -1249,9 +1452,7 @@ handle_parser_directive (statement) /* Start at STRING[START] and look for DELIM. Return I where STRING[I] == DELIM or STRING[I] == 0. DELIM is usually a double quote. */ static int -_rl_skip_to_delim (string, start, delim) - char *string; - int start, delim; +_rl_skip_to_delim (char *string, int start, int delim) { int i, c, passc; @@ -1283,8 +1484,7 @@ _rl_skip_to_delim (string, start, delim) a variable binding command looks like: set variable value. A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */ int -rl_parse_and_bind (string) - char *string; +rl_parse_and_bind (char *string) { char *funname, *kname; register int c, i; @@ -1328,6 +1528,12 @@ rl_parse_and_bind (string) /* Advance to the colon (:) or whitespace which separates the two objects. */ for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ ); + if (i == 0) + { + _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string); + return 1; + } + equivalency = (c == ':' && string[i + 1] == '='); foundsep = c != 0; @@ -1406,6 +1612,11 @@ remove_trailing: i = _rl_skip_to_delim (string, i+1, *funname); if (string[i]) i++; + else + { + _rl_init_file_error ("`%s': missing closing quote for macro", funname); + return 1; + } } /* Advance to the end of the string. */ @@ -1583,8 +1794,7 @@ static const struct { }; static int -find_boolean_var (name) - const char *name; +find_boolean_var (const char *name) { register int i; @@ -1594,12 +1804,17 @@ find_boolean_var (name) return -1; } +static const char * +boolean_varname (int i) +{ + return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL); +} + /* Hooks for handling special boolean variables, where a function needs to be called or another variable needs to be changed when they're changed. */ static void -hack_special_boolean_var (i) - int i; +hack_special_boolean_var (int i) { const char *name; @@ -1668,8 +1883,7 @@ static const struct { }; static int -find_string_var (name) - const char *name; +find_string_var (const char *name) { register int i; @@ -1679,12 +1893,17 @@ find_string_var (name) return -1; } +static const char * +string_varname (int i) +{ + return ((i >= 0) ? string_varlist[i].name : (char *)NULL); +} + /* A boolean value that can appear in a `set variable' command is true if the value is null or empty, `on' (case-insensitive), or "1". Any other values result in 0 (false). */ static int -bool_to_int (value) - const char *value; +bool_to_int (const char *value) { return (value == 0 || *value == '\0' || (_rl_stricmp (value, "on") == 0) || @@ -1692,8 +1911,7 @@ bool_to_int (value) } char * -rl_variable_value (name) - const char *name; +rl_variable_value (const char *name) { register int i; @@ -1711,8 +1929,7 @@ rl_variable_value (name) } int -rl_variable_bind (name, value) - const char *name, *value; +rl_variable_bind (const char *name, const char *value) { register int i; int v; @@ -1743,8 +1960,7 @@ rl_variable_bind (name, value) } static int -sv_editmode (value) - const char *value; +sv_editmode (const char *value) { if (_rl_strnicmp (value, "vi", 2) == 0) { @@ -1764,8 +1980,7 @@ sv_editmode (value) } static int -sv_combegin (value) - const char *value; +sv_combegin (const char *value) { if (value && *value) { @@ -1777,8 +1992,7 @@ sv_combegin (value) } static int -sv_dispprefix (value) - const char *value; +sv_dispprefix (const char *value) { int nval = 0; @@ -1793,8 +2007,7 @@ sv_dispprefix (value) } static int -sv_compquery (value) - const char *value; +sv_compquery (const char *value) { int nval = 100; @@ -1809,8 +2022,7 @@ sv_compquery (value) } static int -sv_compwidth (value) - const char *value; +sv_compwidth (const char *value) { int nval = -1; @@ -1822,8 +2034,7 @@ sv_compwidth (value) } static int -sv_histsize (value) - const char *value; +sv_histsize (const char *value) { int nval; @@ -1842,8 +2053,7 @@ sv_histsize (value) } static int -sv_keymap (value) - const char *value; +sv_keymap (const char *value) { Keymap kmap; @@ -1857,8 +2067,7 @@ sv_keymap (value) } static int -sv_seqtimeout (value) - const char *value; +sv_seqtimeout (const char *value) { int nval; @@ -1874,8 +2083,7 @@ sv_seqtimeout (value) } static int -sv_bell_style (value) - const char *value; +sv_bell_style (const char *value) { if (value == 0 || *value == '\0') _rl_bell_preference = AUDIBLE_BELL; @@ -1891,8 +2099,7 @@ sv_bell_style (value) } static int -sv_isrchterm (value) - const char *value; +sv_isrchterm (const char *value) { int beg, end, delim; char *v; @@ -1929,8 +2136,7 @@ sv_isrchterm (value) extern char *_rl_emacs_mode_str; static int -sv_emacs_modestr (value) - const char *value; +sv_emacs_modestr (const char *value) { if (value && *value) { @@ -1958,8 +2164,7 @@ sv_emacs_modestr (value) } static int -sv_viins_modestr (value) - const char *value; +sv_viins_modestr (const char *value) { if (value && *value) { @@ -1987,8 +2192,7 @@ sv_viins_modestr (value) } static int -sv_vicmd_modestr (value) - const char *value; +sv_vicmd_modestr (const char *value) { if (value && *value) { @@ -2039,8 +2243,7 @@ static const assoc_list name_key_alist[] = { }; static int -glean_key_from_name (name) - char *name; +glean_key_from_name (char *name) { register int i; @@ -2070,8 +2273,7 @@ static const struct { }; Keymap -rl_get_keymap_by_name (name) - const char *name; +rl_get_keymap_by_name (const char *name) { register int i; @@ -2082,8 +2284,7 @@ rl_get_keymap_by_name (name) } char * -rl_get_keymap_name (map) - Keymap map; +rl_get_keymap_name (Keymap map) { register int i; for (i = 0; keymap_names[i].name; i++) @@ -2093,21 +2294,20 @@ rl_get_keymap_name (map) } void -rl_set_keymap (map) - Keymap map; +rl_set_keymap (Keymap map) { if (map) _rl_keymap = map; } Keymap -rl_get_keymap () +rl_get_keymap (void) { return (_rl_keymap); } void -rl_set_keymap_from_edit_mode () +rl_set_keymap_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) _rl_keymap = emacs_standard_keymap; @@ -2118,7 +2318,7 @@ rl_set_keymap_from_edit_mode () } char * -rl_get_keymap_name_from_edit_mode () +rl_get_keymap_name_from_edit_mode (void) { if (rl_editing_mode == emacs_mode) return "emacs"; @@ -2143,7 +2343,7 @@ rl_get_keymap_name_from_edit_mode () /* Print the names of functions known to Readline. */ void -rl_list_funmap_names () +rl_list_funmap_names (void) { register int i; const char **funmap_names; @@ -2160,8 +2360,7 @@ rl_list_funmap_names () } static char * -_rl_get_keyname (key) - int key; +_rl_get_keyname (int key) { char *keyname; int i, c; @@ -2236,9 +2435,7 @@ _rl_get_keyname (key) /* Return a NULL terminated array of strings which represent the key sequences that are used to invoke FUNCTION in MAP. */ char ** -rl_invoking_keyseqs_in_map (function, map) - rl_command_func_t *function; - Keymap map; +rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map) { register int key; char **result; @@ -2345,8 +2542,7 @@ rl_invoking_keyseqs_in_map (function, map) /* Return a NULL terminated array of strings which represent the key sequences that can be used to invoke FUNCTION using the current keymap. */ char ** -rl_invoking_keyseqs (function) - rl_command_func_t *function; +rl_invoking_keyseqs (rl_command_func_t *function) { return (rl_invoking_keyseqs_in_map (function, _rl_keymap)); } @@ -2355,8 +2551,7 @@ rl_invoking_keyseqs (function) PRINT_READABLY is non-zero, then print the output in such a way that it can be read back in. */ void -rl_function_dumper (print_readably) - int print_readably; +rl_function_dumper (int print_readably) { register int i; const char **names; @@ -2427,8 +2622,7 @@ rl_function_dumper (print_readably) rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int -rl_dump_functions (count, key) - int count, key; +rl_dump_functions (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2438,10 +2632,7 @@ rl_dump_functions (count, key) } static void -_rl_macro_dumper_internal (print_readably, map, prefix) - int print_readably; - Keymap map; - char *prefix; +_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix) { register int key; char *keyname, *out; @@ -2500,15 +2691,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix) } void -rl_macro_dumper (print_readably) - int print_readably; +rl_macro_dumper (int print_readably) { _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL); } int -rl_dump_macros (count, key) - int count, key; +rl_dump_macros (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2518,8 +2707,7 @@ rl_dump_macros (count, key) } static char * -_rl_get_string_variable_value (name) - const char *name; +_rl_get_string_variable_value (const char *name) { static char numbuf[32]; char *ret; @@ -2599,8 +2787,7 @@ _rl_get_string_variable_value (name) } void -rl_variable_dumper (print_readably) - int print_readably; +rl_variable_dumper (int print_readably) { int i; char *v; @@ -2631,8 +2818,7 @@ rl_variable_dumper (print_readably) rl_outstream. If an explicit argument is given, then print the output in such a way that it can be read back in. */ int -rl_dump_variables (count, key) - int count, key; +rl_dump_variables (int count, int key) { if (rl_dispatching) fprintf (rl_outstream, "\r\n"); @@ -2643,9 +2829,7 @@ rl_dump_variables (count, key) /* Return non-zero if any members of ARRAY are a substring in STRING. */ static int -substring_member_of_array (string, array) - const char *string; - const char * const *array; +substring_member_of_array (const char *string, const char * const *array) { while (*array) { diff --git a/lib/readline/callback.c b/lib/readline/callback.c index cc3ce11f1..a466cf9b6 100644 --- a/lib/readline/callback.c +++ b/lib/readline/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -60,7 +60,7 @@ int rl_persistent_signal_handlers = 0; /* **************************************************************** */ /* */ -/* Callback Readline Functions */ +/* Callback Readline Functions */ /* */ /* **************************************************************** */ @@ -80,7 +80,7 @@ static int in_handler; /* terminal_prepped and signals set? */ /* Make sure the terminal is set up, initialize readline, and prompt. */ static void -_rl_callback_newline () +_rl_callback_newline (void) { rl_initialize (); @@ -103,9 +103,7 @@ _rl_callback_newline () /* Install a readline handler, set up the terminal, and issue the prompt. */ void -rl_callback_handler_install (prompt, linefunc) - const char *prompt; - rl_vcpfunc_t *linefunc; +rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc) { rl_set_prompt (prompt); RL_SETSTATE (RL_STATE_CALLBACK); @@ -126,7 +124,7 @@ rl_callback_handler_install (prompt, linefunc) /* Read one character, and dispatch to the handler if it ends the line. */ void -rl_callback_read_char () +rl_callback_read_char (void) { char *line; int eof, jcode; @@ -299,7 +297,7 @@ rl_callback_read_char () /* Remove the handler, and make sure the terminal is in its normal state. */ void -rl_callback_handler_remove () +rl_callback_handler_remove (void) { rl_linefunc = NULL; RL_UNSETSTATE (RL_STATE_CALLBACK); @@ -316,8 +314,7 @@ rl_callback_handler_remove () } _rl_callback_generic_arg * -_rl_callback_data_alloc (count) - int count; +_rl_callback_data_alloc (int count) { _rl_callback_generic_arg *arg; @@ -330,15 +327,14 @@ _rl_callback_data_alloc (count) } void -_rl_callback_data_dispose (arg) - _rl_callback_generic_arg *arg; +_rl_callback_data_dispose (_rl_callback_generic_arg *arg) { xfree (arg); } /* Make sure that this agrees with cases in rl_callback_read_char */ void -rl_callback_sigcleanup () +rl_callback_sigcleanup (void) { if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) return; diff --git a/lib/readline/colors.c b/lib/readline/colors.c index 7859f5d2b..53758e0e7 100644 --- a/lib/readline/colors.c +++ b/lib/readline/colors.c @@ -2,7 +2,7 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -37,6 +37,10 @@ #include "posixstat.h" // stat related macros (S_ISREG, ...) #include // S_ISUID +#ifndef S_ISDIR +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + // strlen() #if defined (HAVE_STRING_H) # include @@ -66,7 +70,8 @@ COLOR_EXT_TYPE *_rl_color_ext_list = 0; /* Output a color indicator (which may contain nulls). */ void -_rl_put_indicator (const struct bin_str *ind) { +_rl_put_indicator (const struct bin_str *ind) +{ fwrite (ind->string, ind->len, 1, rl_outstream); } @@ -183,11 +188,17 @@ _rl_print_color_indicator (const char *f) { colored_filetype = C_FILE; +#if defined (S_ISUID) if ((mode & S_ISUID) != 0 && is_colored (C_SETUID)) colored_filetype = C_SETUID; - else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) + else +#endif +#if defined (S_ISGID) + if ((mode & S_ISGID) != 0 && is_colored (C_SETGID)) colored_filetype = C_SETGID; - else if (is_colored (C_CAP) && 0) //f->has_capability) + else +#endif + if (is_colored (C_CAP) && 0) //f->has_capability) colored_filetype = C_CAP; else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC)) colored_filetype = C_EXEC; @@ -211,12 +222,16 @@ _rl_print_color_indicator (const char *f) colored_filetype = C_STICKY; #endif } +#if defined (S_ISLNK) else if (S_ISLNK (mode)) colored_filetype = C_LINK; +#endif else if (S_ISFIFO (mode)) colored_filetype = C_FIFO; +#if defined (S_ISSOCK) else if (S_ISSOCK (mode)) colored_filetype = C_SOCK; +#endif else if (S_ISBLK (mode)) colored_filetype = C_BLK; else if (S_ISCHR (mode)) diff --git a/lib/readline/compat.c b/lib/readline/compat.c index 2af51207a..3ade3629a 100644 --- a/lib/readline/compat.c +++ b/lib/readline/compat.c @@ -1,6 +1,6 @@ /* compat.c -- backwards compatibility functions. */ -/* Copyright (C) 2000-2009 Free Software Foundation, Inc. +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -46,68 +46,61 @@ extern char *rl_filename_completion_function PARAMS((const char *, int)); /* Provide backwards-compatible entry points for old function names. */ void -free_undo_list () +free_undo_list (void) { rl_free_undo_list (); } int -maybe_replace_line () +maybe_replace_line (void) { return rl_maybe_replace_line (); } int -maybe_save_line () +maybe_save_line (void) { return rl_maybe_save_line (); } int -maybe_unsave_line () +maybe_unsave_line (void) { return rl_maybe_unsave_line (); } int -ding () +ding (void) { return rl_ding (); } int -crlf () +crlf (void) { return rl_crlf (); } int -alphabetic (c) - int c; +alphabetic (int c) { return rl_alphabetic (c); } char ** -completion_matches (s, f) - const char *s; - rl_compentry_func_t *f; +completion_matches (const char *s, rl_compentry_func_t *f) { return rl_completion_matches (s, f); } char * -username_completion_function (s, i) - const char *s; - int i; +username_completion_function (const char *s, int i) { return rl_username_completion_function (s, i); } char * -filename_completion_function (s, i) - const char *s; - int i; +filename_completion_function (const char *s, int i) { return rl_filename_completion_function (s, i); } diff --git a/lib/readline/complete.c b/lib/readline/complete.c index 0a81129b8..adce0d69a 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -198,15 +198,6 @@ int _rl_completion_prefix_display_length = 0; matches. If < 0 or > _rl_screenwidth, it is ignored. */ int _rl_completion_columns = -1; -/* Global variables available to applications using readline. */ - -#if defined (VISIBLE_STATS) -/* Non-zero means add an additional character to each filename displayed - during listing completion iff rl_filename_completion_desired which helps - to indicate the type of file being listed. */ -int rl_visible_stats = 0; -#endif /* VISIBLE_STATS */ - #if defined (COLOR_SUPPORT) /* Non-zero means to use colors to indicate file type when listing possible completions. The colors used are taken from $LS_COLORS, if set. */ @@ -227,6 +218,15 @@ int _rl_skip_completed_text = 0; cycle of possible completions instead of the last. */ int _rl_menu_complete_prefix_first = 0; +/* Global variables available to applications using readline. */ + +#if defined (VISIBLE_STATS) +/* Non-zero means add an additional character to each filename displayed + during listing completion iff rl_filename_completion_desired which helps + to indicate the type of file being listed. */ +int rl_visible_stats = 0; +#endif /* VISIBLE_STATS */ + /* If non-zero, then this is the address of a function to call when completing on a directory name. The function is called with the address of a string (the current directory name) as an arg. */ @@ -422,8 +422,7 @@ static int _rl_complete_display_matches_interrupt = 0; that does the initial simple matching selection algorithm (see rl_completion_matches ()). The default is to do filename completion. */ int -rl_complete (ignore, invoking_key) - int ignore, invoking_key; +rl_complete (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; @@ -441,16 +440,14 @@ rl_complete (ignore, invoking_key) /* List the possible completions. See description of rl_complete (). */ int -rl_possible_completions (ignore, invoking_key) - int ignore, invoking_key; +rl_possible_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('?')); } int -rl_insert_completions (ignore, invoking_key) - int ignore, invoking_key; +rl_insert_completions (int ignore, int invoking_key) { rl_completion_invoking_key = invoking_key; return (rl_complete_internal ('*')); @@ -462,8 +459,7 @@ rl_insert_completions (ignore, invoking_key) an application-specific completion function to honor the show-all-if-ambiguous readline variable. */ int -rl_completion_mode (cfunc) - rl_command_func_t *cfunc; +rl_completion_mode (rl_command_func_t *cfunc) { if (rl_last_func == cfunc && !completion_changed_buffer) return '?'; @@ -483,16 +479,14 @@ rl_completion_mode (cfunc) /* Reset readline state on a signal or other event. */ void -_rl_reset_completion_state () +_rl_reset_completion_state (void) { rl_completion_found_quote = 0; rl_completion_quote_character = 0; } static void -_rl_complete_sigcleanup (sig, ptr) - int sig; - void *ptr; +_rl_complete_sigcleanup (int sig, void *ptr) { if (sig == SIGINT) /* XXX - for now */ { @@ -504,8 +498,7 @@ _rl_complete_sigcleanup (sig, ptr) /* Set default values for readline word completion. These are the variables that application completion functions can change or inspect. */ static void -set_completion_defaults (what_to_do) - int what_to_do; +set_completion_defaults (int what_to_do) { /* Only the completion entry function can change these. */ rl_filename_completion_desired = 0; @@ -523,8 +516,7 @@ set_completion_defaults (what_to_do) /* The user must press "y" or "n". Non-zero return means "y" pressed. */ static int -get_y_or_n (for_pager) - int for_pager; +get_y_or_n (int for_pager) { int c; @@ -557,8 +549,7 @@ get_y_or_n (for_pager) } static int -_rl_internal_pager (lines) - int lines; +_rl_internal_pager (int lines) { int i; @@ -575,8 +566,7 @@ _rl_internal_pager (lines) } static int -path_isdir (filename) - const char *filename; +path_isdir (const char *filename) { struct stat finfo; @@ -593,8 +583,7 @@ path_isdir (filename) `%' for character special devices `#' for block special devices */ static int -stat_char (filename) - char *filename; +stat_char (char *filename) { struct stat finfo; int character, r; @@ -625,7 +614,10 @@ stat_char (filename) #endif if (r == -1) - return (0); + { + xfree (f); + return (0); + } character = 0; if (S_ISDIR (finfo.st_mode)) @@ -675,29 +667,28 @@ stat_char (filename) #if defined (COLOR_SUPPORT) static int -colored_stat_start (filename) - const char *filename; +colored_stat_start (const char *filename) { _rl_set_normal_color (); return (_rl_print_color_indicator (filename)); } static void -colored_stat_end () +colored_stat_end (void) { _rl_prep_non_filename_text (); _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]); } static int -colored_prefix_start () +colored_prefix_start (void) { _rl_set_normal_color (); return (_rl_print_prefix_color ()); } static void -colored_prefix_end () +colored_prefix_end (void) { colored_stat_end (); /* for now */ } @@ -712,8 +703,7 @@ colored_prefix_end () for the previous slash and return the portion following that. If there's no previous slash, we just return what we were passed. */ static char * -printable_part (pathname) - char *pathname; +printable_part (char *pathname) { char *temp, *x; @@ -747,8 +737,7 @@ printable_part (pathname) /* Compute width of STRING when displayed on screen by print_filename */ static int -fnwidth (string) - const char *string; +fnwidth (const char *string) { int width, pos; #if defined (HANDLE_MULTIBYTE) @@ -800,10 +789,7 @@ fnwidth (string) #define ELLIPSIS_LEN 3 static int -fnprint (to_print, prefix_bytes, real_pathname) - const char *to_print; - int prefix_bytes; - const char *real_pathname; +fnprint (const char *to_print, int prefix_bytes, const char *real_pathname) { int printed_len, w; const char *s; @@ -818,6 +804,8 @@ fnprint (to_print, prefix_bytes, real_pathname) print_len = strlen (to_print); end = to_print + print_len + 1; memset (&ps, 0, sizeof (mbstate_t)); +#else + print_len = strlen (to_print); #endif printed_len = common_prefix_len = 0; @@ -929,9 +917,7 @@ fnprint (to_print, prefix_bytes, real_pathname) filenames. Return the number of characters we output. */ static int -print_filename (to_print, full_pathname, prefix_bytes) - char *to_print, *full_pathname; - int prefix_bytes; +print_filename (char *to_print, char *full_pathname, int prefix_bytes) { int printed_len, extension_char, slen, tlen; char *s, c, *new_full_pathname, *dn; @@ -988,7 +974,6 @@ print_filename (to_print, full_pathname, prefix_bytes) slen--; else new_full_pathname[slen] = '/'; - new_full_pathname[slen] = '/'; strcpy (new_full_pathname + slen + 1, to_print); #if defined (VISIBLE_STATS) @@ -1049,10 +1034,7 @@ print_filename (to_print, full_pathname, prefix_bytes) } static char * -rl_quote_filename (s, rtype, qcp) - char *s; - int rtype; - char *qcp; +rl_quote_filename (char *s, int rtype, char *qcp) { char *r; @@ -1080,8 +1062,7 @@ rl_quote_filename (s, rtype, qcp) the value of the delimiter character that caused a word break. */ char -_rl_find_completion_word (fp, dp) - int *fp, *dp; +_rl_find_completion_word (int *fp, int *dp) { int scan, end, found_quote, delimiter, pass_next, isbrk; char quote_char, *brkchars; @@ -1213,11 +1194,7 @@ _rl_find_completion_word (fp, dp) } static char ** -gen_completion_matches (text, start, end, our_func, found_quote, quote_char) - char *text; - int start, end; - rl_compentry_func_t *our_func; - int found_quote, quote_char; +gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char) { char **matches; @@ -1261,8 +1238,7 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char) /* Filter out duplicates in MATCHES. This frees up the strings in MATCHES. */ static char ** -remove_duplicate_matches (matches) - char **matches; +remove_duplicate_matches (char **matches) { char *lowest_common; int i, j, newlen; @@ -1322,10 +1298,7 @@ remove_duplicate_matches (matches) /* Find the common prefix of the list of matches, and put it into matches[0]. */ static int -compute_lcd_of_matches (match_list, matches, text) - char **match_list; - int matches; - const char *text; +compute_lcd_of_matches (char **match_list, int matches, const char *text) { register int i, c1, c2, si; int low; /* Count of max-matched characters. */ @@ -1451,7 +1424,8 @@ compute_lcd_of_matches (match_list, matches, text) } /* sort the list to get consistent answers. */ - qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); + if (rl_sort_completion_matches) + qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare); si = strlen (text); lx = (si <= low) ? si : low; /* check shorter of text and matches */ @@ -1481,9 +1455,7 @@ compute_lcd_of_matches (match_list, matches, text) } static int -postprocess_matches (matchesp, matching_filenames) - char ***matchesp; - int matching_filenames; +postprocess_matches (char ***matchesp, int matching_filenames) { char *t, **matches, **temp_matches; int nmatch, i; @@ -1537,7 +1509,7 @@ postprocess_matches (matchesp, matching_filenames) } static int -complete_get_screenwidth () +complete_get_screenwidth (void) { int cols; char *envcols; @@ -1558,9 +1530,7 @@ complete_get_screenwidth () of strings, in argv format, LEN is the number of strings in MATCHES, and MAX is the length of the longest string in MATCHES. */ void -rl_display_match_list (matches, len, max) - char **matches; - int len, max; +rl_display_match_list (char **matches, int len, int max) { int count, limit, printed_len, lines, cols; int i, j, k, l, common_length, sind; @@ -1717,8 +1687,7 @@ rl_display_match_list (matches, len, max) and ask the user if he wants to see the list if there are more matches than RL_COMPLETION_QUERY_ITEMS. */ static void -display_matches (matches) - char **matches; +display_matches (char **matches) { int len, max, i; char *temp; @@ -1784,11 +1753,9 @@ display_matches (matches) rl_display_fixed = 1; } +/* qc == pointer to quoting character, if any */ static char * -make_quoted_replacement (match, mtype, qc) - char *match; - int mtype; - char *qc; /* Pointer to quoting character, if any */ +make_quoted_replacement (char *match, int mtype, char *qc) { int should_quote, do_replace; char *replacement; @@ -1830,10 +1797,7 @@ make_quoted_replacement (match, mtype, qc) } static void -insert_match (match, start, mtype, qc) - char *match; - int start, mtype; - char *qc; +insert_match (char *match, int start, int mtype, char *qc) { char *replacement, *r; char oqc; @@ -1890,9 +1854,7 @@ insert_match (match, start, mtype, qc) value of _rl_complete_mark_symlink_dirs, but may be modified by an application's completion function). */ static int -append_to_match (text, delimiter, quote_char, nontrivial_match) - char *text; - int delimiter, quote_char, nontrivial_match; +append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match) { char temp_string[4], *filename, *fn; int temp_string_index, s; @@ -1959,10 +1921,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match) } static void -insert_all_matches (matches, point, qc) - char **matches; - int point; - char *qc; +insert_all_matches (char **matches, int point, char *qc) { int i; char *rp; @@ -1998,8 +1957,7 @@ insert_all_matches (matches, point, qc) } void -_rl_free_match_list (matches) - char **matches; +_rl_free_match_list (char **matches) { register int i; @@ -2021,17 +1979,14 @@ _rl_free_match_list (matches) `@' means to do standard completion, and list all possible completions if there is more than one and partial completion is not possible. */ int -rl_complete_internal (what_to_do) - int what_to_do; +rl_complete_internal (int what_to_do) { char **matches; rl_compentry_func_t *our_func; int start, end, delimiter, found_quote, i, nontrivial_lcd; char *text, *saved_line_buffer; char quote_char; -#if 1 int tlen, mlen; -#endif RL_SETSTATE(RL_STATE_COMPLETING); @@ -2206,9 +2161,7 @@ rl_complete_internal (what_to_do) when there are no more matches. */ char ** -rl_completion_matches (text, entry_function) - const char *text; - rl_compentry_func_t *entry_function; +rl_completion_matches (const char *text, rl_compentry_func_t *entry_function) { register int i; @@ -2276,9 +2229,7 @@ rl_completion_matches (text, entry_function) TEXT contains a partial username preceded by a random character (usually `~'). */ char * -rl_username_completion_function (text, state) - const char *text; - int state; +rl_username_completion_function (const char *text, int state) { #if defined (__WIN32__) || defined (__OPENNT) return (char *)NULL; @@ -2340,11 +2291,7 @@ rl_username_completion_function (text, state) _rl_completion_case_map is set, make `-' and `_' equivalent. CONVFN is the possibly-converted directory entry; FILENAME is what the user typed. */ static int -complete_fncmp (convfn, convlen, filename, filename_len) - const char *convfn; - int convlen; - const char *filename; - int filename_len; +complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len) { register char *s1, *s2; int d, len; @@ -2472,9 +2419,7 @@ complete_fncmp (convfn, convlen, filename, filename_len) because of all the pathnames that must be followed when looking up the completion for a command. */ char * -rl_filename_completion_function (text, state) - const char *text; - int state; +rl_filename_completion_function (const char *text, int state) { static DIR *directory = (DIR *)NULL; static char *filename = (char *)NULL; @@ -2702,8 +2647,7 @@ rl_filename_completion_function (text, state) hit the end of the match list, we restore the original unmatched text, ring the bell, and reset the counter to zero. */ int -rl_old_menu_complete (count, invoking_key) - int count, invoking_key; +rl_old_menu_complete (int count, int invoking_key) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -2824,9 +2768,17 @@ rl_old_menu_complete (count, invoking_key) return (0); } +/* The current version of menu completion. + The differences between this function and the original are: + +1. It honors the maximum number of completions variable (completion-query-items) +2. It appends to the word as usual if there is only one match +3. It displays the common prefix if there is one, and makes it the first menu + choice if the menu-complete-display-prefix option is enabled +*/ + int -rl_menu_complete (count, ignore) - int count, ignore; +rl_menu_complete (int count, int ignore) { rl_compentry_func_t *our_func; int matching_filenames, found_quote; @@ -2998,8 +2950,7 @@ rl_menu_complete (count, ignore) } int -rl_backward_menu_complete (count, key) - int count, key; +rl_backward_menu_complete (int count, int key) { /* Positive arguments to backward-menu-complete translate into negative arguments for menu-complete, and vice versa. */ diff --git a/lib/readline/display.c b/lib/readline/display.c index 2d2e768a9..75019efcf 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -124,7 +124,6 @@ static int _rl_col_width PARAMS((const char *, int, int, int)); #define PROMPT_ENDING_INDEX \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) - /* **************************************************************** */ /* */ /* Display stuff */ @@ -159,9 +158,6 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay; /* What YOU turn on when you have handled all redisplay yourself. */ int rl_display_fixed = 0; -int _rl_suppress_redisplay = 0; -int _rl_want_redisplay = 0; - /* The stuff that gets printed out before the actual text of the line. This is usually pointing to rl_prompt. */ char *rl_display_prompt = (char *)NULL; @@ -178,6 +174,10 @@ int _rl_vi_cmd_modestr_len; /* Pseudo-global variables declared here. */ +/* Hints for other parts of readline to give to the display engine. */ +int _rl_suppress_redisplay = 0; +int _rl_want_redisplay = 0; + /* The visible cursor position. If you print some text, adjust this. */ /* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale supporting multibyte characters, and an absolute cursor position when @@ -186,14 +186,24 @@ int _rl_vi_cmd_modestr_len; int _rl_last_c_pos = 0; int _rl_last_v_pos = 0; +/* Number of physical lines consumed by the current line buffer currently + on screen minus 1. */ +int _rl_vis_botlin = 0; + +/* This is a hint update_line gives to rl_redisplay that it has adjusted the + value of _rl_last_c_pos *and* taken the presence of any invisible chars in + the prompt into account. rl_redisplay notes this and does not do the + adjustment itself. */ static int cpos_adjusted; + +/* The index into the line buffer corresponding to the cursor position */ static int cpos_buffer_position; + +/* A flag to note when we're displaying the first line of the prompt */ static int displaying_prompt_first_line; +/* The number of multibyte characters in the prompt, if any */ static int prompt_multibyte_chars; -/* Number of lines currently on screen minus 1. */ -int _rl_vis_botlin = 0; - static int _rl_inv_botlin = 0; /* Variables used only in this file. */ @@ -216,7 +226,11 @@ static int line_size = 1024; static char *local_prompt, *local_prompt_prefix; static int local_prompt_len; -static int prompt_visible_length, prompt_prefix_length; +static int prompt_prefix_length; +/* Number of chars in the buffer that contribute to visible chars on the screen. + This might be different from the number of physical chars in the presence + of multibyte characters */ +static int prompt_visible_length; /* The number of invisible characters in the line currently being displayed on the screen. */ @@ -242,16 +256,26 @@ static int prompt_last_screen_line; static int prompt_physical_chars; +/* An array of indexes into the prompt string where we will break physical + screen lines. It's easier to compute in expand_prompt and use later in + rl_redisplay instead of having rl_redisplay try to guess about invisible + characters in the prompt or use heuristics about where they are. */ +static int *local_prompt_newlines; + /* set to a non-zero value by rl_redisplay if we are marking modified history lines and the current line is so marked. */ static int modmark; +static int line_totbytes; + /* Variables to save and restore prompt and display information. */ /* These are getting numerous enough that it's time to create a struct. */ static char *saved_local_prompt; static char *saved_local_prefix; +static int *saved_local_prompt_newlines; + static int saved_last_invisible; static int saved_visible_length; static int saved_prefix_length; @@ -262,8 +286,7 @@ static int saved_physical_chars; /* Return a string indicating the editing mode, for use in the prompt. */ static char * -prompt_modestr (lenp) - int *lenp; +prompt_modestr (int *lenp) { if (rl_editing_mode == emacs_mode) { @@ -291,7 +314,8 @@ prompt_modestr (lenp) index of the last invisible character in the returned string. NIFLP, if non-zero, is a place to store the number of invisible characters in the first prompt line. The previous are used as byte counts -- indexes - into a character buffer. */ + into a character buffer. *VLP gets the number of physical characters in + the expanded prompt (visible length) */ /* Current implementation: \001 (^A) start non-visible characters @@ -304,15 +328,16 @@ prompt_modestr (lenp) PMT_MULTILINE caller indicates that this is part of a multiline prompt */ +/* This approximates the number of lines the prompt will take when displayed */ +#define APPROX_DIV(n, d) (((n) < (d)) ? 1 : ((n) / (d)) + 1) + static char * -expand_prompt (pmt, flags, lp, lip, niflp, vlp) - char *pmt; - int flags; - int *lp, *lip, *niflp, *vlp; +expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp) { char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; - int mlen; + int mlen, newlines, newlines_guess, bound; + int mb_cur_max; /* We only expand the mode string for the last line of a multiline prompt (a prompt with embedded newlines). */ @@ -327,29 +352,54 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) else nprompt = pmt; - /* Short-circuit if we can. */ - if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) + mb_cur_max = MB_CUR_MAX; + + if (_rl_screenwidth == 0) + _rl_get_screen_size (0, 0); /* avoid division by zero */ + + /* Short-circuit if we can. We can do this if we are treating the prompt as + a sequence of bytes and there are no invisible characters in the prompt + to deal with. Since we populate local_prompt_newlines, we have to run + through the rest of the function if this prompt looks like it's going to + be longer than one screen line. */ + if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) { - r = (nprompt == pmt) ? savestring (pmt) : nprompt; + l = strlen (nprompt); + if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80)) + { + r = (nprompt == pmt) ? savestring (pmt) : nprompt; + if (lp) + *lp = l; + if (lip) + *lip = 0; + if (niflp) + *niflp = 0; + if (vlp) + *vlp = l; + + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2); + local_prompt_newlines[0] = 0; + local_prompt_newlines[1] = -1; - if (lp) - *lp = strlen (r); - if (lip) - *lip = 0; - if (niflp) - *niflp = 0; - if (vlp) - *vlp = lp ? *lp : strlen (r); - return r; + return r; + } } l = strlen (nprompt); /* XXX */ r = ret = (char *)xmalloc (l + 1); + /* Guess at how many screen lines the prompt will take to size the array that + keeps track of where the line wraps happen */ + newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l, _rl_screenwidth) : APPROX_DIV(l, 80); + local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1)); + local_prompt_newlines[newlines = 0] = 0; + for (rl = 1; rl <= newlines_guess; rl++) + local_prompt_newlines[rl] = -1; + rl = physchars = 0; /* mode string now part of nprompt */ - invfl = 0; /* invisible chars in first line of prompt */ - invflset = 0; /* we only want to set invfl once */ - igstart = 0; + invfl = 0; /* invisible chars in first line of prompt */ + invflset = 0; /* we only want to set invfl once */ + igstart = 0; /* we're not ignoring any characters yet */ for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++) { @@ -371,7 +421,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) else { #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { pind = p - nprompt; ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO); @@ -405,11 +455,29 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) ninvis++; /* invisible chars byte counter */ } - if (invflset == 0 && rl >= _rl_screenwidth) + if (invflset == 0 && physchars >= _rl_screenwidth) { invfl = ninvis; invflset = 1; } + + if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1) + { + int new; + if (physchars > bound) /* should rarely happen */ + { +#if defined (HANDLE_MULTIBYTE) + *r = '\0'; /* need null-termination for strlen */ + if (mb_cur_max > 1 && rl_byte_oriented == 0) + new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY); + else +#endif + new = r - ret - (physchars - bound); /* XXX */ + } + else + new = r - ret; + local_prompt_newlines[++newlines] = new; + } } } @@ -435,8 +503,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp) /* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from PMT and return the rest of PMT. */ char * -_rl_strip_prompt (pmt) - char *pmt; +_rl_strip_prompt (char *pmt) { char *ret; @@ -445,7 +512,7 @@ _rl_strip_prompt (pmt) } void -_rl_reset_prompt () +_rl_reset_prompt (void) { rl_visible_prompt_length = rl_expand_prompt (rl_prompt); } @@ -461,15 +528,20 @@ _rl_reset_prompt () * prompt_visible_length = number of visible characters in local_prompt * prompt_prefix_length = number of visible characters in local_prompt_prefix * + * It also tries to keep track of the number of invisible characters in the + * prompt string, and where they are. + * * This function is called once per call to readline(). It may also be * called arbitrarily to expand the primary prompt. * * The return value is the number of visible characters on the last line - * of the (possibly multi-line) prompt. + * of the (possibly multi-line) prompt. In this case, multi-line means + * there are embedded newlines in the prompt string itself, not that the + * number of physical characters exceeds the screen width and the prompt + * wraps. */ int -rl_expand_prompt (prompt) - char *prompt; +rl_expand_prompt (char *prompt) { char *p, *t; int c; @@ -527,8 +599,7 @@ rl_expand_prompt (prompt) increased. If the lines have already been allocated, this ensures that they can hold at least MINSIZE characters. */ static void -init_line_structures (minsize) - int minsize; +init_line_structures (int minsize) { register int n; @@ -575,9 +646,9 @@ init_line_structures (minsize) line_structures_initialized = 1; } -/* Basic redisplay algorithm. */ +/* Basic redisplay algorithm. See comments inline. */ void -rl_redisplay () +rl_redisplay (void) { register int in, out, c, linenum, cursor_linenum; register char *line; @@ -638,6 +709,10 @@ rl_redisplay () one passed to readline()), use the values we have already expanded. If not, use what's already in rl_display_prompt. WRAP_OFFSET is the number of non-visible characters in the prompt string. */ + /* This is where we output the characters in the prompt before the last + newline, if any. If there aren't any embedded newlines, we don't + write anything. Copy the last line of the prompt string into the line in + any case */ if (rl_display_prompt == rl_prompt || local_prompt) { if (local_prompt_prefix && forced_display) @@ -692,6 +767,21 @@ rl_redisplay () wrap_offset = prompt_invis_chars_first_line = 0; } +#if defined (HANDLE_MULTIBYTE) +#define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ + { \ + line_state_invisible->wbsize *= 2; \ + line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ + } \ + } while (0) +#else #define CHECK_INV_LBREAKS() \ do { \ if (newlines >= (inv_lbsize - 2)) \ @@ -700,6 +790,7 @@ rl_redisplay () inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ } while (0) +#endif /* !HANDLE_MULTIBYTE */ #if defined (HANDLE_MULTIBYTE) #define CHECK_LPOS() \ @@ -713,7 +804,7 @@ rl_redisplay () inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ } \ inv_lbreaks[++newlines] = out; \ - if (newlines >= (line_state_invisible->wbsize - 1)) \ + if (newlines >= (line_state_invisible->wbsize - 2)) \ { \ line_state_invisible->wbsize *= 2; \ line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \ @@ -742,7 +833,10 @@ rl_redisplay () /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; /* lpos is a physical cursor position, so it needs to be adjusted by the - number of invisible characters in the prompt, per line */ + number of invisible characters in the prompt, per line. We compute + the line breaks in the prompt string in expand_prompt, taking invisible + characters into account, and if lpos exceeds the screen width, we copy + the data in the loop below. */ lpos = prompt_physical_chars + modmark; #if defined (HANDLE_MULTIBYTE) @@ -752,92 +846,38 @@ rl_redisplay () /* prompt_invis_chars_first_line is the number of invisible characters in the first physical line of the prompt. - wrap_offset - prompt_invis_chars_first_line is the number of invis - chars on the second (or, more generally, last) line. */ + wrap_offset - prompt_invis_chars_first_line is usually the number of + invis chars on the second (or, more generally, last) line. */ /* This is zero-based, used to set the newlines */ prompt_lines_estimate = lpos / _rl_screenwidth; /* what if lpos is already >= _rl_screenwidth before we start drawing the contents of the command line? */ - while (lpos >= _rl_screenwidth) - { - int z, p; - int nocorrect, wadjust; - - nocorrect = 0; - /* Adjust depending on the invisible characters in the line. We use a - heuristic based on experience: invisible characters nearly always - appear in the first and last lines of the prompt */ - wadjust = (newlines == 0) - ? prompt_invis_chars_first_line - : ((newlines == prompt_lines_estimate) - ? (wrap_offset - prompt_invis_chars_first_line) - : 0); - - /* fix from Darin Johnson for prompt string with - invisible characters that is longer than the screen width. The - prompt_invis_chars_first_line variable could be made into an array - saying how many invisible characters there are per line, but that's - probably too much work for the benefit gained. How many people have - prompts that exceed two physical lines? - Additional logic fix from Edward Catmur */ -#if defined (HANDLE_MULTIBYTE) - if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) - { - nocorrect = 1; - n0 = num; - temp = local_prompt_len; - while (num < temp) - { - /* This has to take invisible characters in the prompt into - account. */ - z = _rl_col_width (local_prompt, n0, num, 1) - wadjust; - if (z > _rl_screenwidth) - { - num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - break; - } - else if (z == _rl_screenwidth) - { - /* If we are in the middle or at the end of a multibyte - character, we want to move to the start, then find out - where it ends so we know where to insert the newline. - If this isn't a multibyte character, its the same as num++ */ - p = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); - num = _rl_find_next_mbchar (local_prompt, p, 1, MB_FIND_ANY); - break; - } - num++; - } - temp = num; - } - else -#endif /* !HANDLE_MULTIBYTE */ - temp = ((newlines + 1) * _rl_screenwidth); + if (lpos >= _rl_screenwidth) + { + temp = 0; - /* Now account for invisible characters in the current line. */ - /* XXX - this assumes that the invisible characters may be split, but only - between the first and the last lines. */ - if (nocorrect == 0) - temp += wadjust; + /* first copy the linebreaks array we computed in expand_prompt */ + while (local_prompt_newlines[newlines+1] != -1) + { + temp = local_prompt_newlines[newlines+1]; + inv_lbreaks[++newlines] = temp; + } - inv_lbreaks[++newlines] = temp; -#if defined (HANDLE_MULTIBYTE) - /* lpos is a physical cursor position, so it needs to take the invisible - characters into account. */ + /* Now set lpos from the last newline */ if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) - lpos -= _rl_col_width (local_prompt, n0, num, 1) - wadjust; + lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line); else -#endif - lpos -= _rl_screenwidth; /* all physical cursor positions */ + lpos -= (_rl_screenwidth * newlines); } prompt_last_screen_line = newlines; /* Draw the rest of the line (after the prompt) into invisible_line, keeping - track of where the cursor is (cpos_buffer_position), the number of the line containing - the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin). + track of where the cursor is (cpos_buffer_position), the number of the + line containing the cursor (lb_linenum), the last line number (lb_botlin + and inv_botlin). It maintains an array of line breaks for display (inv_lbreaks). This handles expanding tabs for display and displaying meta characters. */ lb_linenum = 0; @@ -846,8 +886,13 @@ rl_redisplay () if (mb_cur_max > 1 && rl_byte_oriented == 0) { memset (&ps, 0, sizeof (mbstate_t)); - /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ - wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0])) + { + wc = (wchar_t)rl_line_buffer[0]; + wc_bytes = 1; + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps); } else wc_bytes = 1; @@ -909,6 +954,9 @@ rl_redisplay () temp = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = 4 - temp; } else @@ -939,6 +987,9 @@ rl_redisplay () temp2 = _rl_screenwidth - lpos; CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out + temp2; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = temp - temp2; while (out < newout) line[out++] = ' '; @@ -956,6 +1007,9 @@ rl_redisplay () line[out++] = '\0'; /* XXX - sentinel */ CHECK_INV_LBREAKS (); inv_lbreaks[++newlines] = out; +#if defined (HANDLE_MULTIBYTE) + line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn; +#endif lpos = 0; } else if (CTRL_CHAR (c) || c == RUBOUT) @@ -1007,15 +1061,21 @@ rl_redisplay () if (mb_cur_max > 1 && rl_byte_oriented == 0) { in += wc_bytes; - /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ - wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in])) + { + wc = (wchar_t)rl_line_buffer[in]; + wc_bytes = 1; + memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */ + } + else + wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps); } else in++; #endif - } line[out] = '\0'; + line_totbytes = out; if (cpos_buffer_position < 0) { cpos_buffer_position = out; @@ -1025,6 +1085,10 @@ rl_redisplay () inv_botlin = lb_botlin = _rl_inv_botlin = newlines; CHECK_INV_LBREAKS (); inv_lbreaks[newlines+1] = out; +#if defined (HANDLE_MULTIBYTE) + /* This should be 0 anyway */ + line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn; +#endif cursor_linenum = lb_linenum; /* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed. @@ -1092,8 +1156,8 @@ rl_redisplay () /* update_line potentially changes _rl_last_c_pos, but doesn't take invisible characters into account, since _rl_last_c_pos - is an absolute cursor position in a multibyte locale. See - if compensating here is the right thing, or if we have to + is an absolute cursor position in a multibyte locale. We + choose to (mostly) compensate for that here, rather than change update_line itself. There are several cases in which update_line adjusts _rl_last_c_pos itself (so it can pass _rl_move_cursor_relative accurate values); it communicates @@ -1104,11 +1168,16 @@ rl_redisplay () wrap_offset. */ if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ - else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && + else if (cpos_adjusted == 0 && + linenum == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && (mb_cur_max > 1 && rl_byte_oriented == 0) && - cpos_adjusted == 0 && _rl_last_c_pos != o_cpos && - _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) + _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */ + /* This assumes that all the invisible characters are split + between the first and last lines of the prompt, if the + prompt consumes more than two lines. It's usually right */ + /* XXX - not sure this is ever executed */ _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); /* If this is the line with the prompt, we might need to @@ -1178,6 +1247,9 @@ rl_redisplay () _rl_last_c_pos += wrap_offset; } + /* Now we move the cursor to where it needs to be. First, make + sure we are on the correct line (cursor_linenum). */ + /* We have to reprint the prompt if it contains invisible characters, since it's not generally OK to just reprint the characters from the current cursor position. But we @@ -1219,9 +1291,10 @@ rl_redisplay () position that doesn't take invisible characters in the prompt into account. We use a fudge factor to compensate. */ - /* Since _rl_backspace() doesn't know about invisible characters in the - prompt, and there's no good way to tell it, we compensate for - those characters here and call _rl_backspace() directly. */ + /* Since _rl_backspace() doesn't know about invisible characters in + the prompt, and there's no good way to tell it, we compensate for + those characters here and call _rl_backspace() directly if + necessary */ if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { /* TX == new physical cursor position in multibyte locale. */ @@ -1246,7 +1319,7 @@ rl_redisplay () _rl_move_cursor_relative (nleft, &invisible_line[pos]); } } - else /* Do horizontal scrolling. */ + else /* Do horizontal scrolling. Much simpler */ { #define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0) int lmargin, ndisp, nleft, phys_c_pos, t; @@ -1306,7 +1379,7 @@ rl_redisplay () right edge of the screen. If LMARGIN is 0, we need to take the wrap offset into account. */ t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth; - if (t < out) + if (t > 0 && t < out) line[t - 1] = '>'; if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin) @@ -1384,9 +1457,7 @@ new: eddie> Oh, my little buggy says to me, as lurgid as Could be made even smarter, but this works well enough */ static void -update_line (old, new, current_line, omax, nmax, inv_botlin) - register char *old, *new; - int current_line, omax, nmax, inv_botlin; +update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin) { register char *ofd, *ols, *oe, *nfd, *nls, *ne; int temp, lendiff, wsatend, od, nd, twidth, o_cpos; @@ -1411,52 +1482,145 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode && _rl_last_v_pos == current_line - 1) { + /* We're going to wrap around by writing the first character of NEW to + the screen and dealing with changes to what's visible by modifying + OLD to match it. Complicated by the presence of multi-width + characters at the end of the line or beginning of the new one. */ + /* old is always somewhere in visible_line; new is always somewhere in + invisible_line. These should always be null-terminated. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) { wchar_t wc; mbstate_t ps; - int tempwidth, bytes; + int oldwidth, newwidth; + int oldbytes, newbytes; size_t ret; /* This fixes only double-column characters, but if the wrapped character consumes more than three columns, spaces will be inserted in the string buffer. */ - if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0) - _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]); + /* XXX remember that we are working on the invisible line right now; + we don't swap visible and invisible until just before rl_redisplay + returns */ + /* This will remove the extra placeholder space we added with + _rl_wrapped_multicolumn */ + if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0) + _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]); + + /* 1. how many screen positions does first char in old consume? */ + memset (&ps, 0, sizeof (mbstate_t)); + ret = mbrtowc (&wc, old, mb_cur_max, &ps); + oldbytes = ret; + if (MB_INVALIDCH (ret)) + { + oldwidth = 1; + oldbytes = 1; + } + else if (MB_NULLWCH (ret)) + oldwidth = 0; + else + oldwidth = WCWIDTH (wc); + if (oldwidth < 0) + oldwidth = 1; + /* 2. how many screen positions does the first char in new consume? */ memset (&ps, 0, sizeof (mbstate_t)); ret = mbrtowc (&wc, new, mb_cur_max, &ps); + newbytes = ret; if (MB_INVALIDCH (ret)) { - tempwidth = 1; - ret = 1; + newwidth = 1; + newbytes = 1; } else if (MB_NULLWCH (ret)) - tempwidth = 0; + newwidth = 0; else - tempwidth = WCWIDTH (wc); + newwidth = WCWIDTH (wc); + if (newwidth < 0) + newwidth = 1; + + /* 3. if the new width is less than the old width, we need to keep + going in new until we have consumed at least that many screen + positions, and figure out how many bytes that will take */ + while (newbytes < nmax && newwidth < oldwidth) + { + int t; - if (tempwidth > 0) + ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + newwidth += 1; + newbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + newwidth += (t >= 0) ? t : 1; + newbytes += ret; + } + } + /* 4. If the new width is more than the old width, keep going in old + until we have consumed exactly that many screen positions, and + figure out how many bytes that will take. This is an optimization */ + while (oldbytes < omax && oldwidth < newwidth) { - int count, i; - bytes = ret; - for (count = 0; count < bytes; count++) - putc (new[count], rl_outstream); - _rl_last_c_pos = tempwidth; + int t; + + ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps); + if (MB_INVALIDCH (ret)) + { + oldwidth += 1; + oldbytes += 1; + } + else if (MB_NULLWCH (ret)) + break; + else + { + t = WCWIDTH (wc); + oldwidth += (t >= 0) ? t : 1; + oldbytes += ret; + } + } + /* 5. write the first newbytes of new, which takes newwidth. This is + where the screen wrapping takes place, and we are now writing + characters onto the new line. We need to fix up old so it + accurately reflects what is on the screen after the + _rl_output_some_chars below. */ + if (newwidth > 0) + { + int count, i, j; + char *optr; + + _rl_output_some_chars (new, newbytes); + _rl_last_c_pos = newwidth; _rl_last_v_pos++; - memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, old, mb_cur_max, &ps); - if (ret != 0 && bytes != 0) + + /* 5a. If the number of screen positions doesn't match, punt + and do a dumb update. */ + if (newwidth != oldwidth) + { + ne = new + nmax; + nd = newbytes; + nfd = new + nd; + goto dumb_update; + } + if (oldbytes != 0 && newbytes != 0) { - if (MB_INVALIDCH (ret)) - ret = 1; - memmove (old+bytes, old+ret, strlen (old+ret)); - memcpy (old, new, bytes); + /* We have written as many bytes from new as we need to + consume the first character of old. Fix up `old' so it + reflects the new screen contents. We use +1 in the + memmove call to copy the trailing NUL. */ + memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1); + memcpy (old, new, newbytes); + j = newbytes - oldbytes; + + omax += j; /* Fix up indices if we copy data from one line to another */ - omax += bytes - ret; for (i = current_line+1; i <= inv_botlin+1; i++) - vis_lbreaks[i] += bytes - ret; + vis_lbreaks[i] += j; } } else @@ -1482,7 +1646,6 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } } - /* Find first difference. */ #if defined (HANDLE_MULTIBYTE) if (mb_cur_max > 1 && rl_byte_oriented == 0) @@ -1501,6 +1664,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) memset (&ps_new, 0, sizeof(mbstate_t)); memset (&ps_old, 0, sizeof(mbstate_t)); + /* Are the old and new lines the same? */ if (omax == nmax && STREQN (new, old, omax)) { old_offset = omax; @@ -1510,6 +1674,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } else { + /* Go through the line from the beginning and find the first + difference. */ new_offset = old_offset = 0; for (ofd = old, nfd = new; (ofd - old < omax) && *ofd && @@ -1565,6 +1731,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) wsatend = 1; /* flag for trailing whitespace */ #if defined (HANDLE_MULTIBYTE) + /* Find the last character that is the same between the two lines. This + bounds the region that needs to change. */ if (mb_cur_max > 1 && rl_byte_oriented == 0) { ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY); @@ -1724,12 +1892,29 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) nd = lendiff; /* Do a dumb update and return */ +dumb_update: temp = ne - nfd; if (temp > 0) { _rl_output_some_chars (nfd, temp); if (mb_cur_max > 1 && rl_byte_oriented == 0) - _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + { + _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + /* Need to adjust here based on wrap_offset. Guess that if + this is the line containing the last line of the prompt + we need to adjust by + wrap_offset-prompt_invis_chars_first_line + on the assumption that this is the number of invisible + characters in the last line of the prompt. */ + if (wrap_offset > prompt_invis_chars_first_line && + current_line == prompt_last_screen_line && + prompt_physical_chars > _rl_screenwidth && + _rl_horizontal_scroll_mode == 0) + { + _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; + cpos_adjusted = 1; + } + } else _rl_last_c_pos += temp; } @@ -1804,6 +1989,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { /* Non-zero if we're increasing the number of lines. */ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin; + /* If col_lendiff is > 0, implying that the new string takes up more screen real estate than the old, but lendiff is < 0, meaning that it takes fewer bytes, we need to just output the characters starting @@ -1819,7 +2005,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) cpos_adjusted to let the caller know. */ if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; @@ -1872,7 +2058,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } return; @@ -1885,7 +2071,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) and set cpos_adjusted to let the caller know. */ if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } @@ -1952,12 +2138,26 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); if (current_line == 0 && wrap_offset && displaying_prompt_first_line && - _rl_last_c_pos > wrap_offset && + _rl_last_c_pos >= wrap_offset && /* XXX was > */ ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } + +#if 1 +#ifdef HANDLE_MULTIBYTE + /* If we write a non-space into the last screen column, + remove the note that we added a space to compensate for + a multibyte double-width character that didn't fit, since + it's only valid for what was previously there. */ + /* XXX - watch this */ + if (_rl_last_c_pos == _rl_screenwidth && + line_state_invisible->wrapped_line[current_line+1] && + nfd[bytes_to_insert-1] != ' ') + line_state_invisible->wrapped_line[current_line+1] = 0; +#endif +#endif } else _rl_last_c_pos += bytes_to_insert; @@ -1989,7 +2189,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos > wrap_offset && ((nfd - new) <= prompt_last_invisible)) { - _rl_last_c_pos -= wrap_offset; + _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */ cpos_adjusted = 1; } } @@ -2019,7 +2219,7 @@ clear_rest_of_line: /* Tell the update routines that we have moved onto a new (empty) line. */ int -rl_on_new_line () +rl_on_new_line (void) { if (visible_line) visible_line[0] = '\0'; @@ -2035,7 +2235,7 @@ rl_on_new_line () /* Clear all screen lines occupied by the current readline line buffer (visible line) */ int -rl_clear_visible_line () +rl_clear_visible_line (void) { int curr_line; @@ -2063,9 +2263,10 @@ rl_clear_visible_line () /* Tell the update routines that we have moved onto a new line with the prompt already displayed. Code originally from the version of readline distributed with CLISP. rl_expand_prompt must have already been called - (explicitly or implicitly). This still doesn't work exactly right. */ + (explicitly or implicitly). This still doesn't work exactly right; it + should use expand_prompt() */ int -rl_on_new_line_with_prompt () +rl_on_new_line_with_prompt (void) { int prompt_size, i, l, real_screenwidth, newlines; char *prompt_last_line, *lprompt; @@ -2121,7 +2322,7 @@ rl_on_new_line_with_prompt () /* Actually update the display, period. */ int -rl_forced_update_display () +rl_forced_update_display (void) { register char *temp; @@ -2139,7 +2340,7 @@ rl_forced_update_display () /* Redraw only the last line of a multi-line prompt. */ void -rl_redraw_prompt_last_line () +rl_redraw_prompt_last_line (void) { char *t; @@ -2157,9 +2358,7 @@ rl_redraw_prompt_last_line () the movement is being done. DATA is always the visible line or the invisible line */ void -_rl_move_cursor_relative (new, data) - int new; - const char *data; +_rl_move_cursor_relative (int new, const char *data) { register int i; int woff; /* number of invisible chars on current line */ @@ -2316,8 +2515,7 @@ _rl_move_cursor_relative (new, data) /* PWP: move the cursor up or down. */ void -_rl_move_vert (to) - int to; +_rl_move_vert (int to) { register int delta, i; @@ -2357,8 +2555,7 @@ _rl_move_vert (to) /* Physically print C on rl_outstream. This is for functions which know how to optimize the display. Return the number of characters output. */ int -rl_show_char (c) - int c; +rl_show_char (int c) { int n = 1; if (META_CHAR (c) && (_rl_output_meta_chars == 0)) @@ -2385,8 +2582,7 @@ rl_show_char (c) } int -rl_character_len (c, pos) - register int c, pos; +rl_character_len (int c, int pos) { unsigned char uc; @@ -2521,7 +2717,7 @@ rl_message (format, arg1, arg2) /* How to clear things from the "echo-area". */ int -rl_clear_message () +rl_clear_message (void) { rl_display_prompt = rl_prompt; if (msg_saved_prompt) @@ -2534,7 +2730,7 @@ rl_clear_message () } int -rl_reset_line_state () +rl_reset_line_state (void) { rl_on_new_line (); @@ -2543,8 +2739,12 @@ rl_reset_line_state () return 0; } +/* Save all of the variables associated with the prompt and its display. Most + of the complexity is dealing with the invisible characters in the prompt + string and where they are. There are enough of these that I should consider + a struct. */ void -rl_save_prompt () +rl_save_prompt (void) { saved_local_prompt = local_prompt; saved_local_prefix = local_prompt_prefix; @@ -2554,22 +2754,28 @@ rl_save_prompt () saved_visible_length = prompt_visible_length; saved_invis_chars_first_line = prompt_invis_chars_first_line; saved_physical_chars = prompt_physical_chars; + saved_local_prompt_newlines = local_prompt_newlines; local_prompt = local_prompt_prefix = (char *)0; local_prompt_len = 0; + local_prompt_newlines = (int *)0; + prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0; prompt_invis_chars_first_line = prompt_physical_chars = 0; } void -rl_restore_prompt () +rl_restore_prompt (void) { FREE (local_prompt); FREE (local_prompt_prefix); + FREE (local_prompt_newlines); local_prompt = saved_local_prompt; local_prompt_prefix = saved_local_prefix; local_prompt_len = saved_local_length; + local_prompt_newlines = saved_local_prompt_newlines; + prompt_prefix_length = saved_prefix_length; prompt_last_invisible = saved_last_invisible; prompt_visible_length = saved_visible_length; @@ -2581,11 +2787,11 @@ rl_restore_prompt () saved_local_length = 0; saved_last_invisible = saved_visible_length = saved_prefix_length = 0; saved_invis_chars_first_line = saved_physical_chars = 0; + saved_local_prompt_newlines = 0; } char * -_rl_make_prompt_for_search (pchar) - int pchar; +_rl_make_prompt_for_search (int pchar) { int len; char *pmt, *p; @@ -2623,8 +2829,7 @@ _rl_make_prompt_for_search (pchar) /* Quick redisplay hack when erasing characters at the end of the line. */ void -_rl_erase_at_end_of_line (l) - int l; +_rl_erase_at_end_of_line (int l) { register int i; @@ -2638,10 +2843,10 @@ _rl_erase_at_end_of_line (l) } /* Clear to the end of the line. COUNT is the minimum - number of character spaces to clear, */ + number of character spaces to clear, but we use a terminal escape + sequence if available. */ void -_rl_clear_to_eol (count) - int count; +_rl_clear_to_eol (int count) { #ifndef __MSDOS__ if (_rl_term_clreol) @@ -2655,19 +2860,18 @@ _rl_clear_to_eol (count) /* Clear to the end of the line using spaces. COUNT is the minimum number of character spaces to clear, */ static void -space_to_eol (count) - int count; +space_to_eol (int count) { register int i; for (i = 0; i < count; i++) - putc (' ', rl_outstream); + putc (' ', rl_outstream); _rl_last_c_pos += count; } void -_rl_clear_screen () +_rl_clear_screen (void) { #ifndef __DJGPP__ if (_rl_term_clrpag) @@ -2682,9 +2886,7 @@ _rl_clear_screen () /* Insert COUNT characters from STRING to the output stream at column COL. */ static void -insert_some_chars (string, count, col) - char *string; - int count, col; +insert_some_chars (char *string, int count, int col) { open_some_spaces (col); _rl_output_some_chars (string, count); @@ -2694,8 +2896,7 @@ insert_some_chars (string, count, col) ncurses documentation and use either im/ei with explicit spaces, or IC/ic by itself. We assume there will either be ei or we don't need to use it. */ static void -open_some_spaces (col) - int col; +open_some_spaces (int col) { #if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) char *buffer; @@ -2731,8 +2932,7 @@ open_some_spaces (col) /* Delete COUNT characters from the display line. */ static void -delete_chars (count) - int count; +delete_chars (int count) { if (count > _rl_screenwidth) /* XXX */ return; @@ -2754,9 +2954,9 @@ delete_chars (count) } void -_rl_update_final () +_rl_update_final (void) { - int full_lines; + int full_lines, woff, botline_length; full_lines = 0; /* If the cursor is the only thing on an otherwise-blank last line, @@ -2768,16 +2968,23 @@ _rl_update_final () full_lines = 1; } _rl_move_vert (_rl_vis_botlin); + woff = W_OFFSET(_rl_vis_botlin, wrap_offset); + botline_length = VIS_LLEN(_rl_vis_botlin) - woff; /* If we've wrapped lines, remove the final xterm line-wrap flag. */ - if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth)) + if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth) { char *last_line; - last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; + /* LAST_LINE includes invisible characters, so if you want to get the + last character of the first line, you have to take WOFF into account. + This needs to be done for both calls to _rl_move_cursor_relative, + which takes a buffer position as the first argument, and any direct + subscripts of LAST_LINE. */ + last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */ cpos_buffer_position = -1; /* don't know where we are in buffer */ - _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); /* XXX */ + _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line); /* XXX */ _rl_clear_to_eol (0); - putc (last_line[_rl_screenwidth - 1], rl_outstream); + putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream); } _rl_vis_botlin = 0; rl_crlf (); @@ -2787,7 +2994,7 @@ _rl_update_final () /* Move to the start of the current line. */ static void -cr () +cr (void) { if (_rl_term_cr) { @@ -2804,8 +3011,7 @@ cr () terminal escape sequences. Called with the cursor at column 0 of the line to draw the prompt on. */ static void -redraw_prompt (t) - char *t; +redraw_prompt (char *t) { char *oldp; @@ -2829,7 +3035,7 @@ redraw_prompt (t) /* Redisplay the current line after a SIGWINCH is received. */ void -_rl_redisplay_after_sigwinch () +_rl_redisplay_after_sigwinch (void) { char *t; @@ -2874,7 +3080,7 @@ _rl_redisplay_after_sigwinch () } void -_rl_clean_up_for_exit () +_rl_clean_up_for_exit (void) { if (_rl_echoing_p) { @@ -2887,7 +3093,7 @@ _rl_clean_up_for_exit () } void -_rl_erase_entire_line () +_rl_erase_entire_line (void) { cr (); _rl_clear_to_eol (0); @@ -2896,7 +3102,7 @@ _rl_erase_entire_line () } void -_rl_ttyflush () +_rl_ttyflush (void) { fflush (rl_outstream); } @@ -2904,7 +3110,7 @@ _rl_ttyflush () /* return the `current display line' of the cursor -- the number of lines to move up to get to the first screen line of the current readline line. */ int -_rl_current_display_line () +_rl_current_display_line (void) { int ret, nleft; @@ -2928,9 +3134,7 @@ _rl_current_display_line () In the case of multibyte characters with stateful encoding, we have to scan from the beginning of the string to take the state into account. */ static int -_rl_col_width (str, start, end, flags) - const char *str; - int start, end, flags; +_rl_col_width (const char *str, int start, int end, int flags) { wchar_t wc; mbstate_t ps; @@ -2963,7 +3167,13 @@ _rl_col_width (str, start, end, flags) while (point < start) { - tmp = mbrlen (str + point, max, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + memset (&ps, 0, sizeof (mbstate_t)); + tmp = 1; + } + else + tmp = mbrlen (str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a @@ -2992,7 +3202,13 @@ _rl_col_width (str, start, end, flags) while (point < end) { - tmp = mbrtowc (&wc, str + point, max, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point])) + { + tmp = 1; + wc = (wchar_t) str[point]; + } + else + tmp = mbrtowc (&wc, str + point, max, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* In this case, the bytes are invalid or too short to compose a diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index bba7b590e..d28bd4856 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -166,6 +166,9 @@ parameters managing the list itself. @deftypefun void add_history (const char *string) Place @var{string} at the end of the history list. The associated data field (if any) is set to @code{NULL}. +If the maximum number of history entries has been set using +@code{stifle_history()}, and the new number of history entries would exceed +that maximum, the oldest history entry is removed. @end deftypefun @deftypefun void add_history_time (const char *string) @@ -198,6 +201,7 @@ Clear the history list by deleting all the entries. @deftypefun void stifle_history (int max) Stifle the history list, remembering only the last @var{max} entries. +The history list will contain only @var{max} entries at a time. @end deftypefun @deftypefun int unstifle_history (void) @@ -234,10 +238,12 @@ pointer. @end deftypefun @deftypefun {HIST_ENTRY *} history_get (int offset) -Return the history entry at position @var{offset}, starting from -@code{history_base} (@pxref{History Variables}). -If there is no entry there, or if @var{offset} -is greater than the history length, return a @code{NULL} pointer. +Return the history entry at position @var{offset}. +The range of valid +values of @var{offset} starts at @code{history_base} and ends at +@var{history_length} - 1 (@pxref{History Variables}). +If there is no entry there, or if @var{offset} is outside the valid +range, return a @code{NULL} pointer. @end deftypefun @deftypefun time_t history_get_time (HIST_ENTRY *entry) diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index 04e192eb9..d21f65d0f 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988--2016 Free Software Foundation, Inc. +Copyright (C) 1988--2018 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -124,7 +124,7 @@ The @code{lithist} shell option causes the shell to save the command with embedded newlines instead of semicolons. The @code{shopt} builtin is used to set these options. -@xref{Bash Builtins}, for a description of @code{shopt}. +@xref{The Shopt Builtin}, for a description of @code{shopt}. @node Bash History Builtins @section Bash History Builtins @@ -149,8 +149,8 @@ Both @var{first} and @var{last} may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the -current command number). If @var{last} is not specified it is set to -@var{first}. If @var{first} is not specified it is set to the previous +current command number). If @var{last} is not specified, it is set to +@var{first}. If @var{first} is not specified, it is set to the previous command for editing and @minus{}16 for listing. If the @option{-l} flag is given, the commands are listed on standard output. The @option{-n} flag suppresses the command numbers when listing. The @option{-r} flag @@ -176,6 +176,7 @@ and typing @samp{r} re-executes the last command (@pxref{Aliases}). history [@var{n}] history -c history -d @var{offset} +history -d @var{start}-@var{end} history [-anrw] [@var{filename}] history -ps @var{arg} @end example @@ -198,8 +199,17 @@ with the other options to replace the history list completely. @item -d @var{offset} Delete the history entry at position @var{offset}. -@var{offset} should be specified as it appears when the history is -displayed. +If @var{offset} is positive, it should be specified as it appears when +the history is displayed. +If @var{offset} is negative, it is interpreted as relative to one greater +than the last history position, so negative indices count back from the +end of the history, and an index of @samp{-1} refers to the current +@code{history -d} command. + +@item -d @var{start}-@var{end} +Delete the history entries between positions @var{start} and @var{end}, +inclusive. Positive and negative values for @var{start} and @var{end} +are interpreted as described above. @item -a Append the new history lines to the history file. @@ -251,7 +261,9 @@ fix errors in previous commands quickly. @ifset BashFeatures History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. +is read, before the shell breaks it into words, and is performed +on each line individually without taking quoting on previous lines into +account. @end ifset History expansion takes place in two parts. The first is to determine @@ -274,7 +286,7 @@ in a double-quoted string. @ifset BashFeatures Several shell options settable with the @code{shopt} -builtin (@pxref{Bash Builtins}) may be used to tailor +builtin (@pxref{The Shopt Builtin}) may be used to tailor the behavior of history expansion. If the @code{histverify} shell option is enabled, and Readline is being used, history substitutions are not immediately passed to diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index b8ce90f95..7d22b2cb6 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -90,6 +90,12 @@ If @code{readline} encounters an @code{EOF} while reading the line, and the line is empty at that point, then @code{(char *)NULL} is returned. Otherwise, the line is ended just as if a newline had been typed. +Readline performs some expansion on the @var{prompt} before it is +displayed on the screen. See the description of @code{rl_expand_prompt} +(@pxref{Redisplay}) for additional details, especially if @var{prompt} +will contain characters that do not consume physical screen space when +displayed. + If you want the user to be able to get at the line later, (with @key{C-p} for example), you must call @code{add_history()} to save the line away in a @dfn{history} list of such lines. @@ -688,6 +694,11 @@ Free all storage associated with @var{keymap}. This calls @code{rl_discard_keymap} to free subordindate keymaps and macros. @end deftypefun +@deftypefun int rl_empty_keymap (Keymap keymap) +Return non-zero if there are no keys bound to functions in @var{keymap}; +zero if there are any keys bound. +@end deftypefun + Readline has several internal keymaps. These functions allow you to change which keymap is active. @@ -837,6 +848,12 @@ not @code{NULL}, the type of the object is returned in the @code{int} variable it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}). @end deftypefun +@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len Keymap map, int *type) +Return the function invoked by @var{keyseq} of length @var{len} +in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the +addition of the @var{len} parameter. +@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. @@ -1679,6 +1696,19 @@ handlers, depending on the values of @code{rl_catch_signals} and @code{rl_catch_sigwinch}. @end deftypefun +If an application wants to force Readline to handle any signals that +have arrived while it has been executing, @code{rl_check_signals()} +will call Readline's internal signal handler if there are any pending +signals. This is primarily intended for those applications that use +a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish +to handle signals received while waiting for input. + +@deftypefun void rl_check_signals (void) +If there are any pending signals, call Readline's internal signal handling +functions to process them. @code{rl_pending_signal()} can be used independently +to determine whether or not there are any pending signals. +@end deftypefun + If an application does not wish Readline to catch @code{SIGWINCH}, it may call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force Readline to update its idea of the terminal size when a @code{SIGWINCH} diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 4c094c88c..1c9acdcc1 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -524,7 +524,8 @@ set to either @samp{emacs} or @samp{vi}. @item emacs-mode-string @vindex emacs-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. @@ -714,9 +715,9 @@ The default value is @samp{off}. @item show-mode-in-prompt @vindex show-mode-in-prompt -If set to @samp{on}, add a character to the beginning of the prompt +If set to @samp{on}, add a string to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. -The mode strings are user-settable. +The mode strings are user-settable (e.g., @var{emacs-mode-string}). The default value is @samp{off}. @item skip-completed-text @@ -735,7 +736,8 @@ The default value is @samp{off}. @item vi-cmd-mode-string @vindex vi-cmd-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -747,7 +749,8 @@ The default is @samp{(cmd)}. @item vi-ins-mode-string @vindex vi-ins-mode-string -This string is displayed immediately before the last line of the primary +If the @var{show-mode-in-prompt} variable is enabled, +this string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and @@ -914,8 +917,9 @@ of tests. There are four parser directives used. @item $if The @code{$if} construct allows bindings to be made based on the editing mode, the terminal being used, or the application using -Readline. The text of the test extends to the end of the line; -no characters are required to isolate it. +Readline. The text of the test, after any comparison operator, +extends to the end of the line; +unless otherwise noted, no characters are required to isolate it. @table @code @item mode @@ -935,6 +939,27 @@ the portion of the terminal name before the first @samp{-}. This allows @code{sun} to match both @code{sun} and @code{sun-cmd}, for instance. +@item version +The @code{version} test may be used to perform comparisons against +specific Readline versions. +The @code{version} expands to the current Readline version. +The set of comparison operators includes +@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<}, +and @samp{>}. +The version number supplied on the right side of the operator consists +of a major version number, an optional decimal point, and an optional +minor version (e.g., @samp{7.1}). If the minor version is omitted, it +is assumed to be @samp{0}. +The operator may be separated from the string @code{version} and +from the version number argument by whitespace. +The following example sets a variable if the Readline version being used +is 7.0 or newer: +@example +$if version >= 7.0 +set show-mode-in-prompt on +$endif +@end example + @item application The @var{application} construct is used to include application-specific settings. Each program using the Readline @@ -949,6 +974,23 @@ $if Bash "\C-xq": "\eb\"\ef\"" $endif @end example + +@item variable +The @var{variable} construct provides simple equality tests for Readline +variables and values. +The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}. +The variable name must be separated from the comparison operator by +whitespace; the operator may be separated from the value on the right hand +side by whitespace. +Both string and boolean variables may be tested. Boolean variables must be +tested against the values @var{on} and @var{off}. +The following example is equivalent to the @code{mode=emacs} test described +above: +@example +$if editing-mode == emacs +set show-mode-in-prompt on +$endif +@end example @end table @item $endif @@ -1138,6 +1180,19 @@ Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. @end ifset +@item previous-screen-line () +Attempt to move point to the same physical screen column on the previous +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if point is not +greater than the length of the prompt plus the screen width. + +@item next-screen-line () +Attempt to move point to the same physical screen column on the next +physical screen line. This will not have the desired effect if the current +Readline line does not take up more than one physical line or if the length +of the current Readline line is not greater than the length of the prompt +plus the screen width. + @item clear-screen (C-l) Clear the screen and redraw the current line, leaving the current line at the top of the screen. @@ -1216,14 +1271,14 @@ The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-forward () +@item history-substring-search-forward () Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -@item history-substr-search-backward () +@item history-substring-search-backward () Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. @@ -1590,9 +1645,10 @@ Abort the current editing command and ring the terminal's bell (subject to the setting of @code{bell-style}). -@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{}) -If the metafied character @var{x} is lowercase, run the command -that is bound to the corresponding uppercase character. +@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{}) +If the metafied character @var{x} is upper case, run the command +that is bound to the corresponding metafied lower case character. +The behavior is undefined if @var{x} is already lower case. @item prefix-meta (@key{ESC}) Metafy the next character typed. This is for keyboards @@ -1718,10 +1774,11 @@ A synonym for @code{yank-last-arg}. @item operate-and-get-next (C-o) Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. +relative to the current line from the history for editing. +A numeric argument, if supplied, specifies the history entry to use instead +of the current line. -@item edit-and-execute-command (C-xC-e) +@item edit-and-execute-command (C-x C-e) Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke @@ -1816,7 +1873,9 @@ Next, the string specified as the argument to the @option{-W} option is considered. The string is first split using the characters in the @env{IFS} special variable as delimiters. -Shell quoting is honored. +Shell quoting is honored within the string, in order to provide a +mechanism for the words to contain shell metacharacters or characters +in the value of @env{IFS}. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, @@ -2200,7 +2259,7 @@ a shell function and bind it to a particular command using @code{complete -F}. The following function provides completions for the @code{cd} builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as @code{$2} +used for completion. This function uses the word passed as @code{$2} to determine the directory name to complete. You can also use the @code{COMP_WORDS} array variable; the current word is indexed by the @code{COMP_CWORD} variable. diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index 9dc2998ab..9fefcfae8 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2016 Free Software Foundation, Inc. +Copyright (C) 1988-2017 Free Software Foundation, Inc. @end ignore @set EDITION 7.0 @set VERSION 7.0 -@set UPDATED 16 July 2016 -@set UPDATED-MONTH July 2016 +@set UPDATED 28 December 2017 +@set UPDATED-MONTH December 2017 -@set LASTCHANGE Sat Jul 16 13:43:15 EDT 2016 +@set LASTCHANGE Thu Dec 28 14:44:16 EST 2017 diff --git a/lib/readline/emacs_keymap.c b/lib/readline/emacs_keymap.c index cb6e140a2..b5e53f494 100644 --- a/lib/readline/emacs_keymap.c +++ b/lib/readline/emacs_keymap.c @@ -1,6 +1,6 @@ /* emacs_keymap.c -- the keymap for emacs_mode in readline (). */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/lib/readline/examples/rlcat.c b/lib/readline/examples/rlcat.c index fa9e06ff7..b4942413f 100644 --- a/lib/readline/examples/rlcat.c +++ b/lib/readline/examples/rlcat.c @@ -137,7 +137,7 @@ fcopy(fp) if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0) { x = rl_untranslate_keyseq (c); - if (fputs (x, stdout) != 0) + if (fputs (x, stdout) == EOF) return 1; } else if (putchar (c) == EOF) diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c index 34b1d6ba7..aaf144de9 100644 --- a/lib/readline/funmap.c +++ b/lib/readline/funmap.c @@ -1,6 +1,6 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -110,6 +110,7 @@ static const FUNMAP default_funmap[] = { { "menu-complete", rl_menu_complete }, { "menu-complete-backward", rl_backward_menu_complete }, { "next-history", rl_get_next_history }, + { "next-screen-line", rl_next_screen_line }, { "non-incremental-forward-search-history", rl_noninc_forward_search }, { "non-incremental-reverse-search-history", rl_noninc_reverse_search }, { "non-incremental-forward-search-history-again", rl_noninc_forward_search_again }, @@ -121,6 +122,7 @@ static const FUNMAP default_funmap[] = { #endif { "possible-completions", rl_possible_completions }, { "previous-history", rl_get_previous_history }, + { "previous-screen-line", rl_previous_screen_line }, { "print-last-kbd-macro", rl_print_last_kbd_macro }, { "quoted-insert", rl_quoted_insert }, { "re-read-init-file", rl_re_read_init_file }, @@ -204,9 +206,7 @@ static const FUNMAP default_funmap[] = { }; int -rl_add_funmap_entry (name, function) - const char *name; - rl_command_func_t *function; +rl_add_funmap_entry (const char *name, rl_command_func_t *function) { if (funmap_entry + 2 >= funmap_size) { @@ -226,7 +226,7 @@ static int funmap_initialized; /* Make the funmap contain all of the default entries. */ void -rl_initialize_funmap () +rl_initialize_funmap (void) { register int i; @@ -244,7 +244,7 @@ rl_initialize_funmap () is sorted. The array itself is allocated, but not the strings inside. You should free () the array when you done, but not the pointers. */ const char ** -rl_funmap_names () +rl_funmap_names (void) { const char **result; int result_size, result_index; diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c index b84a6b8ac..e9c333d7e 100644 --- a/lib/readline/histexpand.c +++ b/lib/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -132,10 +132,7 @@ static char *search_match; So you might call this function like: line = get_history_event ("!echo:p", &index, 0); */ char * -get_history_event (string, caller_index, delimiting_quote) - const char *string; - int *caller_index; - int delimiting_quote; +get_history_event (const char *string, int *caller_index, int delimiting_quote) { register int i; register char c; @@ -316,9 +313,7 @@ get_history_event (string, caller_index, delimiting_quote) to the closing single quote. FLAGS currently used to allow backslash to escape a single quote (e.g., for bash $'...'). */ static void -hist_string_extract_single_quoted (string, sindex, flags) - char *string; - int *sindex, flags; +hist_string_extract_single_quoted (char *string, int *sindex, int flags) { register int i; @@ -332,8 +327,7 @@ hist_string_extract_single_quoted (string, sindex, flags) } static char * -quote_breaks (s) - char *s; +quote_breaks (char *s) { register char *p, *r; char *ret; @@ -374,9 +368,7 @@ quote_breaks (s) } static char * -hist_error(s, start, current, errtype) - char *s; - int start, current, errtype; +hist_error(char *s, int start, int current, int errtype) { char *temp; const char *emsg; @@ -433,9 +425,7 @@ hist_error(s, start, current, errtype) subst_rhs is allowed to be set to the empty string. */ static char * -get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr) - char *str; - int *iptr, delimiter, is_rhs, *lenptr; +get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr) { register int si, i, j, k; char *s; @@ -490,7 +480,7 @@ get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr) } static void -postproc_subst_rhs () +postproc_subst_rhs (void) { char *new; int i, j, new_size; @@ -526,12 +516,9 @@ postproc_subst_rhs () if the `p' modifier was supplied and the caller should just print the returned string. Returns the new index into string in *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */ +/* need current line for !# */ static int -history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_line) - char *string; - int start, qc, *end_index_ptr; - char **ret_string; - char *current_line; /* for !# */ +history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line) { int i, n, starting_index; int substitute_globally, subst_bywords, want_quotes, print_only; @@ -908,9 +895,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l while (0) int -history_expand (hstring, output) - char *hstring; - char **output; +history_expand (char *hstring, char **output) { register int j; int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag; @@ -1249,9 +1234,7 @@ history_expand (hstring, output) CALLER_INDEX is the offset in SPEC to start looking; it is updated to point to just after the last character parsed. */ static char * -get_history_word_specifier (spec, from, caller_index) - char *spec, *from; - int *caller_index; +get_history_word_specifier (char *spec, char *from, int *caller_index) { register int i = *caller_index; int first, last; @@ -1357,9 +1340,7 @@ get_history_word_specifier (spec, from, caller_index) tokens, so that FIRST = -1 means the next to last token on the line). If LAST is `$' the last arg from STRING is used. */ char * -history_arg_extract (first, last, string) - int first, last; - const char *string; +history_arg_extract (int first, int last, const char *string) { register int i, len; char *result; @@ -1418,9 +1399,7 @@ history_arg_extract (first, last, string) } static int -history_tokenize_word (string, ind) - const char *string; - int ind; +history_tokenize_word (const char *string, int ind) { register int i, j; int delimiter, nestdelim, delimopen; @@ -1570,9 +1549,7 @@ get_word: } static char * -history_substring (string, start, end) - const char *string; - int start, end; +history_substring (const char *string, int start, int end) { register int len; register char *result; @@ -1589,9 +1566,7 @@ history_substring (string, start, end) WIND. The position in the returned array of strings is returned in *INDP. */ static char ** -history_tokenize_internal (string, wind, indp) - const char *string; - int wind, *indp; +history_tokenize_internal (const char *string, int wind, int *indp) { char **result; register int i, start, result_index, size; @@ -1644,17 +1619,14 @@ history_tokenize_internal (string, wind, indp) /* Return an array of tokens, much as the shell might. The tokens are parsed out of STRING. */ char ** -history_tokenize (string) - const char *string; +history_tokenize (const char *string) { return (history_tokenize_internal (string, -1, (int *)NULL)); } /* Free members of WORDS from START to an empty string */ static void -freewords (words, start) - char **words; - int start; +freewords (char **words, int start) { register int i; @@ -1666,9 +1638,7 @@ freewords (words, start) in the history line LINE. Used to save the word matched by the last history !?string? search. */ static char * -history_find_word (line, ind) - char *line; - int ind; +history_find_word (char *line, int ind) { char **words, *s; int i, wind; diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c index 5b057cdef..399bcc39f 100644 --- a/lib/readline/histfile.c +++ b/lib/readline/histfile.c @@ -1,6 +1,6 @@ /* histfile.c - functions to manipulate the history file. */ -/* Copyright (C) 1989-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -143,8 +143,7 @@ static int histfile_restore PARAMS((const char *, const char *)); filename. This only matters when you don't specify the filename to read_history (), or write_history (). */ static char * -history_filename (filename) - const char *filename; +history_filename (const char *filename) { char *return_val; const char *home; @@ -179,8 +178,7 @@ history_filename (filename) } static char * -history_backupfile (filename) - const char *filename; +history_backupfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; @@ -208,8 +206,7 @@ history_backupfile (filename) } static char * -history_tempfile (filename) - const char *filename; +history_tempfile (const char *filename) { const char *fn; char *ret, linkbuf[PATH_MAX+1]; @@ -251,8 +248,7 @@ history_tempfile (filename) If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int -read_history (filename) - const char *filename; +read_history (const char *filename) { return (read_history_range (filename, 0, -1)); } @@ -263,9 +259,7 @@ read_history (filename) until the end of the file. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ int -read_history_range (filename, from, to) - const char *filename; - int from, to; +read_history_range (const char *filename, int from, int to) { register char *line_start, *line_end, *p; char *input, *buffer, *bufend, *last_ts; @@ -289,6 +283,16 @@ read_history_range (filename, from, to) if ((file < 0) || (fstat (file, &finfo) == -1)) goto error_and_exit; + if (S_ISREG (finfo.st_mode) == 0) + { +#ifdef EFTYPE + errno = EFTYPE; +#else + errno = EINVAL; +#endif + goto error_and_exit; + } + file_size = (size_t)finfo.st_size; /* check for overflow on very large files */ @@ -298,6 +302,12 @@ read_history_range (filename, from, to) goto error_and_exit; } + if (file_size == 0) + { + free (input); + return 0; /* don't waste time if we don't have to */ + } + #ifdef HISTORY_USE_MMAP /* We map read/write and private so we can change newlines to NULs without affecting the underlying object. */ @@ -344,6 +354,7 @@ read_history_range (filename, from, to) /* Start at beginning of file, work to end. */ bufend = buffer + chars_read; + *bufend = '\0'; /* null-terminate buffer for timestamp checks */ current_line = 0; /* Heuristic: the history comment character rarely changes, so assume we @@ -427,9 +438,7 @@ read_history_range (filename, from, to) /* Save FILENAME to BACK, handling case where FILENAME is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int -histfile_backup (filename, back) - const char *filename; - const char *back; +histfile_backup (const char *filename, const char *back) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; @@ -448,9 +457,7 @@ histfile_backup (filename, back) /* Restore ORIG from BACKUP handling case where ORIG is a symlink (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ static int -histfile_restore (backup, orig) - const char *backup; - const char *orig; +histfile_restore (const char *backup, const char *orig) { #if defined (HAVE_READLINK) char linkbuf[PATH_MAX+1]; @@ -470,9 +477,7 @@ histfile_restore (backup, orig) If FNAME is NULL, then use ~/.history. Writes a new file and renames it to the original name. Returns 0 on success, errno on failure. */ int -history_truncate_file (fname, lines) - const char *fname; - int lines; +history_truncate_file (const char *fname, int lines) { char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */ int file, chars_read, rv, orig_lines, exists, r; @@ -606,12 +611,14 @@ history_truncate_file (fname, lines) history_lines_written_to_file = 0; } +#if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) r = chown (filename, finfo.st_uid, finfo.st_gid); +#endif xfree (filename); FREE (tempname); @@ -623,9 +630,7 @@ history_truncate_file (fname, lines) from the history list to FILENAME. OVERWRITE is non-zero if you wish to replace FILENAME with the entries. */ static int -history_do_write (filename, nelements, overwrite) - const char *filename; - int nelements, overwrite; +history_do_write (const char *filename, int nelements, int overwrite) { register int i; char *output, *tempname, *histname; @@ -753,12 +758,14 @@ mmap_error: history_lines_written_to_file = 0; } +#if defined (HAVE_CHOWN) /* Make sure the new filename is owned by the same user as the old. If one user is running this, it's a no-op. If the shell is running after sudo with a shared history file, we don't want to leave the history file owned by root. */ if (rv == 0 && exists) mode = chown (histname, finfo.st_uid, finfo.st_gid); +#endif FREE (histname); FREE (tempname); @@ -769,9 +776,7 @@ mmap_error: /* Append NELEMENT entries to FILENAME. The entries appended are from the end of the list minus NELEMENTs up to the end of the list. */ int -append_history (nelements, filename) - int nelements; - const char *filename; +append_history (int nelements, const char *filename) { return (history_do_write (filename, nelements, HISTORY_APPEND)); } @@ -780,8 +785,7 @@ append_history (nelements, filename) then write the history list to ~/.history. Values returned are as in read_history ().*/ int -write_history (filename) - const char *filename; +write_history (const char *filename) { return (history_do_write (filename, history_length, HISTORY_OVERWRITE)); } diff --git a/lib/readline/histlib.h b/lib/readline/histlib.h index 28cad14a5..9627b2450 100644 --- a/lib/readline/histlib.h +++ b/lib/readline/histlib.h @@ -51,9 +51,9 @@ #endif #ifndef member -# ifndef strchr +# if !defined (strchr) && !defined (__STDC__) extern char *strchr (); -# endif +# endif /* !strchr && !__STDC__ */ #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0) #endif @@ -69,11 +69,17 @@ extern char *strchr (); #define NO_PREV_SUBST 4 /* Possible definitions for history starting point specification. */ -#define ANCHORED_SEARCH 1 -#define NON_ANCHORED_SEARCH 0 +#define NON_ANCHORED_SEARCH 0 +#define ANCHORED_SEARCH 0x01 +#define PATTERN_SEARCH 0x02 /* Possible definitions for what style of writing the history file we want. */ #define HISTORY_APPEND 0 #define HISTORY_OVERWRITE 1 +/* internal extern function declarations used by other parts of the library */ + +/* histsearch.c */ +extern int _hs_history_patsearch PARAMS((const char *, int, int)); + #endif /* !_HISTLIB_H_ */ diff --git a/lib/readline/history.c b/lib/readline/history.c index 129c57a30..67158b14b 100644 --- a/lib/readline/history.c +++ b/lib/readline/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -97,7 +97,7 @@ int history_base = 1; /* Return the current HISTORY_STATE of the history. */ HISTORY_STATE * -history_get_history_state () +history_get_history_state (void) { HISTORY_STATE *state; @@ -115,8 +115,7 @@ history_get_history_state () /* Set the state of the current history array to STATE. */ void -history_set_history_state (state) - HISTORY_STATE *state; +history_set_history_state (HISTORY_STATE *state) { the_history = state->entries; history_offset = state->offset; @@ -129,7 +128,7 @@ history_set_history_state (state) /* Begin a session in which the history functions might be used. This initializes interactive variables. */ void -using_history () +using_history (void) { history_offset = history_length; } @@ -138,7 +137,7 @@ using_history () This just adds up the lengths of the_history->lines and the associated timestamps. */ int -history_total_bytes () +history_total_bytes (void) { register int i, result; @@ -151,7 +150,7 @@ history_total_bytes () /* Returns the magic number which says what history element we are looking at now. In this implementation, it returns history_offset. */ int -where_history () +where_history (void) { return (history_offset); } @@ -159,8 +158,7 @@ where_history () /* Make the current history item be the one at POS, an absolute index. Returns zero if POS is out of range, else non-zero. */ int -history_set_pos (pos) - int pos; +history_set_pos (int pos) { if (pos > history_length || pos < 0 || !the_history) return (0); @@ -172,7 +170,7 @@ history_set_pos (pos) is the actual array of data, and could be bashed or made corrupt easily. The array is terminated with a NULL pointer. */ HIST_ENTRY ** -history_list () +history_list (void) { return (the_history); } @@ -180,7 +178,7 @@ history_list () /* Return the history entry at the current position, as determined by history_offset. If there is no entry there, return a NULL pointer. */ HIST_ENTRY * -current_history () +current_history (void) { return ((history_offset == history_length) || the_history == 0) ? (HIST_ENTRY *)NULL @@ -191,7 +189,7 @@ current_history () a pointer to that entry. If there is no previous entry then return a NULL pointer. */ HIST_ENTRY * -previous_history () +previous_history (void) { return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL; } @@ -200,7 +198,7 @@ previous_history () a pointer to that entry. If there is no next entry then return a NULL pointer. */ HIST_ENTRY * -next_history () +next_history (void) { return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset]; } @@ -208,8 +206,7 @@ next_history () /* Return the history entry which is logically at OFFSET in the history array. OFFSET is relative to history_base. */ HIST_ENTRY * -history_get (offset) - int offset; +history_get (int offset) { int local_index; @@ -220,9 +217,7 @@ history_get (offset) } HIST_ENTRY * -alloc_history_entry (string, ts) - char *string; - char *ts; +alloc_history_entry (char *string, char *ts) { HIST_ENTRY *temp; @@ -236,8 +231,7 @@ alloc_history_entry (string, ts) } time_t -history_get_time (hist) - HIST_ENTRY *hist; +history_get_time (HIST_ENTRY *hist) { char *ts; time_t t; @@ -255,7 +249,7 @@ history_get_time (hist) } static char * -hist_inittime () +hist_inittime (void) { time_t t; char ts[64], *ret; @@ -275,8 +269,7 @@ hist_inittime () /* Place STRING at the end of the history list. The data field is set to NULL. */ void -add_history (string) - const char *string; +add_history (const char *string) { HIST_ENTRY *temp; int new_length; @@ -335,8 +328,7 @@ add_history (string) /* Change the time stamp of the most recent history entry to STRING. */ void -add_history_time (string) - const char *string; +add_history_time (const char *string) { HIST_ENTRY *hs; @@ -350,8 +342,7 @@ add_history_time (string) /* Free HIST and return the data so the calling application can free it if necessary and desired. */ histdata_t -free_history_entry (hist) - HIST_ENTRY *hist; +free_history_entry (HIST_ENTRY *hist) { histdata_t x; @@ -365,8 +356,7 @@ free_history_entry (hist) } HIST_ENTRY * -copy_history_entry (hist) - HIST_ENTRY *hist; +copy_history_entry (HIST_ENTRY *hist) { HIST_ENTRY *ret; char *ts; @@ -388,10 +378,7 @@ copy_history_entry (hist) the old entry so you can dispose of the data. In the case of an invalid WHICH, a NULL pointer is returned. */ HIST_ENTRY * -replace_history_entry (which, line, data) - int which; - const char *line; - histdata_t data; +replace_history_entry (int which, const char *line, histdata_t data) { HIST_ENTRY *temp, *old_value; @@ -413,17 +400,26 @@ replace_history_entry (which, line, data) end of the current line first. This can be used to construct multi-line history entries while reading lines from the history file. */ void -_hs_append_history_line (which, line) - int which; - const char *line; +_hs_append_history_line (int which, const char *line) { HIST_ENTRY *hent; - size_t newlen, curlen; + size_t newlen, curlen, minlen; char *newline; hent = the_history[which]; curlen = strlen (hent->line); - newlen = curlen + strlen (line) + 2; + minlen = curlen + strlen (line) + 2; /* min space needed */ + if (curlen > 256) /* XXX - for now */ + { + newlen = 512; /* now realloc in powers of 2 */ + /* we recalcluate every time; the operations are cheap */ + while (newlen < minlen) + newlen <<= 1; + } + else + newlen = minlen; + /* Assume that realloc returns the same pointer and doesn't try a new + alloc/copy if the new size is the same as the one last passed. */ newline = realloc (hent->line, newlen); if (newline) { @@ -440,9 +436,7 @@ _hs_append_history_line (which, line) WHICH >= 0 means to replace that particular history entry's data, as long as it matches OLD. */ void -_hs_replace_history_data (which, old, new) - int which; - histdata_t *old, *new; +_hs_replace_history_data (int which, histdata_t *old, histdata_t *new) { HIST_ENTRY *entry; register int i, last; @@ -482,29 +476,76 @@ _hs_replace_history_data (which, old, new) element is returned to you so you can free the line, data, and containing structure. */ HIST_ENTRY * -remove_history (which) - int which; +remove_history (int which) { HIST_ENTRY *return_value; register int i; +#if 1 + int nentries; + HIST_ENTRY **start, **end; +#endif if (which < 0 || which >= history_length || history_length == 0 || the_history == 0) return ((HIST_ENTRY *)NULL); return_value = the_history[which]; +#if 1 + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + nentries = history_length - which; + start = the_history + which; + end = start + 1; + memmove (start, end, nentries * sizeof (HIST_ENTRY *)); +#else for (i = which; i < history_length; i++) the_history[i] = the_history[i + 1]; +#endif history_length--; return (return_value); } +HIST_ENTRY ** +remove_history_range (int first, int last) +{ + HIST_ENTRY **return_value; + register int i; + int nentries; + HIST_ENTRY **start, **end; + + if (the_history == 0 || history_length == 0) + return ((HIST_ENTRY **)NULL); + if (first < 0 || first >= history_length || last < 0 || last >= history_length) + return ((HIST_ENTRY **)NULL); + if (first > last) + return (HIST_ENTRY **)NULL; + + nentries = last - first + 1; + return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *)); + if (return_value == 0) + return return_value; + + /* Return all the deleted entries in a list */ + for (i = first ; i <= last; i++) + return_value[i - first] = the_history[i]; + return_value[i - first] = (HIST_ENTRY *)NULL; + + /* Copy the rest of the entries, moving down NENTRIES slots. Copy includes + trailing NULL. */ + start = the_history + first; + end = the_history + last + 1; + memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *)); + + history_length -= nentries; + + return (return_value); +} + /* Stifle the history list, remembering only MAX number of lines. */ void -stifle_history (max) - int max; +stifle_history (int max) { register int i, j; @@ -532,7 +573,7 @@ stifle_history (max) number of history entries. The value is positive if the history was stifled, negative if it wasn't. */ int -unstifle_history () +unstifle_history (void) { if (history_stifled) { @@ -544,13 +585,13 @@ unstifle_history () } int -history_is_stifled () +history_is_stifled (void) { return (history_stifled); } void -clear_history () +clear_history (void) { register int i; @@ -562,4 +603,5 @@ clear_history () } history_offset = history_length = 0; + history_base = 1; /* reset history base to default */ } diff --git a/lib/readline/history.h b/lib/readline/history.h index 8ce7c805d..fceb99cae 100644 --- a/lib/readline/history.h +++ b/lib/readline/history.h @@ -86,11 +86,13 @@ extern void add_history PARAMS((const char *)); STRING. */ extern void add_history_time PARAMS((const char *)); -/* A reasonably useless function, only here for completeness. WHICH - is the magic number that tells us which element to delete. The - elements are numbered from 0. */ +/* Remove an entry from the history list. WHICH is the magic number that + tells us which element to delete. The elements are numbered from 0. */ extern HIST_ENTRY *remove_history PARAMS((int)); +/* Remove a set of entries from the history list: FIRST to LAST, inclusive */ +extern HIST_ENTRY **remove_history_range PARAMS((int, int)); + /* Allocate a history entry consisting of STRING and TIMESTAMP and return a pointer to it. */ extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); diff --git a/lib/readline/histsearch.c b/lib/readline/histsearch.c index 1ad55d22d..b6771fda2 100644 --- a/lib/readline/histsearch.c +++ b/lib/readline/histsearch.c @@ -1,6 +1,6 @@ /* histsearch.c -- searching the history list. */ -/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -39,8 +39,13 @@ # include #endif +#if defined (HAVE_FNMATCH) +# include +#endif + #include "history.h" #include "histlib.h" +#include "xmalloc.h" /* The list of alternate characters that can delimit a history search string. */ @@ -59,18 +64,22 @@ static int history_search_internal PARAMS((const char *, int, int)); returned. */ static int -history_search_internal (string, direction, anchored) - const char *string; - int direction, anchored; +history_search_internal (const char *string, int direction, int flags) { register int i, reverse; register char *line; register int line_index; - int string_len; + int string_len, anchored, patsearch; HIST_ENTRY **the_history; /* local */ i = history_offset; reverse = (direction < 0); + anchored = (flags & ANCHORED_SEARCH); +#if defined (HAVE_FNMATCH) + patsearch = (flags & PATTERN_SEARCH); +#else + patsearch = 0; +#endif /* Take care of trivial cases first. */ if (string == 0 || *string == '\0') @@ -98,7 +107,7 @@ history_search_internal (string, direction, anchored) line_index = strlen (line); /* If STRING is longer than line, no match. */ - if (string_len > line_index) + if (patsearch == 0 && (string_len > line_index)) { NEXT_LINE (); continue; @@ -107,6 +116,17 @@ history_search_internal (string, direction, anchored) /* Handle anchored searches first. */ if (anchored == ANCHORED_SEARCH) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line, 0) == 0) + { + history_offset = i; + return (0); + } + } + else +#endif if (STREQN (string, line, string_len)) { history_offset = i; @@ -120,10 +140,21 @@ history_search_internal (string, direction, anchored) /* Do substring search. */ if (reverse) { - line_index -= string_len; + line_index -= (patsearch == 0) ? string_len : 1; while (line_index >= 0) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; @@ -141,6 +172,17 @@ history_search_internal (string, direction, anchored) while (line_index < limit) { +#if defined (HAVE_FNMATCH) + if (patsearch) + { + if (fnmatch (string, line + line_index, 0) == 0) + { + history_offset = i; + return (line_index); + } + } + else +#endif if (STREQN (string, line + line_index, string_len)) { history_offset = i; @@ -153,20 +195,59 @@ history_search_internal (string, direction, anchored) } } +int +_hs_history_patsearch (const char *string, int direction, int flags) +{ + char *pat; + size_t len; + int ret, unescaped_backslash; + +#if defined (HAVE_FNMATCH) + /* Assume that the string passed does not have a leading `^' and any + anchored search request is captured in FLAGS */ + len = strlen (string); + ret = len - 1; + /* fnmatch is required to reject a pattern that ends with an unescaped + backslash */ + if (unescaped_backslash = (string[ret] == '\\')) + { + while (ret > 0 && string[--ret] == '\\') + unescaped_backslash = 1 - unescaped_backslash; + } + if (unescaped_backslash) + return -1; + pat = (char *)xmalloc (len + 2); + /* Attempt to reduce the number of searches by tacking a `*' onto the end + of a pattern that doesn't have one. Assume a pattern that ends in a + backslash contains an even number of trailing backslashes; we check + above */ + strcpy (pat, string); + if (pat[len - 1] != '*') + { + pat[len] = '*'; /* XXX */ + pat[len+1] = '\0'; + } +#else + pat = string; +#endif + + ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH); + + if (pat != string) + free (pat); + return ret; +} + /* Do a non-anchored search for STRING through the history in DIRECTION. */ int -history_search (string, direction) - const char *string; - int direction; +history_search (const char *string, int direction) { return (history_search_internal (string, direction, NON_ANCHORED_SEARCH)); } /* Do an anchored search for string through the history in DIRECTION. */ int -history_search_prefix (string, direction) - const char *string; - int direction; +history_search_prefix (const char *string, int direction) { return (history_search_internal (string, direction, ANCHORED_SEARCH)); } @@ -175,9 +256,7 @@ history_search_prefix (string, direction) backwards. POS is an absolute index into the history list at which point to begin searching. */ int -history_search_pos (string, dir, pos) - const char *string; - int dir, pos; +history_search_pos (const char *string, int dir, int pos) { int ret, old; diff --git a/lib/readline/input.c b/lib/readline/input.c index 286897d77..00916456e 100644 --- a/lib/readline/input.c +++ b/lib/readline/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -76,6 +76,10 @@ extern int errno; # define O_NDELAY O_NONBLOCK /* Posix style */ #endif +#if defined (HAVE_PSELECT) +extern sigset_t _rl_orig_sigset; +#endif + /* Non-null means it is a pointer to a function to run while waiting for character input. */ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL; @@ -98,6 +102,7 @@ static int rl_gather_tyi PARAMS((void)); /* Windows isatty returns true for every character device, including the null device, so we need to perform additional checks. */ #if defined (_WIN32) && !defined (__CYGWIN__) +#include #include #define WIN32_LEAN_AND_MEAN 1 #include @@ -124,13 +129,13 @@ static int ibuffer_len = sizeof (ibuffer) - 1; #define any_typein (push_index != pop_index) int -_rl_any_typein () +_rl_any_typein (void) { return any_typein; } int -_rl_pushed_input_available () +_rl_pushed_input_available (void) { return (push_index != pop_index); } @@ -138,7 +143,7 @@ _rl_pushed_input_available () /* Return the amount of space available in the buffer for stuffing characters. */ static int -ibuffer_space () +ibuffer_space (void) { if (pop_index > push_index) return (pop_index - push_index - 1); @@ -150,8 +155,7 @@ ibuffer_space () Return the key in KEY. Result is non-zero if there was a key, or 0 if there wasn't. */ static int -rl_get_char (key) - int *key; +rl_get_char (int *key) { if (push_index == pop_index) return (0); @@ -171,8 +175,7 @@ rl_get_char (key) Returns non-zero if successful, zero if there is no space left in the buffer. */ int -_rl_unget_char (key) - int key; +_rl_unget_char (int key) { if (ibuffer_space ()) { @@ -189,7 +192,7 @@ _rl_unget_char (key) IBUFFER. Otherwise, just return. Returns number of characters read (0 if none available) and -1 on error (EIO). */ static int -rl_gather_tyi () +rl_gather_tyi (void) { int tty; register int tem, result; @@ -292,8 +295,7 @@ rl_gather_tyi () } int -rl_set_keyboard_input_timeout (u) - int u; +rl_set_keyboard_input_timeout (int u) { int o; @@ -310,7 +312,7 @@ rl_set_keyboard_input_timeout (u) the user, it should use _rl_input_queued(timeout_value_in_microseconds) instead. */ int -_rl_input_available () +_rl_input_available (void) { #if defined(HAVE_SELECT) fd_set readfds, exceptfds; @@ -352,8 +354,7 @@ _rl_input_available () } int -_rl_input_queued (t) - int t; +_rl_input_queued (int t) { int old_timeout, r; @@ -364,8 +365,7 @@ _rl_input_queued (t) } void -_rl_insert_typein (c) - int c; +_rl_insert_typein (int c) { int key, t, i; char *string; @@ -390,8 +390,7 @@ _rl_insert_typein (c) /* Add KEY to the buffer of characters to be read. Returns 1 if the character was stuffed correctly; 0 otherwise. */ int -rl_stuff_char (key) - int key; +rl_stuff_char (int key) { if (ibuffer_space () == 0) return 0; @@ -415,8 +414,7 @@ rl_stuff_char (key) /* Make C be the next command to be executed. */ int -rl_execute_next (c) - int c; +rl_execute_next (int c) { rl_pending_input = c; RL_SETSTATE (RL_STATE_INPUTPENDING); @@ -425,7 +423,7 @@ rl_execute_next (c) /* Clear any pending input pushed with rl_execute_next() */ int -rl_clear_pending_input () +rl_clear_pending_input (void) { rl_pending_input = 0; RL_UNSETSTATE (RL_STATE_INPUTPENDING); @@ -440,20 +438,20 @@ rl_clear_pending_input () /* Read a key, including pending input. */ int -rl_read_key () +rl_read_key (void) { int c, r; if (rl_pending_input) { - c = rl_pending_input; + c = rl_pending_input; /* XXX - cast to unsigned char if > 0? */ rl_clear_pending_input (); } else { /* If input is coming from a macro, then use that. */ if (c = _rl_next_macro_key ()) - return (c); + return ((unsigned char)c); /* If the user has an event function, then call it periodically. */ if (rl_event_hook) @@ -490,8 +488,7 @@ rl_read_key () } int -rl_getc (stream) - FILE *stream; +rl_getc (FILE *stream) { int result; unsigned char c; @@ -512,10 +509,15 @@ rl_getc (stream) #endif result = 0; #if defined (HAVE_PSELECT) - sigemptyset (&empty_set); FD_ZERO (&readfds); FD_SET (fileno (stream), &readfds); +# if defined (HANDLE_SIGNALS) + result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset); +# else + sigemptyset (&empty_set); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); +# endif /* HANDLE_SIGNALS */ #endif if (result >= 0) result = read (fileno (stream), &c, sizeof (unsigned char)); @@ -602,9 +604,7 @@ handle_error: #if defined (HANDLE_MULTIBYTE) /* read multibyte char */ int -_rl_read_mbchar (mbchar, size) - char *mbchar; - int size; +_rl_read_mbchar (char *mbchar, int size) { int mb_len, c; size_t mbchar_bytes_length; @@ -653,12 +653,9 @@ _rl_read_mbchar (mbchar, size) may be FIRST. Used by the search functions, among others. Very similar to _rl_read_mbchar. */ int -_rl_read_mbstring (first, mb, mlen) - int first; - char *mb; - int mlen; +_rl_read_mbstring (int first, char *mb, int mlen) { - int i, c; + int i, c, n; mbstate_t ps; c = first; @@ -667,7 +664,8 @@ _rl_read_mbstring (first, mb, mlen) { mb[i] = (char)c; memset (&ps, 0, sizeof (mbstate_t)); - if (_rl_get_char_len (mb, &ps) == -2) + n = _rl_get_char_len (mb, &ps); + if (n == -2) { /* Read more for multibyte character */ RL_SETSTATE (RL_STATE_MOREINPUT); diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index 819fcbce4..fa58e848f 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -78,8 +78,7 @@ static int last_isearch_string_len; static char * const default_isearch_terminators = "\033\012"; _rl_search_cxt * -_rl_scxt_alloc (type, flags) - int type, flags; +_rl_scxt_alloc (int type, int flags) { _rl_search_cxt *cxt; @@ -120,9 +119,7 @@ _rl_scxt_alloc (type, flags) } void -_rl_scxt_dispose (cxt, flags) - _rl_search_cxt *cxt; - int flags; +_rl_scxt_dispose (_rl_search_cxt *cxt, int flags) { FREE (cxt->search_string); FREE (cxt->allocated_line); @@ -134,8 +131,7 @@ _rl_scxt_dispose (cxt, flags) /* Search backwards through the history looking for a string which is typed interactively. Start with the current line. */ int -rl_reverse_search_history (sign, key) - int sign, key; +rl_reverse_search_history (int sign, int key) { return (rl_search_history (-sign, key)); } @@ -143,8 +139,7 @@ rl_reverse_search_history (sign, key) /* Search forwards through the history looking for a string which is typed interactively. Start with the current line. */ int -rl_forward_search_history (sign, key) - int sign, key; +rl_forward_search_history (int sign, int key) { return (rl_search_history (sign, key)); } @@ -155,9 +150,7 @@ rl_forward_search_history (sign, key) WHERE is the history list number of the current line. If it is -1, then this line is the starting one. */ static void -rl_display_search (search_string, flags, where) - char *search_string; - int flags, where; +rl_display_search (char *search_string, int flags, int where) { char *message; int msglen, searchlen; @@ -206,8 +199,7 @@ rl_display_search (search_string, flags, where) } static _rl_search_cxt * -_rl_isearch_init (direction) - int direction; +_rl_isearch_init (int direction) { _rl_search_cxt *cxt; register int i; @@ -267,11 +259,10 @@ _rl_isearch_init (direction) } static void -_rl_isearch_fini (cxt) - _rl_search_cxt *cxt; +_rl_isearch_fini (_rl_search_cxt *cxt) { /* First put back the original state. */ - strcpy (rl_line_buffer, cxt->lines[cxt->save_line]); + rl_replace_line (cxt->lines[cxt->save_line], 0); rl_restore_prompt (); @@ -301,13 +292,13 @@ _rl_isearch_fini (cxt) rl_point = cxt->sline_index; /* Don't worry about where to put the mark here; rl_get_previous_history and rl_get_next_history take care of it. */ + _rl_fix_point (0); rl_clear_message (); } int -_rl_search_getchar (cxt) - _rl_search_cxt *cxt; +_rl_search_getchar (_rl_search_cxt *cxt) { int c; @@ -334,9 +325,7 @@ _rl_search_getchar (cxt) -1 if the caller should just free the context and return, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ int -_rl_isearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; +_rl_isearch_dispatch (_rl_search_cxt *cxt, int c) { int n, wstart, wlen, limit, cval; rl_command_func_t *f; @@ -527,7 +516,7 @@ add_character: } return (1); } - else if (cxt->sflags & SF_REVERSE) + else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0) cxt->sline_index--; else if (cxt->sline_index != cxt->sline_len) cxt->sline_index++; @@ -676,6 +665,12 @@ add_character: } else cxt->sline_index += cxt->direction; + + if (cxt->sline_index < 0) + { + cxt->sline_index = 0; + break; + } } if (cxt->sflags & SF_FOUND) break; @@ -703,7 +698,12 @@ add_character: (cxt->search_string_index > cxt->sline_len)); if (cxt->sflags & SF_FAILED) - break; + { + /* XXX - reset sline_index if < 0 */ + if (cxt->sline_index < 0) + cxt->sline_index = 0; + break; + } /* Now set up the line for searching... */ cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0; @@ -734,9 +734,7 @@ add_character: } int -_rl_isearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; +_rl_isearch_cleanup (_rl_search_cxt *cxt, int r) { if (r >= 0) _rl_isearch_fini (cxt); @@ -753,8 +751,7 @@ _rl_isearch_cleanup (cxt, r) DIRECTION is which direction to search; >= 0 means forward, < 0 means backwards. */ static int -rl_search_history (direction, invoking_key) - int direction, invoking_key; +rl_search_history (int direction, int invoking_key) { _rl_search_cxt *cxt; /* local for now, but saved globally */ int c, r; @@ -792,8 +789,7 @@ rl_search_history (direction, invoking_key) If _rl_isearch_dispatch finishes searching, this function is responsible for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */ int -_rl_isearch_callback (cxt) - _rl_search_cxt *cxt; +_rl_isearch_callback (_rl_search_cxt *cxt) { int c, r; diff --git a/lib/readline/keymaps.c b/lib/readline/keymaps.c index 58661e298..4ade30bcd 100644 --- a/lib/readline/keymaps.c +++ b/lib/readline/keymaps.c @@ -1,6 +1,6 @@ /* keymaps.c -- Functions and keymaps for the GNU Readline library. */ -/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -54,7 +54,7 @@ /* Return a new, empty keymap. Free it with free() when you are done. */ Keymap -rl_make_bare_keymap () +rl_make_bare_keymap (void) { register int i; Keymap keymap; @@ -77,11 +77,25 @@ rl_make_bare_keymap () return (keymap); } +/* A convenience function that returns 1 if there are no keys bound to + functions in KEYMAP */ +int +rl_empty_keymap (Keymap keymap) +{ + int i; + + for (i = 0; i < ANYOTHERKEY; i++) + { + if (keymap[i].type != ISFUNC || keymap[i].function) + return 0; + } + return 1; +} + /* Return a new keymap which is a copy of MAP. Just copies pointers, does not copy text of macros or descend into child keymaps. */ Keymap -rl_copy_keymap (map) - Keymap map; +rl_copy_keymap (Keymap map) { register int i; Keymap temp; @@ -99,7 +113,7 @@ rl_copy_keymap (map) the uppercase Meta characters bound to run their lowercase equivalents, and the Meta digits bound to produce numeric arguments. */ Keymap -rl_make_keymap () +rl_make_keymap (void) { register int i; Keymap newmap; @@ -125,8 +139,7 @@ rl_make_keymap () /* Free the storage associated with MAP. */ void -rl_discard_keymap (map) - Keymap map; +rl_discard_keymap (Keymap map) { int i; @@ -154,8 +167,7 @@ rl_discard_keymap (map) /* Convenience function that discards, then frees, MAP. */ void -rl_free_keymap (map) - Keymap map; +rl_free_keymap (Keymap map) { rl_discard_keymap (map); xfree ((char *)map); diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 696f1938f..983a98482 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -1,6 +1,6 @@ /* kill.c -- kill ring management. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -78,8 +78,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int)); /* How to say that you only want to save a certain amount of kill material. */ int -rl_set_retained_kills (num) - int num; +rl_set_retained_kills (int num) { return 0; } @@ -89,9 +88,7 @@ rl_set_retained_kills (num) non-zero, and the last command was a kill, the text is appended to the current kill ring slot, otherwise prepended. */ static int -_rl_copy_to_kill_ring (text, append) - char *text; - int append; +_rl_copy_to_kill_ring (char *text, int append) { char *old, *new; int slot; @@ -122,7 +119,7 @@ _rl_copy_to_kill_ring (text, append) else { slot = rl_kill_ring_length += 1; - rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *)); + rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *)); } rl_kill_ring[--slot] = (char *)NULL; } @@ -131,7 +128,7 @@ _rl_copy_to_kill_ring (text, append) slot = rl_kill_ring_length - 1; /* If the last command was a kill, prepend or append. */ - if (_rl_last_command_was_kill && rl_editing_mode != vi_mode) + if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode) { old = rl_kill_ring[slot]; new = (char *)xmalloc (1 + strlen (old) + strlen (text)); @@ -163,8 +160,7 @@ _rl_copy_to_kill_ring (text, append) last command was not a kill command, then a new slot is made for this kill. */ int -rl_kill_text (from, to) - int from, to; +rl_kill_text (int from, int to) { char *text; @@ -198,8 +194,7 @@ rl_kill_text (from, to) /* Delete the word at point, saving the text in the kill ring. */ int -rl_kill_word (count, key) - int count, key; +rl_kill_word (int count, int key) { int orig_point; @@ -222,17 +217,16 @@ rl_kill_word (count, key) /* Rubout the word before point, placing it on the kill ring. */ int -rl_backward_kill_word (count, ignore) - int count, ignore; +rl_backward_kill_word (int count, int key) { int orig_point; if (count < 0) - return (rl_kill_word (-count, ignore)); + return (rl_kill_word (-count, key)); else { orig_point = rl_point; - rl_backward_word (count, ignore); + rl_backward_word (count, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); @@ -246,17 +240,16 @@ rl_backward_kill_word (count, ignore) /* Kill from here to the end of the line. If DIRECTION is negative, kill back to the line start instead. */ int -rl_kill_line (direction, ignore) - int direction, ignore; +rl_kill_line (int direction, int key) { int orig_point; if (direction < 0) - return (rl_backward_kill_line (1, ignore)); + return (rl_backward_kill_line (1, key)); else { orig_point = rl_point; - rl_end_of_line (1, ignore); + rl_end_of_line (1, key); if (orig_point != rl_point) rl_kill_text (orig_point, rl_point); rl_point = orig_point; @@ -269,13 +262,12 @@ rl_kill_line (direction, ignore) /* Kill backwards to the start of the line. If DIRECTION is negative, kill forwards to the line end instead. */ int -rl_backward_kill_line (direction, ignore) - int direction, ignore; +rl_backward_kill_line (int direction, int key) { int orig_point; if (direction < 0) - return (rl_kill_line (1, ignore)); + return (rl_kill_line (1, key)); else { if (rl_point == 0) @@ -283,7 +275,7 @@ rl_backward_kill_line (direction, ignore) else { orig_point = rl_point; - rl_beg_of_line (1, ignore); + rl_beg_of_line (1, key); if (rl_point != orig_point) rl_kill_text (orig_point, rl_point); if (rl_editing_mode == emacs_mode) @@ -295,8 +287,7 @@ rl_backward_kill_line (direction, ignore) /* Kill the whole line, no matter where point is. */ int -rl_kill_full_line (count, ignore) - int count, ignore; +rl_kill_full_line (int count, int key) { rl_begin_undo_group (); rl_point = 0; @@ -313,8 +304,7 @@ rl_kill_full_line (count, ignore) /* This does what C-w does in Unix. We can't prevent people from using behaviour that they expect. */ int -rl_unix_word_rubout (count, key) - int count, key; +rl_unix_word_rubout (int count, int key) { int orig_point; @@ -346,8 +336,7 @@ rl_unix_word_rubout (count, key) /* This deletes one filename component in a Unix pathname. That is, it deletes backward to directory separator (`/') or whitespace. */ int -rl_unix_filename_rubout (count, key) - int count, key; +rl_unix_filename_rubout (int count, int key) { int orig_point, c; @@ -390,8 +379,7 @@ rl_unix_filename_rubout (count, key) into the line at all, and if you aren't, then you know what you are doing. */ int -rl_unix_line_discard (count, key) - int count, key; +rl_unix_line_discard (int count, int key) { if (rl_point == 0) rl_ding (); @@ -408,8 +396,7 @@ rl_unix_line_discard (count, key) /* Copy the text in the `region' to the kill ring. If DELETE is non-zero, delete the text from the line as well. */ static int -region_kill_internal (delete) - int delete; +region_kill_internal (int delete) { char *text; @@ -427,16 +414,14 @@ region_kill_internal (delete) /* Copy the text in the region to the kill ring. */ int -rl_copy_region_to_kill (count, ignore) - int count, ignore; +rl_copy_region_to_kill (int count, int key) { return (region_kill_internal (0)); } /* Kill the text between the point and mark. */ int -rl_kill_region (count, ignore) - int count, ignore; +rl_kill_region (int count, int key) { int r, npoint; @@ -450,8 +435,7 @@ rl_kill_region (count, ignore) /* Copy COUNT words to the kill ring. DIR says which direction we look to find the words. */ static int -_rl_copy_word_as_kill (count, dir) - int count, dir; +_rl_copy_word_as_kill (int count, int dir) { int om, op, r; @@ -479,8 +463,7 @@ _rl_copy_word_as_kill (count, dir) } int -rl_copy_forward_word (count, key) - int count, key; +rl_copy_forward_word (int count, int key) { if (count < 0) return (rl_copy_backward_word (-count, key)); @@ -489,8 +472,7 @@ rl_copy_forward_word (count, key) } int -rl_copy_backward_word (count, key) - int count, key; +rl_copy_backward_word (int count, int key) { if (count < 0) return (rl_copy_forward_word (-count, key)); @@ -500,8 +482,7 @@ rl_copy_backward_word (count, key) /* Yank back the last killed text. This ignores arguments. */ int -rl_yank (count, ignore) - int count, ignore; +rl_yank (int count, int key) { if (rl_kill_ring == 0) { @@ -519,8 +500,7 @@ rl_yank (count, ignore) delete that text from the line, rotate the index down, and yank back some other text. */ int -rl_yank_pop (count, key) - int count, key; +rl_yank_pop (int count, int key) { int l, n; @@ -552,8 +532,7 @@ rl_yank_pop (count, key) #if defined (VI_MODE) int -rl_vi_yank_pop (count, key) - int count, key; +rl_vi_yank_pop (int count, int key) { int l, n; @@ -587,8 +566,7 @@ rl_vi_yank_pop (count, key) /* Yank the COUNTh argument from the previous history line, skipping HISTORY_SKIP lines before looking for the `previous line'. */ static int -rl_yank_nth_arg_internal (count, ignore, history_skip) - int count, ignore, history_skip; +rl_yank_nth_arg_internal (int count, int key, int history_skip) { register HIST_ENTRY *entry; char *arg; @@ -629,7 +607,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) inserts it right *after* rl_point. */ if (rl_editing_mode == vi_mode) { - rl_vi_append_mode (1, ignore); + rl_vi_append_mode (1, key); rl_insert_text (" "); } #endif /* VI_MODE */ @@ -643,18 +621,16 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) /* Yank the COUNTth argument from the previous history line. */ int -rl_yank_nth_arg (count, ignore) - int count, ignore; +rl_yank_nth_arg (int count, int key) { - return (rl_yank_nth_arg_internal (count, ignore, 0)); + return (rl_yank_nth_arg_internal (count, key, 0)); } /* Yank the last argument from the previous history line. This `knows' how rl_yank_nth_arg treats a count of `$'. With an argument, this behaves the same as rl_yank_nth_arg. */ int -rl_yank_last_arg (count, key) - int count, key; +rl_yank_last_arg (int count, int key) { static int history_skip = 0; static int explicit_arg_p = 0; @@ -695,8 +671,7 @@ rl_yank_last_arg (count, key) closing sequence and insert the pasted text as a single unit without interpretation. */ int -rl_bracketed_paste_begin (count, key) - int count, key; +rl_bracketed_paste_begin (int count, int key) { int retval, c; size_t len, cap; @@ -740,13 +715,12 @@ rl_bracketed_paste_begin (count, key) return (retval); } -/* A special paste command for Windows users.. */ +/* A special paste command for Windows users. */ #if defined (_WIN32) #include int -rl_paste_from_clipboard (count, key) - int count, key; +rl_paste_from_clipboard (int count, int key) { char *data, *ptr; int len; diff --git a/lib/readline/macro.c b/lib/readline/macro.c index c7017cc6b..92cc55c36 100644 --- a/lib/readline/macro.c +++ b/lib/readline/macro.c @@ -1,6 +1,6 @@ /* macro.c -- keyboard macros for readline. */ -/* Copyright (C) 1994-2009 Free Software Foundation, Inc. +/* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -49,6 +49,8 @@ #include "rlprivate.h" #include "xmalloc.h" +#define MAX_MACRO_LEVEL 16 + /* **************************************************************** */ /* */ /* Hacking Keyboard Macros */ @@ -83,13 +85,24 @@ struct saved_macro { /* The list of saved macros. */ static struct saved_macro *macro_list = (struct saved_macro *)NULL; +static int macro_level = 0; + /* Set up to read subsequent input from STRING. STRING is free ()'ed when we are done with it. */ void -_rl_with_macro_input (string) - char *string; +_rl_with_macro_input (char *string) { - _rl_push_executing_macro (); + if (macro_level > MAX_MACRO_LEVEL) + { + _rl_errmsg ("maximum macro execution nesting level exceeded"); + _rl_abort_internal (); + return; + } + +#if 0 + if (rl_executing_macro) /* XXX - later */ +#endif + _rl_push_executing_macro (); rl_executing_macro = string; executing_macro_index = 0; RL_SETSTATE(RL_STATE_MACROINPUT); @@ -98,7 +111,7 @@ _rl_with_macro_input (string) /* Return the next character available from a macro, or 0 if there are no macro characters. */ int -_rl_next_macro_key () +_rl_next_macro_key (void) { int c; @@ -117,12 +130,26 @@ _rl_next_macro_key () _rl_pop_executing_macro (); return c; #else + /* XXX - consider doing the same as the callback code, just not testing + whether we're running in callback mode */ return (rl_executing_macro[executing_macro_index++]); #endif } int -_rl_prev_macro_key () +_rl_peek_macro_key (void) +{ + if (rl_executing_macro == 0) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0)) + return (0); + if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string) + return (macro_list->string[0]); + return (rl_executing_macro[executing_macro_index]); +} + +int +_rl_prev_macro_key (void) { if (rl_executing_macro == 0) return (0); @@ -136,7 +163,7 @@ _rl_prev_macro_key () /* Save the currently executing macro on a stack of saved macros. */ void -_rl_push_executing_macro () +_rl_push_executing_macro (void) { struct saved_macro *saver; @@ -146,12 +173,14 @@ _rl_push_executing_macro () saver->string = rl_executing_macro; macro_list = saver; + + macro_level++; } /* Discard the current macro, replacing it with the one on the top of the stack of saved macros. */ void -_rl_pop_executing_macro () +_rl_pop_executing_macro (void) { struct saved_macro *macro; @@ -168,14 +197,15 @@ _rl_pop_executing_macro () xfree (macro); } + macro_level--; + if (rl_executing_macro == 0) RL_UNSETSTATE(RL_STATE_MACROINPUT); } /* Add a character to the macro being built. */ void -_rl_add_macro_char (c) - int c; +_rl_add_macro_char (int c) { if (current_macro_index + 1 >= current_macro_size) { @@ -190,7 +220,7 @@ _rl_add_macro_char (c) } void -_rl_kill_kbd_macro () +_rl_kill_kbd_macro (void) { if (current_macro) { @@ -213,8 +243,7 @@ _rl_kill_kbd_macro () definition to the end of the existing macro, and start by re-executing the existing macro. */ int -rl_start_kbd_macro (ignore1, ignore2) - int ignore1, ignore2; +rl_start_kbd_macro (int ignore1, int ignore2) { if (RL_ISSTATE (RL_STATE_MACRODEF)) { @@ -238,8 +267,7 @@ rl_start_kbd_macro (ignore1, ignore2) A numeric argument says to execute the macro right now, that many times, counting the definition as the first time. */ int -rl_end_kbd_macro (count, ignore) - int count, ignore; +rl_end_kbd_macro (int count, int ignore) { if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) { @@ -258,8 +286,7 @@ rl_end_kbd_macro (count, ignore) /* Execute the most recently defined keyboard macro. COUNT says how many times to execute it. */ int -rl_call_last_kbd_macro (count, ignore) - int count, ignore; +rl_call_last_kbd_macro (int count, int ignore) { if (current_macro == 0) _rl_abort_internal (); @@ -277,8 +304,7 @@ rl_call_last_kbd_macro (count, ignore) } int -rl_print_last_kbd_macro (count, ignore) - int count, ignore; +rl_print_last_kbd_macro (int count, int ignore) { char *m; @@ -300,8 +326,7 @@ rl_print_last_kbd_macro (count, ignore) } void -rl_push_macro_input (macro) - char *macro; +rl_push_macro_input (char *macro) { _rl_with_macro_input (macro); } diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c index 314a49b64..65543416c 100644 --- a/lib/readline/mbutil.c +++ b/lib/readline/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2015 Free Software Foundation, Inc. +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -76,9 +76,7 @@ int _rl_utf8locale = 0; #if defined(HANDLE_MULTIBYTE) static int -_rl_find_next_mbchar_internal (string, seed, count, find_non_zero) - char *string; - int seed, count, find_non_zero; +_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero) { size_t tmp, len; mbstate_t ps; @@ -94,6 +92,11 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) return seed; point = seed + _rl_adjust_point (string, seed, &ps); + /* if _rl_adjust_point returns -1, the character or string is invalid. + treat as a byte. */ + if (point == seed - 1) /* invalid */ + return seed + 1; + /* if this is true, means that seed was not pointing to a byte indicating the beginning of a multibyte character. Correct the point and consume one char. */ @@ -105,7 +108,14 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) len = strlen (string + point); if (len == 0) break; - tmp = mbrtowc (&wc, string+point, len, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string+point, len, &ps); if (MB_INVALIDCH ((size_t)tmp)) { /* invalid bytes. assume a byte represents a character */ @@ -146,9 +156,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) } /*static*/ int -_rl_find_prev_mbchar_internal (string, seed, find_non_zero) - char *string; - int seed, find_non_zero; +_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero) { mbstate_t ps; int prev, non_zero_prev, point, length; @@ -166,10 +174,17 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) prev = non_zero_prev = point = 0; while (point < seed) { - tmp = mbrtowc (&wc, string + point, length - point, &ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point])) + { + tmp = 1; + wc = (wchar_t) string[point]; + memset(&ps, 0, sizeof(mbstate_t)); + } + else + tmp = mbrtowc (&wc, string + point, length - point, &ps); if (MB_INVALIDCH ((size_t)tmp)) { - /* in this case, bytes are invalid or shorted to compose + /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ tmp = 1; @@ -206,13 +221,15 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero) if an invalid multibyte sequence was encountered. It returns (size_t)(-2) if it couldn't parse a complete multibyte character. */ int -_rl_get_char_len (src, ps) - char *src; - mbstate_t *ps; +_rl_get_char_len (char *src, mbstate_t *ps) { - size_t tmp; + size_t tmp, l; + int mb_cur_max; - tmp = mbrlen((const char *)src, (size_t)strlen (src), ps); + /* Look at no more than MB_CUR_MAX characters */ + l = (size_t)strlen (src); + mb_cur_max = MB_CUR_MAX; + tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps); if (tmp == (size_t)(-2)) { /* shorted to compose multibyte char */ @@ -237,13 +254,7 @@ _rl_get_char_len (src, ps) /* compare the specified two characters. If the characters matched, return 1. Otherwise return 0. */ int -_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2) - char *buf1; - int pos1; - mbstate_t *ps1; - char *buf2; - int pos2; - mbstate_t *ps2; +_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2) { int i, w1, w2; @@ -263,18 +274,16 @@ _rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2) /* adjust pointed byte and find mbstate of the point of string. adjusted point will be point <= adjusted_point, and returns differences of the byte(adjusted_point - point). - if point is invalied (point < 0 || more than string length), + if point is invalid (point < 0 || more than string length), it returns -1 */ int -_rl_adjust_point (string, point, ps) - char *string; - int point; - mbstate_t *ps; +_rl_adjust_point (char *string, int point, mbstate_t *ps) { - size_t tmp = 0; - int length; - int pos = 0; + size_t tmp; + int length, pos; + tmp = 0; + pos = 0; length = strlen(string); if (point < 0) return -1; @@ -283,10 +292,13 @@ _rl_adjust_point (string, point, ps) while (pos < point) { - tmp = mbrlen (string + pos, length - pos, ps); + if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos])) + tmp = 1; + else + tmp = mbrlen (string + pos, length - pos, ps); if (MB_INVALIDCH ((size_t)tmp)) { - /* in this case, bytes are invalid or shorted to compose + /* in this case, bytes are invalid or too short to compose multibyte char, so assume that the first byte represents a single character anyway. */ pos++; @@ -305,11 +317,7 @@ _rl_adjust_point (string, point, ps) } int -_rl_is_mbchar_matched (string, seed, end, mbchar, length) - char *string; - int seed, end; - char *mbchar; - int length; +_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length) { int i; @@ -323,9 +331,7 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length) } wchar_t -_rl_char_value (buf, ind) - char *buf; - int ind; +_rl_char_value (char *buf, int ind) { size_t tmp; wchar_t wc; @@ -334,9 +340,13 @@ _rl_char_value (buf, ind) if (MB_LEN_MAX == 1 || rl_byte_oriented) return ((wchar_t) buf[ind]); + if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind])) + return ((wchar_t) buf[ind]); l = strlen (buf); if (ind >= l - 1) return ((wchar_t) buf[ind]); + if (l < ind) /* Sanity check */ + l = strlen (buf+ind); memset (&ps, 0, sizeof (mbstate_t)); tmp = mbrtowc (&wc, buf + ind, l - ind, &ps); if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp)) @@ -350,9 +360,7 @@ _rl_char_value (buf, ind) characters. */ #undef _rl_find_next_mbchar int -_rl_find_next_mbchar (string, seed, count, flags) - char *string; - int seed, count, flags; +_rl_find_next_mbchar (char *string, int seed, int count, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_next_mbchar_internal (string, seed, count, flags); @@ -366,9 +374,7 @@ _rl_find_next_mbchar (string, seed, count, flags) we look for non-zero-width multibyte characters. */ #undef _rl_find_prev_mbchar int -_rl_find_prev_mbchar (string, seed, flags) - char *string; - int seed, flags; +_rl_find_prev_mbchar (char *string, int seed, int flags) { #if defined (HANDLE_MULTIBYTE) return _rl_find_prev_mbchar_internal (string, seed, flags); diff --git a/lib/readline/misc.c b/lib/readline/misc.c index f7acdee06..64b1457d2 100644 --- a/lib/readline/misc.c +++ b/lib/readline/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -76,7 +76,7 @@ int _rl_history_saved_point = -1; /* **************************************************************** */ int -_rl_arg_overflow () +_rl_arg_overflow (void) { if (rl_numeric_arg > 1000000) { @@ -92,7 +92,7 @@ _rl_arg_overflow () } void -_rl_arg_init () +_rl_arg_init (void) { rl_save_prompt (); _rl_argcxt = 0; @@ -100,7 +100,7 @@ _rl_arg_init () } int -_rl_arg_getchar () +_rl_arg_getchar (void) { int c; @@ -116,9 +116,7 @@ _rl_arg_getchar () argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ int -_rl_arg_dispatch (cxt, c) - _rl_arg_cxt cxt; - int c; +_rl_arg_dispatch (_rl_arg_cxt cxt, int c) { int key, r; @@ -193,7 +191,7 @@ _rl_arg_dispatch (cxt, c) /* Handle C-u style numeric args, as well as M--, and M-digits. */ static int -rl_digit_loop () +rl_digit_loop (void) { int c, r; @@ -220,7 +218,7 @@ rl_digit_loop () /* Create a default argument. */ void -_rl_reset_argument () +_rl_reset_argument (void) { rl_numeric_arg = rl_arg_sign = 1; rl_explicit_arg = 0; @@ -229,8 +227,7 @@ _rl_reset_argument () /* Start a numeric argument with initial value KEY */ int -rl_digit_argument (ignore, key) - int ignore, key; +rl_digit_argument (int ignore, int key) { _rl_arg_init (); if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -250,8 +247,7 @@ rl_digit_argument (ignore, key) Read a key. If the key has nothing to do with arguments, then dispatch on it. If the key is the abort character then abort. */ int -rl_universal_argument (count, key) - int count, key; +rl_universal_argument (int count, int key) { _rl_arg_init (); rl_numeric_arg *= 4; @@ -260,8 +256,7 @@ rl_universal_argument (count, key) } int -_rl_arg_callback (cxt) - _rl_arg_cxt cxt; +_rl_arg_callback (_rl_arg_cxt cxt) { int c, r; @@ -280,12 +275,14 @@ _rl_arg_callback (cxt) } r = _rl_arg_dispatch (cxt, c); + if (r > 0) + rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg); return (r != 1); } /* What to do when you abort reading an argument. */ int -rl_discard_argument () +rl_discard_argument (void) { rl_ding (); rl_clear_message (); @@ -310,7 +307,7 @@ HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL; /* Set the history pointer back to the last entry in the history. */ void -_rl_start_using_history () +_rl_start_using_history (void) { using_history (); if (_rl_saved_line_for_history) @@ -321,8 +318,7 @@ _rl_start_using_history () /* Free the contents (and containing structure) of a HIST_ENTRY. */ void -_rl_free_history_entry (entry) - HIST_ENTRY *entry; +_rl_free_history_entry (HIST_ENTRY *entry) { if (entry == 0) return; @@ -335,7 +331,7 @@ _rl_free_history_entry (entry) /* Perhaps put back the current line if it has changed. */ int -rl_maybe_replace_line () +rl_maybe_replace_line (void) { HIST_ENTRY *temp; @@ -353,7 +349,7 @@ rl_maybe_replace_line () /* Restore the _rl_saved_line_for_history if there is one. */ int -rl_maybe_unsave_line () +rl_maybe_unsave_line (void) { if (_rl_saved_line_for_history) { @@ -372,7 +368,7 @@ rl_maybe_unsave_line () /* Save the current line in _rl_saved_line_for_history. */ int -rl_maybe_save_line () +rl_maybe_save_line (void) { if (_rl_saved_line_for_history == 0) { @@ -386,7 +382,7 @@ rl_maybe_save_line () } int -_rl_free_saved_history_line () +_rl_free_saved_history_line (void) { if (_rl_saved_line_for_history) { @@ -397,7 +393,7 @@ _rl_free_saved_history_line () } static void -_rl_history_set_point () +_rl_history_set_point (void) { rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1) ? _rl_history_saved_point @@ -415,9 +411,7 @@ _rl_history_set_point () } void -rl_replace_from_history (entry, flags) - HIST_ENTRY *entry; - int flags; /* currently unused */ +rl_replace_from_history (HIST_ENTRY *entry, int flags) { /* Can't call with `1' because rl_undo_list might point to an undo list from a history entry, just like we're setting up here. */ @@ -441,7 +435,7 @@ rl_replace_from_history (entry, flags) intended to be called while actively editing, and the current line is not assumed to have been added to the history list. */ void -_rl_revert_all_lines () +_rl_revert_all_lines (void) { int hpos; HIST_ENTRY *entry; @@ -490,7 +484,7 @@ _rl_revert_all_lines () to an UNDO_LIST * saved as some history entry's data member. This should not be called while editing is active. */ void -rl_clear_history () +rl_clear_history (void) { HIST_ENTRY **hlist, *hent; register int i; @@ -524,16 +518,14 @@ rl_clear_history () /* Meta-< goes to the start of the history. */ int -rl_beginning_of_history (count, key) - int count, key; +rl_beginning_of_history (int count, int key) { return (rl_get_previous_history (1 + where_history (), key)); } /* Meta-> goes to the end of the history. (The current line). */ int -rl_end_of_history (count, key) - int count, key; +rl_end_of_history (int count, int key) { rl_maybe_replace_line (); using_history (); @@ -543,8 +535,7 @@ rl_end_of_history (count, key) /* Move down to the next history line. */ int -rl_get_next_history (count, key) - int count, key; +rl_get_next_history (int count, int key) { HIST_ENTRY *temp; @@ -582,15 +573,14 @@ rl_get_next_history (count, key) /* Get the previous item out of our interactive history, making it the current line. If there is no previous history, just ding. */ int -rl_get_previous_history (count, key) - int count, key; +rl_get_previous_history (int count, int key) { HIST_ENTRY *old_temp, *temp; if (count < 0) return (rl_get_next_history (-count, key)); - if (count == 0) + if (count == 0 || history_list () == 0) return 0; /* either not saved by rl_newline or at end of line, so set appropriately. */ @@ -620,7 +610,10 @@ rl_get_previous_history (count, key) temp = old_temp; if (temp == 0) - rl_ding (); + { + rl_maybe_unsave_line (); + rl_ding (); + } else { rl_replace_from_history (temp, 0); @@ -637,8 +630,7 @@ rl_get_previous_history (count, key) /* **************************************************************** */ /* How to toggle back and forth between editing modes. */ int -rl_vi_editing_mode (count, key) - int count, key; +rl_vi_editing_mode (int count, int key) { #if defined (VI_MODE) _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */ @@ -650,8 +642,7 @@ rl_vi_editing_mode (count, key) } int -rl_emacs_editing_mode (count, key) - int count, key; +rl_emacs_editing_mode (int count, int key) { rl_editing_mode = emacs_mode; _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */ @@ -665,8 +656,7 @@ rl_emacs_editing_mode (count, key) /* Function for the rest of the library to use to set insert/overwrite mode. */ void -_rl_set_insert_mode (im, force) - int im, force; +_rl_set_insert_mode (int im, int force) { #ifdef CURSOR_MODE _rl_set_cursor (im, force); @@ -678,8 +668,7 @@ _rl_set_insert_mode (im, force) /* Toggle overwrite mode. A positive explicit argument selects overwrite mode. A negative or zero explicit argument selects insert mode. */ int -rl_overwrite_mode (count, key) - int count, key; +rl_overwrite_mode (int count, int key) { if (rl_explicit_arg == 0) _rl_set_insert_mode (rl_insert_mode ^ 1, 0); diff --git a/lib/readline/nls.c b/lib/readline/nls.c index d3b36344f..d2f67e0d3 100644 --- a/lib/readline/nls.c +++ b/lib/readline/nls.c @@ -1,6 +1,6 @@ /* nls.c -- skeletal internationalization code. */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -74,6 +74,7 @@ static char *legal_lang_values[] = "iso88599", "iso885910", "koi8r", + "utf8", 0 }; @@ -85,8 +86,7 @@ static char *find_codeset PARAMS((char *, size_t *)); static char *_rl_get_locale_var PARAMS((const char *)); static char * -_rl_get_locale_var (v) - const char *v; +_rl_get_locale_var (const char *v) { char *lspec; @@ -100,8 +100,7 @@ _rl_get_locale_var (v) } static int -utf8locale (lspec) - char *lspec; +utf8locale (char *lspec) { char *cp; size_t len; @@ -118,16 +117,12 @@ utf8locale (lspec) #endif } -/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value - to decide the defaults for 8-bit character input and output. Returns - 1 if we set eight-bit mode. */ -int -_rl_init_eightbit () +/* Query the right environment variables and call setlocale() to initialize + the C library locale settings. */ +char * +_rl_init_locale (void) { -/* If we have setlocale(3), just check the current LC_CTYPE category - value, and go into eight-bit mode if it's not C or POSIX. */ -#if defined (HAVE_SETLOCALE) - char *lspec, *t; + char *ret, *lspec; /* Set the LC_CTYPE locale category from environment variables. */ lspec = _rl_get_locale_var ("LC_CTYPE"); @@ -140,10 +135,25 @@ _rl_init_eightbit () lspec = setlocale (LC_CTYPE, (char *)NULL); if (lspec == 0) lspec = ""; - t = setlocale (LC_CTYPE, lspec); + ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */ + + _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0; + + return ret; +} + +/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value + to decide the defaults for 8-bit character input and output. Returns + 1 if we set eight-bit mode. */ +int +_rl_init_eightbit (void) +{ +/* If we have setlocale(3), just check the current LC_CTYPE category + value, and go into eight-bit mode if it's not C or POSIX. */ +#if defined (HAVE_SETLOCALE) + char *lspec, *t; - if (t && *t) - _rl_utf8locale = utf8locale (t); + t = _rl_init_locale (); /* returns static pointer */ if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) { @@ -174,16 +184,17 @@ _rl_init_eightbit () _rl_output_meta_chars = 1; break; } + + _rl_utf8locale = *t ? STREQ (t, "utf8") : 0; + xfree (t); return (legal_lang_values[i] ? 1 : 0); - #endif /* !HAVE_SETLOCALE */ } #if !defined (HAVE_SETLOCALE) static char * -normalize_codeset (codeset) - char *codeset; +normalize_codeset (char *codeset) { size_t namelen, i; int len, all_digits; @@ -230,9 +241,7 @@ normalize_codeset (codeset) /* Isolate codeset portion of locale specification. */ static char * -find_codeset (name, lenp) - char *name; - size_t *lenp; +find_codeset (char *name, size_t *lenp) { char *cp, *language, *result; diff --git a/lib/readline/parens.c b/lib/readline/parens.c index ecc465c00..af4797736 100644 --- a/lib/readline/parens.c +++ b/lib/readline/parens.c @@ -1,6 +1,6 @@ /* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -64,8 +64,7 @@ static int _paren_blink_usec = 500000; /* Change emacs_standard_keymap to have bindings for paren matching when ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */ void -_rl_enable_paren_matching (on_or_off) - int on_or_off; +_rl_enable_paren_matching (int on_or_off) { if (on_or_off) { @@ -98,8 +97,7 @@ _rl_enable_paren_matching (on_or_off) } int -rl_set_paren_blink_timeout (u) - int u; +rl_set_paren_blink_timeout (int u) { int o; @@ -110,8 +108,7 @@ rl_set_paren_blink_timeout (u) } int -rl_insert_close (count, invoking_key) - int count, invoking_key; +rl_insert_close (int count, int invoking_key) { if (rl_explicit_arg || !rl_blink_matching_paren) _rl_insert_char (count, invoking_key); @@ -148,9 +145,7 @@ rl_insert_close (count, invoking_key) } static int -find_matching_open (string, from, closer) - char *string; - int from, closer; +find_matching_open (char *string, int from, int closer) { register int i; int opener, level, delimiter; diff --git a/lib/readline/parse-colors.c b/lib/readline/parse-colors.c index 98b2e9d10..05ec9bc36 100644 --- a/lib/readline/parse-colors.c +++ b/lib/readline/parse-colors.c @@ -2,8 +2,8 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, - Inc. + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017 + Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -297,7 +297,7 @@ get_funky_string (char **dest, const char **src, bool equals_end, size_t *output } #endif /* COLOR_SUPPORT */ -void _rl_parse_colors() +void _rl_parse_colors(void) { #if defined (COLOR_SUPPORT) const char *p; /* Pointer to character being parsed */ diff --git a/lib/readline/readline.c b/lib/readline/readline.c index e51df4f0c..4842a02e0 100644 --- a/lib/readline/readline.c +++ b/lib/readline/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -242,7 +242,7 @@ int rl_erase_empty_line = 0; /* Non-zero means to read only this many characters rather than up to a character bound to accept-line. */ -int rl_num_chars_to_read; +int rl_num_chars_to_read = 0; /* Line buffer and maintenance. */ char *rl_line_buffer = (char *)NULL; @@ -325,8 +325,7 @@ int _rl_meta_flag = 0; /* Forward declaration */ /* Set up the prompt and expand it. Called from readline() and rl_callback_handler_install (). */ int -rl_set_prompt (prompt) - const char *prompt; +rl_set_prompt (const char *prompt) { FREE (rl_prompt); rl_prompt = prompt ? savestring (prompt) : (char *)NULL; @@ -339,8 +338,7 @@ rl_set_prompt (prompt) /* Read a line of input. Prompt with PROMPT. An empty PROMPT means none. A return value of NULL means that EOF was encountered. */ char * -readline (prompt) - const char *prompt; +readline (const char *prompt) { char *value; #if 0 @@ -401,7 +399,7 @@ readline (prompt) #endif STATIC_CALLBACK void -readline_internal_setup () +readline_internal_setup (void) { char *nprompt; @@ -419,7 +417,10 @@ readline_internal_setup () #if defined (VI_MODE) if (rl_editing_mode == vi_mode) rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */ + else #endif /* VI_MODE */ + if (_rl_show_mode_in_prompt) + _rl_reset_prompt (); /* If we're not echoing, we still want to at least print a prompt, because rl_redisplay will not do it for us. If the calling application has a @@ -450,8 +451,7 @@ readline_internal_setup () } STATIC_CALLBACK char * -readline_internal_teardown (eof) - int eof; +readline_internal_teardown (int eof) { char *temp; HIST_ENTRY *entry; @@ -493,7 +493,7 @@ readline_internal_teardown (eof) } void -_rl_internal_char_cleanup () +_rl_internal_char_cleanup (void) { #if defined (VI_MODE) /* In vi mode, when you exit insert mode, the cursor moves back @@ -524,13 +524,13 @@ _rl_internal_char_cleanup () STATIC_CALLBACK int #if defined (READLINE_CALLBACKS) -readline_internal_char () +readline_internal_char (void) #else -readline_internal_charloop () +readline_internal_charloop (void) #endif { static int lastc, eof_found; - int c, code, lk; + int c, code, lk, r; lastc = EOF; @@ -626,7 +626,7 @@ readline_internal_charloop () } lastc = c; - _rl_dispatch ((unsigned char)c, _rl_keymap); + r = _rl_dispatch ((unsigned char)c, _rl_keymap); RL_CHECK_SIGNALS (); /* If there was no change in _rl_last_command_was_kill, then no kill @@ -648,7 +648,7 @@ readline_internal_charloop () #if defined (READLINE_CALLBACKS) static int -readline_internal_charloop () +readline_internal_charloop (void) { int eof = 1; @@ -662,7 +662,7 @@ readline_internal_charloop () the global rl_outstream. If rl_prompt is non-null, then that is our prompt. */ static char * -readline_internal () +readline_internal (void) { int eof; @@ -672,7 +672,7 @@ readline_internal () } void -_rl_init_line_state () +_rl_init_line_state (void) { rl_point = rl_end = rl_mark = 0; the_line = rl_line_buffer; @@ -680,14 +680,14 @@ _rl_init_line_state () } void -_rl_set_the_line () +_rl_set_the_line (void) { the_line = rl_line_buffer; } #if defined (READLINE_CALLBACKS) _rl_keyseq_cxt * -_rl_keyseq_cxt_alloc () +_rl_keyseq_cxt_alloc (void) { _rl_keyseq_cxt *cxt; @@ -703,14 +703,13 @@ _rl_keyseq_cxt_alloc () } void -_rl_keyseq_cxt_dispose (cxt) - _rl_keyseq_cxt *cxt; +_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt) { xfree (cxt); } void -_rl_keyseq_chain_dispose () +_rl_keyseq_chain_dispose (void) { _rl_keyseq_cxt *cxt; @@ -724,8 +723,7 @@ _rl_keyseq_chain_dispose () #endif static int -_rl_subseq_getchar (key) - int key; +_rl_subseq_getchar (int key) { int k; @@ -742,8 +740,7 @@ _rl_subseq_getchar (key) #if defined (READLINE_CALLBACKS) int -_rl_dispatch_callback (cxt) - _rl_keyseq_cxt *cxt; +_rl_dispatch_callback (_rl_keyseq_cxt *cxt) { int nkey, r; @@ -794,19 +791,14 @@ _rl_dispatch_callback (cxt) If the associated command is really a keymap, then read another key, and dispatch into that map. */ int -_rl_dispatch (key, map) - register int key; - Keymap map; +_rl_dispatch (register int key, Keymap map) { _rl_dispatching_keymap = map; return _rl_dispatch_subseq (key, map, 0); } int -_rl_dispatch_subseq (key, map, got_subseq) - register int key; - Keymap map; - int got_subseq; +_rl_dispatch_subseq (register int key, Keymap map, int got_subseq) { int r, newkey; char *macro; @@ -920,6 +912,15 @@ _rl_dispatch_subseq (key, map, got_subseq) _rl_pushed_input_available () == 0 && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); + /* This is a very specific test. It can possibly be generalized in + the future, but for now it handles a specific case of ESC being + the last character in a keyboard macro. */ + if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && + (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) && + (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) + return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); #endif RESIZE_KEYSEQ_BUFFER (); @@ -1014,10 +1015,7 @@ _rl_dispatch_subseq (key, map, got_subseq) } static int -_rl_subseq_result (r, map, key, got_subseq) - int r; - Keymap map; - int key, got_subseq; +_rl_subseq_result (int r, Keymap map, int key, int got_subseq) { Keymap m; int type, nt; @@ -1069,7 +1067,7 @@ _rl_subseq_result (r, map, key, got_subseq) _rl_dispatching_keymap = map; return -2; } - else if (r && got_subseq) + else if (r < 0 && got_subseq) /* XXX */ { /* OK, back up the chain. */ if (RL_ISSTATE (RL_STATE_MACROINPUT)) @@ -1091,11 +1089,11 @@ _rl_subseq_result (r, map, key, got_subseq) /* Initialize readline (and terminal if not already). */ int -rl_initialize () +rl_initialize (void) { /* If we have never been called before, initialize the terminal and data structures. */ - if (!rl_initialized) + if (rl_initialized == 0) { RL_SETSTATE(RL_STATE_INITIALIZING); readline_initialize_everything (); @@ -1103,6 +1101,8 @@ rl_initialize () rl_initialized++; RL_SETSTATE(RL_STATE_INITIALIZED); } + else + (void)_rl_init_locale (); /* check current locale */ /* Initialize the current line information. */ _rl_init_line_state (); @@ -1137,7 +1137,7 @@ rl_initialize () #if 0 #if defined (__EMX__) static void -_emx_build_environ () +_emx_build_environ (void) { TIB *tibp; PIB *pibp; @@ -1162,7 +1162,7 @@ _emx_build_environ () /* Initialize the entire state of the world. */ static void -readline_initialize_everything () +readline_initialize_everything (void) { #if 0 #if defined (__EMX__) @@ -1247,7 +1247,7 @@ readline_initialize_everything () input editing characters, then bind them to their readline equivalents, iff the characters are not bound to keymaps. */ static void -readline_default_bindings () +readline_default_bindings (void) { if (_rl_bind_stty_chars) rl_tty_set_default_bindings (_rl_keymap); @@ -1256,7 +1256,7 @@ readline_default_bindings () /* Reset the default bindings for the terminal special characters we're interested in back to rl_insert and read the new ones. */ static void -reset_default_bindings () +reset_default_bindings (void) { if (_rl_bind_stty_chars) { @@ -1267,8 +1267,7 @@ reset_default_bindings () /* Bind some common arrow key sequences in MAP. */ static void -bind_arrow_keys_internal (map) - Keymap map; +bind_arrow_keys_internal (Keymap map) { Keymap xkeymap; @@ -1296,6 +1295,15 @@ bind_arrow_keys_internal (map) rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); + /* Key bindings for control-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word); + rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word); + + /* Key bindings for alt-arrow keys */ + rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word); + rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word); + #if defined (__MINGW32__) rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); @@ -1324,7 +1332,7 @@ bind_arrow_keys_internal (map) the inputrc file a chance to bind them and create `real' keymaps for the arrow key prefix. */ static void -bind_arrow_keys () +bind_arrow_keys (void) { bind_arrow_keys_internal (emacs_standard_keymap); @@ -1339,7 +1347,7 @@ bind_arrow_keys () } static void -bind_bracketed_paste_prefix () +bind_bracketed_paste_prefix (void) { Keymap xkeymap; @@ -1361,8 +1369,7 @@ bind_bracketed_paste_prefix () /* **************************************************************** */ int -rl_save_state (sp) - struct readline_state *sp; +rl_save_state (struct readline_state *sp) { if (sp == 0) return -1; @@ -1402,8 +1409,7 @@ rl_save_state (sp) } int -rl_restore_state (sp) - struct readline_state *sp; +rl_restore_state (struct readline_state *sp) { if (sp == 0) return -1; diff --git a/lib/readline/readline.c.orig b/lib/readline/readline.c.orig deleted file mode 100644 index 55c0522ef..000000000 --- a/lib/readline/readline.c.orig +++ /dev/null @@ -1,1364 +0,0 @@ -/* readline.c -- a general facility for reading lines of input - with emacs style editing and completion. */ - -/* Copyright (C) 1987-2013 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. - - Readline 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. - - Readline 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 Readline. If not, see . -*/ - -#define READLINE_LIBRARY - -#if defined (HAVE_CONFIG_H) -# include -#endif - -#include -#include "posixstat.h" -#include -#if defined (HAVE_SYS_FILE_H) -# include -#endif /* HAVE_SYS_FILE_H */ - -#if defined (HAVE_UNISTD_H) -# include -#endif /* HAVE_UNISTD_H */ - -#if defined (HAVE_STDLIB_H) -# include -#else -# include "ansi_stdlib.h" -#endif /* HAVE_STDLIB_H */ - -#if defined (HAVE_LOCALE_H) -# include -#endif - -#include -#include "posixjmp.h" -#include - -#if !defined (errno) -extern int errno; -#endif /* !errno */ - -/* System-specific feature definitions and include files. */ -#include "rldefs.h" -#include "rlmbutil.h" - -#if defined (__EMX__) -# define INCL_DOSPROCESS -# include -#endif /* __EMX__ */ - -/* Some standard library routines. */ -#include "readline.h" -#include "history.h" - -#include "rlprivate.h" -#include "rlshell.h" -#include "xmalloc.h" - -#ifndef RL_LIBRARY_VERSION -# define RL_LIBRARY_VERSION "5.1" -#endif - -#ifndef RL_READLINE_VERSION -# define RL_READLINE_VERSION 0x0501 -#endif - -extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); - -#if defined (COLOR_SUPPORT) -extern void _rl_parse_colors PARAMS((void)); /* XXX */ -#endif - - -/* Forward declarations used in this file. */ -static char *readline_internal PARAMS((void)); -static void readline_initialize_everything PARAMS((void)); - -static void bind_arrow_keys_internal PARAMS((Keymap)); -static void bind_arrow_keys PARAMS((void)); - -static void readline_default_bindings PARAMS((void)); -static void reset_default_bindings PARAMS((void)); - -static int _rl_subseq_result PARAMS((int, Keymap, int, int)); -static int _rl_subseq_getchar PARAMS((int)); - -/* **************************************************************** */ -/* */ -/* Line editing input utility */ -/* */ -/* **************************************************************** */ - -const char *rl_library_version = RL_LIBRARY_VERSION; - -int rl_readline_version = RL_READLINE_VERSION; - -/* True if this is `real' readline as opposed to some stub substitute. */ -int rl_gnu_readline_p = 1; - -/* A pointer to the keymap that is currently in use. - By default, it is the standard emacs keymap. */ -Keymap _rl_keymap = emacs_standard_keymap; - -/* The current style of editing. */ -int rl_editing_mode = emacs_mode; - -/* The current insert mode: input (the default) or overwrite */ -int rl_insert_mode = RL_IM_DEFAULT; - -/* Non-zero if we called this function from _rl_dispatch(). It's present - so functions can find out whether they were called from a key binding - or directly from an application. */ -int rl_dispatching; - -/* Non-zero if the previous command was a kill command. */ -int _rl_last_command_was_kill = 0; - -/* The current value of the numeric argument specified by the user. */ -int rl_numeric_arg = 1; - -/* Non-zero if an argument was typed. */ -int rl_explicit_arg = 0; - -/* Temporary value used while generating the argument. */ -int rl_arg_sign = 1; - -/* Non-zero means we have been called at least once before. */ -static int rl_initialized; - -#if 0 -/* If non-zero, this program is running in an EMACS buffer. */ -static int running_in_emacs; -#endif - -/* Flags word encapsulating the current readline state. */ -int rl_readline_state = RL_STATE_NONE; - -/* The current offset in the current input line. */ -int rl_point; - -/* Mark in the current input line. */ -int rl_mark; - -/* Length of the current input line. */ -int rl_end; - -/* Make this non-zero to return the current input_line. */ -int rl_done; - -/* The last function executed by readline. */ -rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL; - -/* Top level environment for readline_internal (). */ -procenv_t _rl_top_level; - -/* The streams we interact with. */ -FILE *_rl_in_stream, *_rl_out_stream; - -/* The names of the streams that we do input and output to. */ -FILE *rl_instream = (FILE *)NULL; -FILE *rl_outstream = (FILE *)NULL; - -/* Non-zero means echo characters as they are read. Defaults to no echo; - set to 1 if there is a controlling terminal, we can get its attributes, - and the attributes include `echo'. Look at rltty.c:prepare_terminal_settings - for the code that sets it. */ -int _rl_echoing_p = 0; - -/* Current prompt. */ -char *rl_prompt = (char *)NULL; -int rl_visible_prompt_length = 0; - -/* Set to non-zero by calling application if it has already printed rl_prompt - and does not want readline to do it the first time. */ -int rl_already_prompted = 0; - -/* The number of characters read in order to type this complete command. */ -int rl_key_sequence_length = 0; - -/* If non-zero, then this is the address of a function to call just - before readline_internal_setup () prints the first prompt. */ -rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL; - -/* If non-zero, this is the address of a function to call just before - readline_internal_setup () returns and readline_internal starts - reading input characters. */ -rl_hook_func_t *rl_pre_input_hook = (rl_hook_func_t *)NULL; - -/* What we use internally. You should always refer to RL_LINE_BUFFER. */ -static char *the_line; - -/* The character that can generate an EOF. Really read from - the terminal driver... just defaulted here. */ -int _rl_eof_char = CTRL ('D'); - -/* Non-zero makes this the next keystroke to read. */ -int rl_pending_input = 0; - -/* Pointer to a useful terminal name. */ -const char *rl_terminal_name = (const char *)NULL; - -/* Non-zero means to always use horizontal scrolling in line display. */ -int _rl_horizontal_scroll_mode = 0; - -/* Non-zero means to display an asterisk at the starts of history lines - which have been modified. */ -int _rl_mark_modified_lines = 0; - -/* The style of `bell' notification preferred. This can be set to NO_BELL, - AUDIBLE_BELL, or VISIBLE_BELL. */ -int _rl_bell_preference = AUDIBLE_BELL; - -/* String inserted into the line by rl_insert_comment (). */ -char *_rl_comment_begin; - -/* Keymap holding the function currently being executed. */ -Keymap rl_executing_keymap; - -/* Keymap we're currently using to dispatch. */ -Keymap _rl_dispatching_keymap; - -/* Non-zero means to erase entire line, including prompt, on empty input lines. */ -int rl_erase_empty_line = 0; - -/* Non-zero means to read only this many characters rather than up to a - character bound to accept-line. */ -int rl_num_chars_to_read; - -/* Line buffer and maintenance. */ -char *rl_line_buffer = (char *)NULL; -int rl_line_buffer_len = 0; - -/* Key sequence `contexts' */ -_rl_keyseq_cxt *_rl_kscxt = 0; - -int rl_executing_key; -char *rl_executing_keyseq = 0; -int _rl_executing_keyseq_size = 0; - -/* Timeout (specified in milliseconds) when reading characters making up an - ambiguous multiple-key sequence */ -int _rl_keyseq_timeout = 500; - -#define RESIZE_KEYSEQ_BUFFER() \ - do \ - { \ - if (rl_key_sequence_length + 2 >= _rl_executing_keyseq_size) \ - { \ - _rl_executing_keyseq_size += 16; \ - rl_executing_keyseq = xrealloc (rl_executing_keyseq, _rl_executing_keyseq_size); \ - } \ - } \ - while (0); - -/* Forward declarations used by the display, termcap, and history code. */ - -/* **************************************************************** */ -/* */ -/* `Forward' declarations */ -/* */ -/* **************************************************************** */ - -/* Non-zero means do not parse any lines other than comments and - parser directives. */ -unsigned char _rl_parsing_conditionalized_out = 0; - -/* Non-zero means to convert characters with the meta bit set to - escape-prefixed characters so we can indirect through - emacs_meta_keymap or vi_escape_keymap. */ -int _rl_convert_meta_chars_to_ascii = 1; - -/* Non-zero means to output characters with the meta bit set directly - rather than as a meta-prefixed escape sequence. */ -int _rl_output_meta_chars = 0; - -/* Non-zero means to look at the termios special characters and bind - them to equivalent readline functions at startup. */ -int _rl_bind_stty_chars = 1; - -/* Non-zero means to go through the history list at every newline (or - whenever rl_done is set and readline returns) and revert each line to - its initial state. */ -int _rl_revert_all_at_newline = 0; - -/* Non-zero means to honor the termios ECHOCTL bit and echo control - characters corresponding to keyboard-generated signals. */ -int _rl_echo_control_chars = 1; - -/* Non-zero means to prefix the displayed prompt with a character indicating - the editing mode: @ for emacs, : for vi-command, + for vi-insert. */ -int _rl_show_mode_in_prompt = 0; - -/* **************************************************************** */ -/* */ -/* Top Level Functions */ -/* */ -/* **************************************************************** */ - -/* Non-zero means treat 0200 bit in terminal input as Meta bit. */ -int _rl_meta_flag = 0; /* Forward declaration */ - -/* Set up the prompt and expand it. Called from readline() and - rl_callback_handler_install (). */ -int -rl_set_prompt (prompt) - const char *prompt; -{ - FREE (rl_prompt); - rl_prompt = prompt ? savestring (prompt) : (char *)NULL; - rl_display_prompt = rl_prompt ? rl_prompt : ""; - - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; -} - -/* Read a line of input. Prompt with PROMPT. An empty PROMPT means - none. A return value of NULL means that EOF was encountered. */ -char * -readline (prompt) - const char *prompt; -{ - char *value; -#if 0 - int in_callback; -#endif - - /* If we are at EOF return a NULL string. */ - if (rl_pending_input == EOF) - { - rl_clear_pending_input (); - return ((char *)NULL); - } - -#if 0 - /* If readline() is called after installing a callback handler, temporarily - turn off the callback state to avoid ensuing messiness. Patch supplied - by the gdb folks. XXX -- disabled. This can be fooled and readline - left in a strange state by a poorly-timed longjmp. */ - if (in_callback = RL_ISSTATE (RL_STATE_CALLBACK)) - RL_UNSETSTATE (RL_STATE_CALLBACK); -#endif - - rl_set_prompt (prompt); - - rl_initialize (); - if (rl_prep_term_function) - (*rl_prep_term_function) (_rl_meta_flag); - -#if defined (HANDLE_SIGNALS) - rl_set_signals (); -#endif - - value = readline_internal (); - if (rl_deprep_term_function) - (*rl_deprep_term_function) (); - -#if defined (HANDLE_SIGNALS) - rl_clear_signals (); -#endif - -#if 0 - if (in_callback) - RL_SETSTATE (RL_STATE_CALLBACK); -#endif - -#if HAVE_DECL_AUDIT_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT) - if (value) - _rl_audit_tty (value); -#endif - - return (value); -} - -#if defined (READLINE_CALLBACKS) -# define STATIC_CALLBACK -#else -# define STATIC_CALLBACK static -#endif - -STATIC_CALLBACK void -readline_internal_setup () -{ - char *nprompt; - - _rl_in_stream = rl_instream; - _rl_out_stream = rl_outstream; - - /* Enable the meta key only for the duration of readline(), if this - terminal has one and the terminal has been initialized */ - if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED)) - _rl_enable_meta_key (); - - if (rl_startup_hook) - (*rl_startup_hook) (); - -#if defined (VI_MODE) - if (rl_editing_mode == vi_mode) - rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */ -#endif /* VI_MODE */ - - /* If we're not echoing, we still want to at least print a prompt, because - rl_redisplay will not do it for us. If the calling application has a - custom redisplay function, though, let that function handle it. */ - if (_rl_echoing_p == 0 && rl_redisplay_function == rl_redisplay) - { - if (rl_prompt && rl_already_prompted == 0) - { - nprompt = _rl_strip_prompt (rl_prompt); - fprintf (_rl_out_stream, "%s", nprompt); - fflush (_rl_out_stream); - xfree (nprompt); - } - } - else - { - if (rl_prompt && rl_already_prompted) - rl_on_new_line_with_prompt (); - else - rl_on_new_line (); - (*rl_redisplay_function) (); - } - - if (rl_pre_input_hook) - (*rl_pre_input_hook) (); - - RL_CHECK_SIGNALS (); -} - -STATIC_CALLBACK char * -readline_internal_teardown (eof) - int eof; -{ - char *temp; - HIST_ENTRY *entry; - - RL_CHECK_SIGNALS (); - - /* 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 (); - - 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); - _rl_free_history_entry (entry); - - strcpy (the_line, temp); - xfree (temp); - } - - if (_rl_revert_all_at_newline) - _rl_revert_all_lines (); - - /* At any rate, it is highly likely that this line has an undo list. Get - rid of it now. */ - if (rl_undo_list) - rl_free_undo_list (); - - /* Disable the meta key, if this terminal has one and we were told to use it. - The check whether or not we sent the enable string is in - _rl_disable_meta_key(); the flag is set in _rl_enable_meta_key */ - _rl_disable_meta_key (); - - /* Restore normal cursor, if available. */ - _rl_set_insert_mode (RL_IM_INSERT, 0); - - return (eof ? (char *)NULL : savestring (the_line)); -} - -void -_rl_internal_char_cleanup () -{ -#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. */ - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap) - rl_vi_check (); -#endif /* VI_MODE */ - - if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - rl_newline (1, '\n'); - } - - if (rl_done == 0) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - } - - /* If the application writer has told us to erase the entire line if - the only character typed was something bound to rl_newline, do so. */ - if (rl_erase_empty_line && rl_done && rl_last_func == rl_newline && - rl_point == 0 && rl_end == 0) - _rl_erase_entire_line (); -} - -STATIC_CALLBACK int -#if defined (READLINE_CALLBACKS) -readline_internal_char () -#else -readline_internal_charloop () -#endif -{ - static int lastc, eof_found; - int c, code, lk; - - lastc = -1; - eof_found = 0; - -#if !defined (READLINE_CALLBACKS) - while (rl_done == 0) - { -#endif - lk = _rl_last_command_was_kill; - -#if defined (HAVE_POSIX_SIGSETJMP) - code = sigsetjmp (_rl_top_level, 0); -#else - code = setjmp (_rl_top_level); -#endif - - if (code) - { - (*rl_redisplay_function) (); - _rl_want_redisplay = 0; - /* 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 - we can just return here. */ - if (RL_ISSTATE (RL_STATE_CALLBACK)) - return (0); - } - - if (rl_pending_input == 0) - { - /* Then initialize the argument and number of keys read. */ - _rl_reset_argument (); - rl_key_sequence_length = 0; - rl_executing_keyseq[0] = 0; - } - - RL_SETSTATE(RL_STATE_READCMD); - c = rl_read_key (); - RL_UNSETSTATE(RL_STATE_READCMD); - - /* look at input.c:rl_getc() for the circumstances under which this will - be returned; punt immediately on read error without converting it to - a newline; assume that rl_read_key has already called the signal - handler. */ - if (c == READERR) - { -#if defined (READLINE_CALLBACKS) - RL_SETSTATE(RL_STATE_DONE); - return (rl_done = 1); -#else - eof_found = 1; - break; -#endif - } - - /* EOF typed to a non-blank line is a . If we want to change this, - to force any existing line to be ignored when read(2) reads EOF, - for example, this is the place to change. */ - if (c == EOF && rl_end) - c = NEWLINE; - - /* The character _rl_eof_char typed to blank line, and not as the - previous character is interpreted as EOF. */ - if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end) - { -#if defined (READLINE_CALLBACKS) - RL_SETSTATE(RL_STATE_DONE); - return (rl_done = 1); -#else - eof_found = 1; - break; -#endif - } - - lastc = c; - _rl_dispatch ((unsigned char)c, _rl_keymap); - RL_CHECK_SIGNALS (); - - /* If there was no change in _rl_last_command_was_kill, then no kill - has taken place. Note that if input is pending we are reading - a prefix command, so nothing has changed yet. */ - if (rl_pending_input == 0 && lk == _rl_last_command_was_kill) - _rl_last_command_was_kill = 0; - - _rl_internal_char_cleanup (); - -#if defined (READLINE_CALLBACKS) - return 0; -#else - } - - return (eof_found); -#endif -} - -#if defined (READLINE_CALLBACKS) -static int -readline_internal_charloop () -{ - int eof = 1; - - while (rl_done == 0) - eof = readline_internal_char (); - return (eof); -} -#endif /* READLINE_CALLBACKS */ - -/* Read a line of input from the global rl_instream, doing output on - the global rl_outstream. - If rl_prompt is non-null, then that is our prompt. */ -static char * -readline_internal () -{ - int eof; - - readline_internal_setup (); - eof = readline_internal_charloop (); - return (readline_internal_teardown (eof)); -} - -void -_rl_init_line_state () -{ - rl_point = rl_end = rl_mark = 0; - the_line = rl_line_buffer; - the_line[0] = 0; -} - -void -_rl_set_the_line () -{ - the_line = rl_line_buffer; -} - -#if defined (READLINE_CALLBACKS) -_rl_keyseq_cxt * -_rl_keyseq_cxt_alloc () -{ - _rl_keyseq_cxt *cxt; - - cxt = (_rl_keyseq_cxt *)xmalloc (sizeof (_rl_keyseq_cxt)); - - cxt->flags = cxt->subseq_arg = cxt->subseq_retval = 0; - - cxt->okey = 0; - cxt->ocxt = _rl_kscxt; - cxt->childval = 42; /* sentinel value */ - - return cxt; -} - -void -_rl_keyseq_cxt_dispose (cxt) - _rl_keyseq_cxt *cxt; -{ - xfree (cxt); -} - -void -_rl_keyseq_chain_dispose () -{ - _rl_keyseq_cxt *cxt; - - while (_rl_kscxt) - { - cxt = _rl_kscxt; - _rl_kscxt = _rl_kscxt->ocxt; - _rl_keyseq_cxt_dispose (cxt); - } -} -#endif - -static int -_rl_subseq_getchar (key) - int key; -{ - int k; - - if (key == ESC) - RL_SETSTATE(RL_STATE_METANEXT); - RL_SETSTATE(RL_STATE_MOREINPUT); - k = rl_read_key (); - RL_UNSETSTATE(RL_STATE_MOREINPUT); - if (key == ESC) - RL_UNSETSTATE(RL_STATE_METANEXT); - - return k; -} - -#if defined (READLINE_CALLBACKS) -int -_rl_dispatch_callback (cxt) - _rl_keyseq_cxt *cxt; -{ - int nkey, r; - - /* For now */ - /* The first time this context is used, we want to read input and dispatch - on it. When traversing the chain of contexts back `up', we want to use - the value from the next context down. We're simulating recursion using - a chain of contexts. */ - if ((cxt->flags & KSEQ_DISPATCHED) == 0) - { - nkey = _rl_subseq_getchar (cxt->okey); - if (nkey < 0) - { - _rl_abort_internal (); - return -1; - } - r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg); - cxt->flags |= KSEQ_DISPATCHED; - } - else - r = cxt->childval; - - /* For now */ - if (r != -3) /* don't do this if we indicate there will be other matches */ - r = _rl_subseq_result (r, cxt->oldmap, cxt->okey, (cxt->flags & KSEQ_SUBSEQ)); - - RL_CHECK_SIGNALS (); - /* We only treat values < 0 specially to simulate recursion. */ - if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ - { - _rl_keyseq_chain_dispose (); - RL_UNSETSTATE (RL_STATE_MULTIKEY); - return r; - } - - if (r != -3) /* magic value that says we added to the chain */ - _rl_kscxt = cxt->ocxt; - if (_rl_kscxt) - _rl_kscxt->childval = r; - if (r != -3) - _rl_keyseq_cxt_dispose (cxt); - - return r; -} -#endif /* READLINE_CALLBACKS */ - -/* Do the command associated with KEY in MAP. - If the associated command is really a keymap, then read - another key, and dispatch into that map. */ -int -_rl_dispatch (key, map) - register int key; - Keymap map; -{ - _rl_dispatching_keymap = map; - return _rl_dispatch_subseq (key, map, 0); -} - -int -_rl_dispatch_subseq (key, map, got_subseq) - register int key; - Keymap map; - int got_subseq; -{ - int r, newkey; - char *macro; - rl_command_func_t *func; -#if defined (READLINE_CALLBACKS) - _rl_keyseq_cxt *cxt; -#endif - - if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii) - { - if (map[ESC].type == ISKMAP) - { - if (RL_ISSTATE (RL_STATE_MACRODEF)) - _rl_add_macro_char (ESC); - RESIZE_KEYSEQ_BUFFER (); - rl_executing_keyseq[rl_key_sequence_length++] = ESC; - map = FUNCTION_TO_KEYMAP (map, ESC); - key = UNMETA (key); - return (_rl_dispatch (key, map)); - } - else - rl_ding (); - return 0; - } - - if (RL_ISSTATE (RL_STATE_MACRODEF)) - _rl_add_macro_char (key); - - r = 0; - switch (map[key].type) - { - case ISFUNC: - func = map[key].function; - if (func) - { - /* Special case rl_do_lowercase_version (). */ - if (func == rl_do_lowercase_version) - /* Should we do anything special if key == ANYOTHERKEY? */ - return (_rl_dispatch (_rl_to_lower (key), map)); - - rl_executing_keymap = map; - rl_executing_key = key; - - RESIZE_KEYSEQ_BUFFER(); - rl_executing_keyseq[rl_key_sequence_length++] = key; - rl_executing_keyseq[rl_key_sequence_length] = '\0'; - - rl_dispatching = 1; - RL_SETSTATE(RL_STATE_DISPATCHING); - r = (*func) (rl_numeric_arg * rl_arg_sign, key); - RL_UNSETSTATE(RL_STATE_DISPATCHING); - rl_dispatching = 0; - - /* If we have input pending, then the last command was a prefix - command. Don't change the state of rl_last_func. Otherwise, - remember the last command executed in this variable. */ - if (rl_pending_input == 0 && map[key].function != rl_digit_argument) - rl_last_func = map[key].function; - - RL_CHECK_SIGNALS (); - } - else if (map[ANYOTHERKEY].function) - { - /* OK, there's no function bound in this map, but there is a - shadow function that was overridden when the current keymap - was created. Return -2 to note that. */ - if (RL_ISSTATE (RL_STATE_MACROINPUT)) - _rl_prev_macro_key (); - else - _rl_unget_char (key); - return -2; - } - else if (got_subseq) - { - /* Return -1 to note that we're in a subsequence, but we don't - have a matching key, nor was one overridden. This means - we need to back up the recursion chain and find the last - subsequence that is bound to a function. */ - if (RL_ISSTATE (RL_STATE_MACROINPUT)) - _rl_prev_macro_key (); - else - _rl_unget_char (key); - return -1; - } - else - { -#if defined (READLINE_CALLBACKS) - RL_UNSETSTATE (RL_STATE_MULTIKEY); - _rl_keyseq_chain_dispose (); -#endif - _rl_abort_internal (); - return -1; - } - break; - - case ISKMAP: - if (map[key].function != 0) - { -#if defined (VI_MODE) - /* The only way this test will be true is if a subsequence has been - bound starting with ESC, generally the arrow keys. What we do is - check whether there's input in the queue, which there generally - will be if an arrow key has been pressed, and, if there's not, - just dispatch to (what we assume is) rl_vi_movement_mode right - away. This is essentially an input test with a zero timeout (by - default) or a timeout determined by the value of `keyseq-timeout' */ - /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued - takes microseconds, so multiply by 1000 */ - if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap - && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) - return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); -#endif - - RESIZE_KEYSEQ_BUFFER (); - rl_executing_keyseq[rl_key_sequence_length++] = key; - _rl_dispatching_keymap = FUNCTION_TO_KEYMAP (map, key); - - /* Allocate new context here. Use linked contexts (linked through - cxt->ocxt) to simulate recursion */ -#if defined (READLINE_CALLBACKS) - if (RL_ISSTATE (RL_STATE_CALLBACK)) - { - /* Return 0 only the first time, to indicate success to - _rl_callback_read_char. The rest of the time, we're called - from _rl_dispatch_callback, so we return -3 to indicate - special handling is necessary. */ - r = RL_ISSTATE (RL_STATE_MULTIKEY) ? -3 : 0; - cxt = _rl_keyseq_cxt_alloc (); - - if (got_subseq) - cxt->flags |= KSEQ_SUBSEQ; - cxt->okey = key; - cxt->oldmap = map; - cxt->dmap = _rl_dispatching_keymap; - cxt->subseq_arg = got_subseq || cxt->dmap[ANYOTHERKEY].function; - - RL_SETSTATE (RL_STATE_MULTIKEY); - _rl_kscxt = cxt; - - return r; /* don't indicate immediate success */ - } -#endif - - /* Tentative inter-character timeout for potential multi-key - sequences? If no input within timeout, abort sequence and - act as if we got non-matching input. */ - /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued - takes microseconds, so multiply by 1000 */ - if (_rl_keyseq_timeout > 0 && - (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && - _rl_pushed_input_available () == 0 && - _rl_dispatching_keymap[ANYOTHERKEY].function && - _rl_input_queued (_rl_keyseq_timeout*1000) == 0) - return (_rl_subseq_result (-2, map, key, got_subseq)); - - newkey = _rl_subseq_getchar (key); - if (newkey < 0) - { - _rl_abort_internal (); - return -1; - } - - r = _rl_dispatch_subseq (newkey, _rl_dispatching_keymap, got_subseq || map[ANYOTHERKEY].function); - return _rl_subseq_result (r, map, key, got_subseq); - } - else - { - _rl_abort_internal (); - return -1; - } - break; - - case ISMACR: - if (map[key].function != 0) - { - rl_executing_keyseq[rl_key_sequence_length] = '\0'; - macro = savestring ((char *)map[key].function); - _rl_with_macro_input (macro); - return 0; - } - break; - } -#if defined (VI_MODE) - if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && - key != ANYOTHERKEY && - rl_key_sequence_length == 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -#endif - - return (r); -} - -static int -_rl_subseq_result (r, map, key, got_subseq) - int r; - Keymap map; - int key, got_subseq; -{ - Keymap m; - int type, nt; - rl_command_func_t *func, *nf; - - if (r == -2) - /* We didn't match anything, and the keymap we're indexed into - shadowed a function previously bound to that prefix. Call - the function. The recursive call to _rl_dispatch_subseq has - already taken care of pushing any necessary input back onto - the input queue with _rl_unget_char. */ - { - m = _rl_dispatching_keymap; - type = m[ANYOTHERKEY].type; - func = m[ANYOTHERKEY].function; - if (type == ISFUNC && func == rl_do_lowercase_version) - r = _rl_dispatch (_rl_to_lower (key), map); - else if (type == ISFUNC && func == rl_insert) - { - /* If the function that was shadowed was self-insert, we - somehow need a keymap with map[key].func == self-insert. - Let's use this one. */ - nt = m[key].type; - nf = m[key].function; - - m[key].type = type; - m[key].function = func; - r = _rl_dispatch (key, m); - m[key].type = nt; - m[key].function = nf; - } - else - r = _rl_dispatch (ANYOTHERKEY, m); - } - else if (r && map[ANYOTHERKEY].function) - { - /* We didn't match (r is probably -1), so return something to - tell the caller that it should try ANYOTHERKEY for an - overridden function. */ - if (RL_ISSTATE (RL_STATE_MACROINPUT)) - _rl_prev_macro_key (); - else - _rl_unget_char (key); - _rl_dispatching_keymap = map; - return -2; - } - else if (r && got_subseq) - { - /* OK, back up the chain. */ - if (RL_ISSTATE (RL_STATE_MACROINPUT)) - _rl_prev_macro_key (); - else - _rl_unget_char (key); - _rl_dispatching_keymap = map; - return -1; - } - - return r; -} - -/* **************************************************************** */ -/* */ -/* Initializations */ -/* */ -/* **************************************************************** */ - -/* Initialize readline (and terminal if not already). */ -int -rl_initialize () -{ - /* If we have never been called before, initialize the - terminal and data structures. */ - if (!rl_initialized) - { - RL_SETSTATE(RL_STATE_INITIALIZING); - readline_initialize_everything (); - RL_UNSETSTATE(RL_STATE_INITIALIZING); - rl_initialized++; - RL_SETSTATE(RL_STATE_INITIALIZED); - } - - /* 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); - - /* Tell the history routines what is going on. */ - _rl_start_using_history (); - - /* Make the display buffer match the state of the line. */ - rl_reset_line_state (); - - /* No such function typed yet. */ - rl_last_func = (rl_command_func_t *)NULL; - - /* Parsing of key-bindings begins in an enabled state. */ - _rl_parsing_conditionalized_out = 0; - -#if defined (VI_MODE) - if (rl_editing_mode == vi_mode) - _rl_vi_initialize_line (); -#endif - - /* Each line starts in insert mode (the default). */ - _rl_set_insert_mode (RL_IM_DEFAULT, 1); - - return 0; -} - -#if 0 -#if defined (__EMX__) -static void -_emx_build_environ () -{ - TIB *tibp; - PIB *pibp; - char *t, **tp; - int c; - - DosGetInfoBlocks (&tibp, &pibp); - t = pibp->pib_pchenv; - for (c = 1; *t; c++) - t += strlen (t) + 1; - tp = environ = (char **)xmalloc ((c + 1) * sizeof (char *)); - t = pibp->pib_pchenv; - while (*t) - { - *tp++ = t; - t += strlen (t) + 1; - } - *tp = 0; -} -#endif /* __EMX__ */ -#endif - -/* Initialize the entire state of the world. */ -static void -readline_initialize_everything () -{ -#if 0 -#if defined (__EMX__) - if (environ == 0) - _emx_build_environ (); -#endif -#endif - -#if 0 - /* Find out if we are running in Emacs -- UNUSED. */ - running_in_emacs = sh_get_env_value ("EMACS") != (char *)0; -#endif - - /* Set up input and output if they are not already set up. */ - if (!rl_instream) - rl_instream = stdin; - - if (!rl_outstream) - rl_outstream = stdout; - - /* Bind _rl_in_stream and _rl_out_stream immediately. These values - may change, but they may also be used before readline_internal () - is called. */ - _rl_in_stream = rl_instream; - _rl_out_stream = rl_outstream; - - /* Allocate data structures. */ - if (rl_line_buffer == 0) - rl_line_buffer = (char *)xmalloc (rl_line_buffer_len = DEFAULT_BUFFER_SIZE); - - /* Initialize the terminal interface. */ - if (rl_terminal_name == 0) - rl_terminal_name = sh_get_env_value ("TERM"); - _rl_init_terminal_io (rl_terminal_name); - - /* Bind tty characters to readline functions. */ - readline_default_bindings (); - - /* Initialize the function names. */ - rl_initialize_funmap (); - - /* Decide whether we should automatically go into eight-bit mode. */ - _rl_init_eightbit (); - - /* Read in the init file. */ - rl_read_init_file ((char *)NULL); - - /* XXX */ - if (_rl_horizontal_scroll_mode && _rl_term_autowrap) - { - _rl_screenwidth--; - _rl_screenchars -= _rl_screenheight; - } - - /* Override the effect of any `set keymap' assignments in the - inputrc file. */ - rl_set_keymap_from_edit_mode (); - - /* Try to bind a common arrow key prefix, if not already bound. */ - bind_arrow_keys (); - - /* 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 defined (COLOR_SUPPORT) - if (_rl_colored_stats) - _rl_parse_colors (); -#endif - - rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16); - if (rl_executing_keyseq) - rl_executing_keyseq[0] = '\0'; -} - -/* If this system allows us to look at the values of the regular - input editing characters, then bind them to their readline - equivalents, iff the characters are not bound to keymaps. */ -static void -readline_default_bindings () -{ - if (_rl_bind_stty_chars) - rl_tty_set_default_bindings (_rl_keymap); -} - -/* Reset the default bindings for the terminal special characters we're - interested in back to rl_insert and read the new ones. */ -static void -reset_default_bindings () -{ - if (_rl_bind_stty_chars) - { - rl_tty_unset_default_bindings (_rl_keymap); - rl_tty_set_default_bindings (_rl_keymap); - } -} - -/* Bind some common arrow key sequences in MAP. */ -static void -bind_arrow_keys_internal (map) - Keymap map; -{ - Keymap xkeymap; - - xkeymap = _rl_keymap; - _rl_keymap = map; - -#if defined (__MSDOS__) - rl_bind_keyseq_if_unbound ("\033[0A", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033[0B", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033[0C", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033[0D", rl_get_next_history); -#endif - - rl_bind_keyseq_if_unbound ("\033[A", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033[B", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\033[C", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033[D", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033[H", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\033[F", rl_end_of_line); - - rl_bind_keyseq_if_unbound ("\033OA", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\033OB", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\033OC", rl_forward_char); - rl_bind_keyseq_if_unbound ("\033OD", rl_backward_char); - rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line); - -#if defined (__MINGW32__) - rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\340M", rl_forward_char); - rl_bind_keyseq_if_unbound ("\340K", rl_backward_char); - rl_bind_keyseq_if_unbound ("\340G", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\340O", rl_end_of_line); - rl_bind_keyseq_if_unbound ("\340S", rl_delete); - rl_bind_keyseq_if_unbound ("\340R", rl_overwrite_mode); - - /* These may or may not work because of the embedded NUL. */ - rl_bind_keyseq_if_unbound ("\\000H", rl_get_previous_history); - rl_bind_keyseq_if_unbound ("\\000P", rl_get_next_history); - rl_bind_keyseq_if_unbound ("\\000M", rl_forward_char); - rl_bind_keyseq_if_unbound ("\\000K", rl_backward_char); - rl_bind_keyseq_if_unbound ("\\000G", rl_beg_of_line); - rl_bind_keyseq_if_unbound ("\\000O", rl_end_of_line); - rl_bind_keyseq_if_unbound ("\\000S", rl_delete); - rl_bind_keyseq_if_unbound ("\\000R", rl_overwrite_mode); -#endif - - _rl_keymap = xkeymap; -} - -/* Try and bind the common arrow key prefixes after giving termcap and - the inputrc file a chance to bind them and create `real' keymaps - for the arrow key prefix. */ -static void -bind_arrow_keys () -{ - bind_arrow_keys_internal (emacs_standard_keymap); - -#if defined (VI_MODE) - bind_arrow_keys_internal (vi_movement_keymap); - /* Unbind vi_movement_keymap[ESC] to allow users to repeatedly hit ESC - in vi command mode while still allowing the arrow keys to work. */ - if (vi_movement_keymap[ESC].type == ISKMAP) - rl_bind_keyseq_in_map ("\033", (rl_command_func_t *)NULL, vi_movement_keymap); - bind_arrow_keys_internal (vi_insertion_keymap); -#endif -} - -/* **************************************************************** */ -/* */ -/* Saving and Restoring Readline's state */ -/* */ -/* **************************************************************** */ - -int -rl_save_state (sp) - struct readline_state *sp; -{ - if (sp == 0) - return -1; - - sp->point = rl_point; - sp->end = rl_end; - sp->mark = rl_mark; - sp->buffer = rl_line_buffer; - sp->buflen = rl_line_buffer_len; - sp->ul = rl_undo_list; - sp->prompt = rl_prompt; - - sp->rlstate = rl_readline_state; - sp->done = rl_done; - sp->kmap = _rl_keymap; - - sp->lastfunc = rl_last_func; - sp->insmode = rl_insert_mode; - sp->edmode = rl_editing_mode; - sp->kseqlen = rl_key_sequence_length; - sp->inf = rl_instream; - sp->outf = rl_outstream; - sp->pendingin = rl_pending_input; - sp->macro = rl_executing_macro; - - sp->catchsigs = rl_catch_signals; - sp->catchsigwinch = rl_catch_sigwinch; - - return (0); -} - -int -rl_restore_state (sp) - struct readline_state *sp; -{ - if (sp == 0) - return -1; - - rl_point = sp->point; - rl_end = sp->end; - rl_mark = sp->mark; - the_line = rl_line_buffer = sp->buffer; - rl_line_buffer_len = sp->buflen; - rl_undo_list = sp->ul; - rl_prompt = sp->prompt; - - rl_readline_state = sp->rlstate; - rl_done = sp->done; - _rl_keymap = sp->kmap; - - rl_last_func = sp->lastfunc; - rl_insert_mode = sp->insmode; - rl_editing_mode = sp->edmode; - rl_key_sequence_length = sp->kseqlen; - rl_instream = sp->inf; - rl_outstream = sp->outf; - rl_pending_input = sp->pendingin; - rl_executing_macro = sp->macro; - - rl_catch_signals = sp->catchsigs; - rl_catch_sigwinch = sp->catchsigwinch; - - return (0); -} diff --git a/lib/readline/readline.h b/lib/readline/readline.h index 924bbfb0f..2081b197b 100644 --- a/lib/readline/readline.h +++ b/lib/readline/readline.h @@ -98,6 +98,9 @@ extern int rl_clear_screen PARAMS((int, int)); extern int rl_skip_csi_sequence PARAMS((int, int)); extern int rl_arrow_keys PARAMS((int, int)); +extern int rl_previous_screen_line PARAMS((int, int)); +extern int rl_next_screen_line PARAMS((int, int)); + /* Bindable commands for inserting and deleting text. */ extern int rl_insert PARAMS((int, int)); extern int rl_quoted_insert PARAMS((int, int)); @@ -329,6 +332,7 @@ extern char *rl_untranslate_keyseq PARAMS((int)); extern rl_command_func_t *rl_named_function PARAMS((const char *)); extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *)); +extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *)); extern void rl_list_funmap_names PARAMS((void)); extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap)); @@ -343,6 +347,7 @@ extern int rl_parse_and_bind PARAMS((char *)); /* Functions for manipulating keymaps. */ extern Keymap rl_make_bare_keymap PARAMS((void)); +extern int rl_empty_keymap PARAMS((Keymap)); extern Keymap rl_copy_keymap PARAMS((Keymap)); extern Keymap rl_make_keymap PARAMS((void)); extern void rl_discard_keymap PARAMS((Keymap)); @@ -413,6 +418,7 @@ extern void rl_deprep_terminal PARAMS((void)); extern void rl_tty_set_default_bindings PARAMS((Keymap)); extern void rl_tty_unset_default_bindings PARAMS((Keymap)); +extern int rl_tty_set_echoing PARAMS((int)); extern int rl_reset_terminal PARAMS((const char *)); extern void rl_resize_terminal PARAMS((void)); extern void rl_set_screen_size PARAMS((int, int)); @@ -443,6 +449,7 @@ extern void rl_reset_after_signal PARAMS((void)); extern void rl_free_line_state PARAMS((void)); extern int rl_pending_signal PARAMS((void)); +extern void rl_check_signals PARAMS((void)); extern void rl_echo_signal_char PARAMS((int)); diff --git a/lib/readline/rlconf.h b/lib/readline/rlconf.h index 98c970aab..b6d6a2f12 100644 --- a/lib/readline/rlconf.h +++ b/lib/readline/rlconf.h @@ -42,7 +42,7 @@ /* The next-to-last-ditch effort file name for a user-specific init file. */ #define DEFAULT_INPUTRC "~/.inputrc" -/* The ultimate last-ditch filenname for an init file -- system-wide. */ +/* The ultimate last-ditch filename for an init file -- system-wide. */ #define SYS_INPUTRC "/etc/inputrc" /* If defined, expand tabs to spaces. */ diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h index 4748a610b..8b88de40a 100644 --- a/lib/readline/rlmbutil.h +++ b/lib/readline/rlmbutil.h @@ -172,6 +172,8 @@ _rl_wcwidth (wc) # define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0) #endif +#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0) + #else /* !HANDLE_MULTIBYTE */ #undef MB_LEN_MAX @@ -196,6 +198,12 @@ _rl_wcwidth (wc) #define MB_INVALIDCH(x) (0) #define MB_NULLWCH(x) (0) +#define UTF8_SINGLEBYTE(c) (1) + +#if !defined (HAVE_WCHAR_T) && !defined (wchar_t) +# define wchar_t int +#endif + #endif /* !HANDLE_MULTIBYTE */ extern int rl_byte_oriented; diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index fc3856a1b..05ee9302b 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -26,6 +26,7 @@ #include "rlconf.h" /* for VISIBLE_STATS */ #include "rlstdc.h" #include "posixjmp.h" /* defines procenv_t */ +#include "rlmbutil.h" /* for HANDLE_MULTIBYTE */ /************************************************************************* * * @@ -64,6 +65,7 @@ #define SF_FOUND 0x02 #define SF_FAILED 0x04 #define SF_CHGKMAP 0x08 +#define SF_PATTERN 0x10 /* unused so far */ typedef struct __rl_search_context { @@ -305,10 +307,11 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); #define BRACK_PASTE_SLEN 6 #define BRACK_PASTE_INIT "\033[?2004h" -#define BRACK_PASTE_FINI "\033[?2004l" +#define BRACK_PASTE_FINI "\033[?2004l\r" /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); +extern int _rl_peek_macro_key PARAMS((void)); extern int _rl_next_macro_key PARAMS((void)); extern int _rl_prev_macro_key PARAMS((void)); extern void _rl_push_executing_macro PARAMS((void)); @@ -330,6 +333,7 @@ extern void _rl_set_insert_mode PARAMS((int, int)); extern void _rl_revert_all_lines PARAMS((void)); /* nls.c */ +extern char *_rl_init_locale PARAMS((void)); extern int _rl_init_eightbit PARAMS((void)); /* parens.c */ @@ -534,6 +538,7 @@ extern int _rl_enable_keypad; extern int _rl_enable_meta; extern char *_rl_term_clreol; extern char *_rl_term_clrpag; +extern char *_rl_term_clrscroll; extern char *_rl_term_im; extern char *_rl_term_ic; extern char *_rl_term_ei; diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c index b1c792941..6d9071921 100644 --- a/lib/readline/rltty.c +++ b/lib/readline/rltty.c @@ -1,7 +1,7 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2016 Free Software Foundation, Inc. +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -130,8 +130,7 @@ static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *)); static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *)); static void -save_tty_chars (tiop) - TIOTYPE *tiop; +save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; @@ -168,9 +167,7 @@ save_tty_chars (tiop) } static int -get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); @@ -200,9 +197,7 @@ get_tty_settings (tty, tiop) } static int -set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +set_tty_settings (int tty, TIOTYPE *tiop) { if (tiop->flags & SGTTY_SET) { @@ -239,9 +234,7 @@ set_tty_settings (tty, tiop) } static void -prepare_terminal_settings (meta_flag, oldtio, tiop) - int meta_flag; - TIOTYPE oldtio, *tiop; +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { _rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO); _rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL); @@ -357,8 +350,7 @@ static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE)); #endif static void -save_tty_chars (tiop) - TIOTYPE *tiop; +save_tty_chars (TIOTYPE *tiop) { _rl_last_tty_chars = _rl_tty_chars; @@ -403,7 +395,7 @@ save_tty_chars (tiop) #if defined (_AIX) || defined (_AIX41) /* Currently this is only used on AIX */ static void -rltty_warning (msg) +rltty_warning (char *msg) char *msg; { _rl_errmsg ("warning: %s", msg); @@ -412,8 +404,7 @@ rltty_warning (msg) #if defined (_AIX) void -setopost(tp) -TIOTYPE *tp; +setopost (TIOTYPE *tp) { if ((tp->c_oflag & OPOST) == 0) { @@ -424,9 +415,7 @@ TIOTYPE *tp; #endif static int -_get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +_get_tty_settings (int tty, TIOTYPE *tiop) { int ioctl_ret; @@ -457,9 +446,7 @@ _get_tty_settings (tty, tiop) } static int -get_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +get_tty_settings (int tty, TIOTYPE *tiop) { set_winsize (tty); @@ -475,9 +462,7 @@ get_tty_settings (tty, tiop) } static int -_set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +_set_tty_settings (int tty, TIOTYPE *tiop) { while (SETATTR (tty, tiop) < 0) { @@ -489,9 +474,7 @@ _set_tty_settings (tty, tiop) } static int -set_tty_settings (tty, tiop) - int tty; - TIOTYPE *tiop; +set_tty_settings (int tty, TIOTYPE *tiop) { if (_set_tty_settings (tty, tiop) < 0) return -1; @@ -518,10 +501,11 @@ set_tty_settings (tty, tiop) } static void -prepare_terminal_settings (meta_flag, oldtio, tiop) - int meta_flag; - TIOTYPE oldtio, *tiop; +prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop) { + int sc; + Keymap kmap; + _rl_echoing_p = (oldtio.c_lflag & ECHO); #if defined (ECHOCTL) _rl_echoctl = (oldtio.c_lflag & ECHOCTL); @@ -578,6 +562,20 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) tiop->c_cc[VDSUSP] = _POSIX_VDISABLE; #endif + /* Conditionally disable some other tty special characters if there is a + key binding for them in the current keymap. Readline ordinarily doesn't + bind these characters, but an application or user might. */ +#if defined (VI_MODE) + kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap; +#else + kmap = _rl_keymap; +#endif +#if defined (VDISCARD) + sc = tiop->c_cc[VDISCARD]; + if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC) + tiop->c_cc[VDISCARD] = _POSIX_VDISABLE; +#endif /* VDISCARD */ + #endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */ } #endif /* !NEW_TTY_DRIVER */ @@ -585,21 +583,19 @@ prepare_terminal_settings (meta_flag, oldtio, tiop) /* Put the terminal in CBREAK mode so that we can detect key presses. */ #if defined (NO_TTY_DRIVER) void -rl_prep_terminal (meta_flag) - int meta_flag; +rl_prep_terminal (int meta_flag) { _rl_echoing_p = 1; } void -rl_deprep_terminal () +rl_deprep_terminal (void) { } #else /* ! NO_TTY_DRIVER */ void -rl_prep_terminal (meta_flag) - int meta_flag; +rl_prep_terminal (int meta_flag) { int tty, nprep; TIOTYPE tio; @@ -682,7 +678,7 @@ rl_prep_terminal (meta_flag) /* Restore the terminal's normal settings and modes. */ void -rl_deprep_terminal () +rl_deprep_terminal (void) { int tty; @@ -718,8 +714,7 @@ rl_deprep_terminal () /* Set readline's idea of whether or not it is echoing output to the terminal, returning the old value. */ int -rl_tty_set_echoing (u) - int u; +rl_tty_set_echoing (int u) { int o; @@ -735,8 +730,7 @@ rl_tty_set_echoing (u) /* **************************************************************** */ int -rl_restart_output (count, key) - int count, key; +rl_restart_output (int count, int key) { #if defined (__MINGW32__) return 0; @@ -773,8 +767,7 @@ rl_restart_output (count, key) } int -rl_stop_output (count, key) - int count, key; +rl_stop_output (int count, int key) { #if defined (__MINGW32__) return 0; @@ -822,11 +815,7 @@ rl_stop_output (count, key) #elif defined (NEW_TTY_DRIVER) static void -set_special_char (kmap, tiop, sc, func) - Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC) kmap[(unsigned char)sc].function = func; @@ -837,9 +826,7 @@ set_special_char (kmap, tiop, sc, func) kmap[(unsigned char)c].function = rl_insert; static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { if (ttybuff.flags & SGTTY_SET) { @@ -858,11 +845,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff) #else /* !NEW_TTY_DRIVER */ static void -set_special_char (kmap, tiop, sc, func) - Keymap kmap; - TIOTYPE *tiop; - int sc; - rl_command_func_t *func; +set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func) { unsigned char uc; @@ -877,9 +860,7 @@ set_special_char (kmap, tiop, sc, func) kmap[uc].function = rl_insert; static void -_rl_bind_tty_special_chars (kmap, ttybuff) - Keymap kmap; - TIOTYPE ttybuff; +_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff) { SET_SPECIAL (VERASE, rl_rubout); SET_SPECIAL (VKILL, rl_unix_line_discard); @@ -903,8 +884,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff) /* Set the system's default editing characters to their readline equivalents in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */ void -rltty_set_default_bindings (kmap) - Keymap kmap; +rltty_set_default_bindings (Keymap kmap) { #if !defined (NO_TTY_DRIVER) TIOTYPE ttybuff; @@ -920,8 +900,7 @@ rltty_set_default_bindings (kmap) /* New public way to set the system default editing chars to their readline equivalents. */ void -rl_tty_set_default_bindings (kmap) - Keymap kmap; +rl_tty_set_default_bindings (Keymap kmap) { rltty_set_default_bindings (kmap); } @@ -931,8 +910,7 @@ rl_tty_set_default_bindings (kmap) chars with save_tty_chars(). This only works on POSIX termios or termio systems. */ void -rl_tty_unset_default_bindings (kmap) - Keymap kmap; +rl_tty_unset_default_bindings (Keymap kmap) { /* Don't bother before we've saved the tty special chars at least once. */ if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0) @@ -954,13 +932,13 @@ rl_tty_unset_default_bindings (kmap) #if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER) int -_rl_disable_tty_signals () +_rl_disable_tty_signals (void) { return 0; } int -_rl_restore_tty_signals () +_rl_restore_tty_signals (void) { return 0; } @@ -970,7 +948,7 @@ static TIOTYPE sigstty, nosigstty; static int tty_sigs_disabled = 0; int -_rl_disable_tty_signals () +_rl_disable_tty_signals (void) { if (tty_sigs_disabled) return 0; @@ -991,7 +969,7 @@ _rl_disable_tty_signals () } int -_rl_restore_tty_signals () +_rl_restore_tty_signals (void) { int r; diff --git a/lib/readline/savestring.c b/lib/readline/savestring.c index af9853801..f4bb6aa1a 100644 --- a/lib/readline/savestring.c +++ b/lib/readline/savestring.c @@ -1,6 +1,6 @@ /* savestring.c - function version of savestring for backwards compatibility */ -/* Copyright (C) 1998,2003 Free Software Foundation, Inc. +/* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -30,8 +30,7 @@ /* Backwards compatibility, now that savestring has been removed from all `public' readline header files. */ char * -savestring (s) - const char *s; +savestring (const char *s) { char *ret; diff --git a/lib/readline/search.c b/lib/readline/search.c index 45d95d2e7..649256114 100644 --- a/lib/readline/search.c +++ b/lib/readline/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2015 Free Software Foundation, Inc. +/* Copyright (C) 1992-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -73,8 +73,8 @@ static char *history_search_string; static int history_string_size; static void make_history_line_current PARAMS((HIST_ENTRY *)); -static int noninc_search_from_pos PARAMS((char *, int, int)); -static int noninc_dosearch PARAMS((char *, int)); +static int noninc_search_from_pos PARAMS((char *, int, int, int, int *)); +static int noninc_dosearch PARAMS((char *, int, int)); static int noninc_search PARAMS((int, int)); static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((int)); @@ -87,8 +87,7 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); current line. This doesn't do anything with rl_point; the caller must set it. */ static void -make_history_line_current (entry) - HIST_ENTRY *entry; +make_history_line_current (HIST_ENTRY *entry) { _rl_replace_text (entry->line, 0, rl_end); _rl_fix_point (1); @@ -112,11 +111,10 @@ make_history_line_current (entry) for STRING. DIR < 0 means to search backwards through the history list, DIR >= 0 means to search forward. */ static int -noninc_search_from_pos (string, pos, dir) - char *string; - int pos, dir; +noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp) { - int ret, old; + int ret, old, sflags; + char *s; if (pos < 0) return -1; @@ -126,12 +124,28 @@ noninc_search_from_pos (string, pos, dir) return -1; RL_SETSTATE(RL_STATE_SEARCH); - if (*string == '^') + /* These functions return the match offset in the line; history_offset gives + the matching line in the history list */ + if (flags & SF_PATTERN) + { + s = string; + sflags = 0; /* Non-anchored search */ + if (*s == '^') + { + sflags |= ANCHORED_SEARCH; + s++; + } + ret = _hs_history_patsearch (string, dir, sflags); + } + else if (*string == '^') ret = history_search_prefix (string + 1, dir); else ret = history_search (string, dir); RL_UNSETSTATE(RL_STATE_SEARCH); + if (ncp) + *ncp = ret; /* caller will catch -1 to indicate no-op */ + if (ret != -1) ret = where_history (); @@ -143,9 +157,7 @@ noninc_search_from_pos (string, pos, dir) search is backwards through previous entries, else through subsequent entries. Returns 1 if the search was successful, 0 otherwise. */ static int -noninc_dosearch (string, dir) - char *string; - int dir; +noninc_dosearch (char *string, int dir, int flags) { int oldpos, pos; HIST_ENTRY *entry; @@ -156,7 +168,7 @@ noninc_dosearch (string, dir) return 0; } - pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir); + pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0); if (pos == -1) { /* Search failed, current history position unchanged. */ @@ -188,8 +200,7 @@ noninc_dosearch (string, dir) } static _rl_search_cxt * -_rl_nsearch_init (dir, pchar) - int dir, pchar; +_rl_nsearch_init (int dir, int pchar) { _rl_search_cxt *cxt; char *p; @@ -197,6 +208,10 @@ _rl_nsearch_init (dir, pchar) cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0); if (dir < 0) cxt->sflags |= SF_REVERSE; /* not strictly needed */ +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/')) + cxt->sflags |= SF_PATTERN; +#endif cxt->direction = dir; cxt->history_pos = cxt->save_line; @@ -224,9 +239,7 @@ _rl_nsearch_init (dir, pchar) } int -_rl_nsearch_cleanup (cxt, r) - _rl_search_cxt *cxt; - int r; +_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r) { _rl_scxt_dispose (cxt, 0); _rl_nscxt = 0; @@ -237,8 +250,7 @@ _rl_nsearch_cleanup (cxt, r) } static void -_rl_nsearch_abort (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_abort (_rl_search_cxt *cxt) { rl_maybe_unsave_line (); rl_clear_message (); @@ -253,10 +265,11 @@ _rl_nsearch_abort (cxt) if the caller should abort the search, 0 if we should break out of the loop, and 1 if we should continue to read characters. */ static int -_rl_nsearch_dispatch (cxt, c) - _rl_search_cxt *cxt; - int c; +_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c) { + if (c < 0) + c = CTRL ('C'); + switch (c) { case CTRL('W'): @@ -306,8 +319,7 @@ _rl_nsearch_dispatch (cxt, c) using _rl_nsearch_cleanup (). Returns 1 if the search was successful, 0 otherwise. */ static int -_rl_nsearch_dosearch (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_dosearch (_rl_search_cxt *cxt) { rl_mark = cxt->save_mark; @@ -340,7 +352,7 @@ _rl_nsearch_dosearch (cxt) } rl_restore_prompt (); - return (noninc_dosearch (noninc_search_string, cxt->direction)); + return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN)); } /* Search non-interactively through the history list. DIR < 0 means to @@ -349,9 +361,7 @@ _rl_nsearch_dosearch (cxt) history list. PCHAR is the character to use for prompting when reading the search string; if not specified (0), it defaults to `:'. */ static int -noninc_search (dir, pchar) - int dir; - int pchar; +noninc_search (int dir, int pchar) { _rl_search_cxt *cxt; int c, r; @@ -367,6 +377,12 @@ noninc_search (dir, pchar) { c = _rl_search_getchar (cxt); + if (c < 0) + { + _rl_nsearch_abort (cxt); + return 1; + } + if (c == 0) break; @@ -384,8 +400,7 @@ noninc_search (dir, pchar) /* Search forward through the history list for a string. If the vi-mode code calls this, KEY will be `?'. */ int -rl_noninc_forward_search (count, key) - int count, key; +rl_noninc_forward_search (int count, int key) { return noninc_search (1, (key == '?') ? '?' : 0); } @@ -393,17 +408,16 @@ rl_noninc_forward_search (count, key) /* Reverse search the history list for a string. If the vi-mode code calls this, KEY will be `/'. */ int -rl_noninc_reverse_search (count, key) - int count, key; +rl_noninc_reverse_search (int count, int key) { return noninc_search (-1, (key == '/') ? '/' : 0); } /* Search forward through the history list for the last string searched - for. If there is no saved search string, abort. */ + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `N'. */ int -rl_noninc_forward_search_again (count, key) - int count, key; +rl_noninc_forward_search_again (int count, int key) { int r; @@ -412,15 +426,20 @@ rl_noninc_forward_search_again (count, key) rl_ding (); return (1); } - r = noninc_dosearch (noninc_search_string, 1); +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'N') + r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, 1, 0); return (r != 1); } /* Reverse search in the history list for the last string searched - for. If there is no saved search string, abort. */ + for. If there is no saved search string, abort. If the vi-mode code + calls this, KEY will be `n'. */ int -rl_noninc_reverse_search_again (count, key) - int count, key; +rl_noninc_reverse_search_again (int count, int key) { int r; @@ -429,18 +448,28 @@ rl_noninc_reverse_search_again (count, key) rl_ding (); return (1); } - r = noninc_dosearch (noninc_search_string, -1); +#if defined (VI_MODE) + if (VI_COMMAND_MODE() && key == 'n') + r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN); + else +#endif + r = noninc_dosearch (noninc_search_string, -1, 0); return (r != 1); } #if defined (READLINE_CALLBACKS) int -_rl_nsearch_callback (cxt) - _rl_search_cxt *cxt; +_rl_nsearch_callback (_rl_search_cxt *cxt) { int c, r; c = _rl_search_getchar (cxt); + if (c <= 0) + { + if (c < 0) + _rl_nsearch_abort (cxt); + return 1; + } r = _rl_nsearch_dispatch (cxt, c); if (r != 0) return 1; @@ -451,11 +480,10 @@ _rl_nsearch_callback (cxt) #endif static int -rl_history_search_internal (count, dir) - int count, dir; +rl_history_search_internal (int count, int dir) { HIST_ENTRY *temp; - int ret, oldpos; + int ret, oldpos, newcol; char *t; rl_maybe_save_line (); @@ -469,7 +497,7 @@ rl_history_search_internal (count, dir) while (count) { RL_CHECK_SIGNALS (); - ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir); + ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol); if (ret == -1) break; @@ -512,12 +540,17 @@ rl_history_search_internal (count, dir) /* Copy the line we found into the current line buffer. */ make_history_line_current (temp); + /* decide where to put rl_point -- need to change this for pattern search */ if (rl_history_search_flags & ANCHORED_SEARCH) rl_point = rl_history_search_len; /* easy case */ else { - t = strstr (rl_line_buffer, history_search_string); +#if 0 + t = strstr (rl_line_buffer, history_search_string); /* XXX */ rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end; +#else + rl_point = (newcol >= 0) ? newcol : rl_end; +#endif } rl_mark = rl_end; @@ -525,8 +558,7 @@ rl_history_search_internal (count, dir) } static void -rl_history_search_reinit (flags) - int flags; +rl_history_search_reinit (int flags) { int sind; @@ -556,8 +588,7 @@ rl_history_search_reinit (flags) from the start of the line to rl_point. This is a non-incremental search. The search is anchored to the beginning of the history line. */ int -rl_history_search_forward (count, ignore) - int count, ignore; +rl_history_search_forward (int count, int ignore) { if (count == 0) return (0); @@ -575,8 +606,7 @@ rl_history_search_forward (count, ignore) from the start of the line to rl_point. This is a non-incremental search. */ int -rl_history_search_backward (count, ignore) - int count, ignore; +rl_history_search_backward (int count, int ignore) { if (count == 0) return (0); @@ -595,8 +625,7 @@ rl_history_search_backward (count, ignore) search. The search succeeds if the search string is present anywhere in the history line. */ int -rl_history_substr_search_forward (count, ignore) - int count, ignore; +rl_history_substr_search_forward (int count, int ignore) { if (count == 0) return (0); @@ -614,8 +643,7 @@ rl_history_substr_search_forward (count, ignore) from the start of the line to rl_point. This is a non-incremental search. */ int -rl_history_substr_search_backward (count, ignore) - int count, ignore; +rl_history_substr_search_backward (int count, int ignore) { if (count == 0) return (0); diff --git a/lib/readline/shell.c b/lib/readline/shell.c index 6947295e5..7fe2e97c9 100644 --- a/lib/readline/shell.c +++ b/lib/readline/shell.c @@ -1,7 +1,7 @@ /* shell.c -- readline utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1997-2009 Free Software Foundation, Inc. +/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -92,8 +92,7 @@ extern struct passwd *getpwuid PARAMS((uid_t)); /* Does shell-like quoting using single quotes. */ char * -sh_single_quote (string) - char *string; +sh_single_quote (char *string) { register int c; char *result, *r, *s; @@ -127,8 +126,7 @@ static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") == static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */ void -sh_set_lines_and_columns (lines, cols) - int lines, cols; +sh_set_lines_and_columns (int lines, int cols) { #if defined (HAVE_SETENV) sprintf (setenv_buf, "%d", lines); @@ -148,14 +146,13 @@ sh_set_lines_and_columns (lines, cols) } char * -sh_get_env_value (varname) - const char *varname; +sh_get_env_value (const char *varname) { return ((char *)getenv (varname)); } char * -sh_get_home_dir () +sh_get_home_dir (void) { static char *home_dir = (char *)NULL; struct passwd *entry; @@ -188,8 +185,7 @@ sh_get_home_dir () #endif int -sh_unset_nodelay_mode (fd) - int fd; +sh_unset_nodelay_mode (int fd) { #if defined (HAVE_FCNTL) int flags, bflags; diff --git a/lib/readline/signals.c b/lib/readline/signals.c index 927f53230..76c5c4733 100644 --- a/lib/readline/signals.c +++ b/lib/readline/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -113,6 +113,10 @@ int _rl_susp_char = 0; static int signals_set_flag; static int sigwinch_set_flag; +#if defined (HAVE_POSIX_SIGNALS) +sigset_t _rl_orig_sigset; +#endif /* !HAVE_POSIX_SIGNALS */ + /* **************************************************************** */ /* */ /* Signal Handling */ @@ -134,8 +138,7 @@ void *_rl_sigcleanarg; /* Called from RL_CHECK_SIGNALS() macro */ RETSIGTYPE -_rl_signal_handler (sig) - int sig; +_rl_signal_handler (int sig) { _rl_caught_signal = 0; /* XXX */ @@ -158,8 +161,7 @@ _rl_signal_handler (sig) } static RETSIGTYPE -rl_signal_handler (sig) - int sig; +rl_signal_handler (int sig) { if (_rl_interrupt_immediately) { @@ -173,8 +175,7 @@ rl_signal_handler (sig) } static RETSIGTYPE -_rl_handle_signal (sig) - int sig; +_rl_handle_signal (int sig) { #if defined (HAVE_POSIX_SIGNALS) sigset_t set; @@ -248,9 +249,11 @@ _rl_handle_signal (sig) rl_cleanup_after_signal (); #if defined (HAVE_POSIX_SIGNALS) +# if defined (SIGTSTP) /* Unblock SIGTTOU blocked above */ if (sig == SIGTTIN || sig == SIGTSTP) sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL); +# endif sigemptyset (&set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); @@ -289,8 +292,7 @@ _rl_handle_signal (sig) #if defined (SIGWINCH) static RETSIGTYPE -rl_sigwinch_handler (sig) - int sig; +rl_sigwinch_handler (int sig) { SigHandler *oh; @@ -321,9 +323,7 @@ rl_sigwinch_handler (sig) #if !defined (HAVE_POSIX_SIGNALS) static int -rl_sigaction (sig, nh, oh) - int sig; - sighandler_cxt *nh, *oh; +rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh) { oh->sa_handler = signal (sig, nh->sa_handler); return 0; @@ -334,10 +334,7 @@ rl_sigaction (sig, nh, oh) information in OHANDLER. Return the old signal handler, like signal(). */ static SigHandler * -rl_set_sighandler (sig, handler, ohandler) - int sig; - SigHandler *handler; - sighandler_cxt *ohandler; +rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt old_handler; #if defined (HAVE_POSIX_SIGNALS) @@ -368,10 +365,7 @@ rl_set_sighandler (sig, handler, ohandler) /* Set disposition of SIG to HANDLER, returning old state in OHANDLER. Don't change disposition if OHANDLER indicates the signal was ignored. */ static void -rl_maybe_set_sighandler (sig, handler, ohandler) - int sig; - SigHandler *handler; - sighandler_cxt *ohandler; +rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler) { sighandler_cxt dummy; SigHandler *oh; @@ -388,9 +382,7 @@ rl_maybe_set_sighandler (sig, handler, ohandler) disposition was changed using rl_maybe_set_sighandler or for which the SIG_IGN check was performed inline (e.g., SIGALRM below). */ static void -rl_maybe_restore_sighandler (sig, handler) - int sig; - sighandler_cxt *handler; +rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler) { sighandler_cxt dummy; @@ -401,7 +393,7 @@ rl_maybe_restore_sighandler (sig, handler) } int -rl_set_signals () +rl_set_signals (void) { sighandler_cxt dummy; SigHandler *oh; @@ -442,8 +434,8 @@ rl_set_signals () if (rl_catch_signals && signals_set_flag == 0) { #if defined (HAVE_POSIX_SIGNALS) - sigemptyset (&oset); - sigprocmask (SIG_BLOCK, &bset, &oset); + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset); #endif rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); @@ -484,7 +476,14 @@ rl_set_signals () signals_set_flag = 1; #if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); + sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL); +#endif + } + else if (rl_catch_signals == 0) + { +#if defined (HAVE_POSIX_SIGNALS) + sigemptyset (&_rl_orig_sigset); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset); #endif } @@ -500,14 +499,12 @@ rl_set_signals () } int -rl_clear_signals () +rl_clear_signals (void) { sighandler_cxt dummy; if (rl_catch_signals && signals_set_flag == 1) { - sigemptyset (&dummy.sa_mask); - /* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler, we should in theory not have to restore a handler where old_xxx.sa_handler == SIG_IGN. That's what rl_maybe_restore_sighandler @@ -555,7 +552,7 @@ rl_clear_signals () /* Clean up the terminal and readline state after catching a signal, before resending it to the calling application. */ void -rl_cleanup_after_signal () +rl_cleanup_after_signal (void) { _rl_clean_up_for_exit (); if (rl_deprep_term_function) @@ -566,7 +563,7 @@ rl_cleanup_after_signal () /* Reset the terminal and readline state after a signal handler returns. */ void -rl_reset_after_signal () +rl_reset_after_signal (void) { if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); @@ -578,7 +575,7 @@ rl_reset_after_signal () numeric arguments in process) after catching a signal, before calling rl_cleanup_after_signal(). */ void -rl_free_line_state () +rl_free_line_state (void) { register HIST_ENTRY *entry; @@ -594,10 +591,16 @@ rl_free_line_state () } int -rl_pending_signal () +rl_pending_signal (void) { return (_rl_caught_signal); } + +void +rl_check_signals (void) +{ + RL_CHECK_SIGNALS (); +} #endif /* HANDLE_SIGNALS */ /* **************************************************************** */ @@ -622,7 +625,7 @@ static int sigwinch_blocked; /* Cause SIGINT to not be delivered until the corresponding call to release_sigint(). */ void -_rl_block_sigint () +_rl_block_sigint (void) { if (sigint_blocked) return; @@ -632,7 +635,7 @@ _rl_block_sigint () /* Allow SIGINT to be delivered. */ void -_rl_release_sigint () +_rl_release_sigint (void) { if (sigint_blocked == 0) return; @@ -644,7 +647,7 @@ _rl_release_sigint () /* Cause SIGWINCH to not be delivered until the corresponding call to release_sigwinch(). */ void -_rl_block_sigwinch () +_rl_block_sigwinch (void) { if (sigwinch_blocked) return; @@ -673,7 +676,7 @@ _rl_block_sigwinch () /* Allow SIGWINCH to be delivered. */ void -_rl_release_sigwinch () +_rl_release_sigwinch (void) { if (sigwinch_blocked == 0) return; @@ -703,8 +706,7 @@ _rl_release_sigwinch () /* */ /* **************************************************************** */ void -rl_echo_signal_char (sig) - int sig; +rl_echo_signal_char (int sig) { char cstr[3]; int cslen, c; diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c index ef2884e0f..d9a6a9999 100644 --- a/lib/readline/terminal.c +++ b/lib/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2015 Free Software Foundation, Inc. +/* Copyright (C) 1996-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -112,6 +112,7 @@ char PC, *BC, *UP; /* Some strings to control terminal actions. These are output by tputs (). */ char *_rl_term_clreol; char *_rl_term_clrpag; +char *_rl_term_clrscroll; char *_rl_term_cr; char *_rl_term_backspace; char *_rl_term_goto; @@ -131,6 +132,7 @@ char *_rl_term_IC; char *_rl_term_dc; char *_rl_term_DC; +/* How to move forward a char, non-destructively */ char *_rl_term_forward_char; /* How to go up a line. */ @@ -188,8 +190,7 @@ int _rl_enable_meta = 1; #if defined (__EMX__) static void -_emx_get_screensize (swp, shp) - int *swp, *shp; +_emx_get_screensize (int *swp, int *shp) { int sz[2]; @@ -204,8 +205,7 @@ _emx_get_screensize (swp, shp) #if defined (__MINGW32__) static void -_win_get_screensize (swp, shp) - int *swp, *shp; +_win_get_screensize (int *swp, int *shp) { HANDLE hConOut; CONSOLE_SCREEN_BUFFER_INFO scr; @@ -227,8 +227,7 @@ _win_get_screensize (swp, shp) values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being non-null serve to check whether or not we have initialized termcap. */ void -_rl_get_screen_size (tty, ignore_env) - int tty, ignore_env; +_rl_get_screen_size (int tty, int ignore_env) { char *ss; #if defined (TIOCGWINSZ) @@ -318,8 +317,7 @@ _rl_get_screen_size (tty, ignore_env) } void -_rl_set_screen_size (rows, cols) - int rows, cols; +_rl_set_screen_size (int rows, int cols) { if (_rl_term_autowrap == -1) _rl_init_terminal_io (rl_terminal_name); @@ -338,15 +336,13 @@ _rl_set_screen_size (rows, cols) } void -rl_set_screen_size (rows, cols) - int rows, cols; +rl_set_screen_size (int rows, int cols) { _rl_set_screen_size (rows, cols); } void -rl_get_screen_size (rows, cols) - int *rows, *cols; +rl_get_screen_size (int *rows, int *cols) { if (rows) *rows = _rl_screenheight; @@ -355,19 +351,19 @@ rl_get_screen_size (rows, cols) } void -rl_reset_screen_size () +rl_reset_screen_size (void) { _rl_get_screen_size (fileno (rl_instream), 0); } void -_rl_sigwinch_resize_terminal () +_rl_sigwinch_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); } void -rl_resize_terminal () +rl_resize_terminal (void) { _rl_get_screen_size (fileno (rl_instream), 1); if (_rl_echoing_p) @@ -390,6 +386,7 @@ static const struct _tc_string tc_strings[] = { { "@7", &_rl_term_at7 }, { "DC", &_rl_term_DC }, + { "E3", &_rl_term_clrscroll }, { "IC", &_rl_term_IC }, { "ce", &_rl_term_clreol }, { "cl", &_rl_term_clrpag }, @@ -424,8 +421,7 @@ static const struct _tc_string tc_strings[] = /* Read the desired terminal capability strings into BP. The capabilities are described in the TC_STRINGS table. */ static void -get_term_capabilities (bp) - char **bp; +get_term_capabilities (char **bp) { #if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */ register int i; @@ -437,15 +433,14 @@ get_term_capabilities (bp) } int -_rl_init_terminal_io (terminal_name) - const char *terminal_name; +_rl_init_terminal_io (const char *terminal_name) { const char *term; char *buffer; int tty, tgetent_ret; term = terminal_name ? terminal_name : sh_get_env_value ("TERM"); - _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL; + _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL; tty = rl_instream ? fileno (rl_instream) : 0; if (term == 0) @@ -458,7 +453,7 @@ _rl_init_terminal_io (terminal_name) _rl_term_mm = _rl_term_mo = (char *)NULL; _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0; _rl_term_cr = "\r"; - _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL; + _rl_term_backspace = (char *)NULL; _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL; _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL; _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL; @@ -584,8 +579,7 @@ _rl_init_terminal_io (terminal_name) /* Bind the arrow key sequences from the termcap description in MAP. */ static void -bind_termcap_arrow_keys (map) - Keymap map; +bind_termcap_arrow_keys (Keymap map) { Keymap xkeymap; @@ -606,8 +600,7 @@ bind_termcap_arrow_keys (map) } char * -rl_get_termcap (cap) - const char *cap; +rl_get_termcap (const char *cap) { register int i; @@ -624,8 +617,7 @@ rl_get_termcap (cap) /* Re-initialize the terminal considering that the TERM/TERMCAP variable has changed. */ int -rl_reset_terminal (terminal_name) - const char *terminal_name; +rl_reset_terminal (const char *terminal_name) { _rl_screenwidth = _rl_screenheight = 0; _rl_init_terminal_io (terminal_name); @@ -635,15 +627,13 @@ rl_reset_terminal (terminal_name) /* A function for the use of tputs () */ #ifdef _MINIX void -_rl_output_character_function (c) - int c; +_rl_output_character_function (int c) { putc (c, _rl_out_stream); } #else /* !_MINIX */ int -_rl_output_character_function (c) - int c; +_rl_output_character_function (int c) { return putc (c, _rl_out_stream); } @@ -651,17 +641,14 @@ _rl_output_character_function (c) /* Write COUNT characters from STRING to the output stream. */ void -_rl_output_some_chars (string, count) - const char *string; - int count; +_rl_output_some_chars (const char *string, int count) { fwrite (string, 1, count, _rl_out_stream); } /* Move the cursor back. */ int -_rl_backspace (count) - int count; +_rl_backspace (int count) { register int i; @@ -678,7 +665,7 @@ _rl_backspace (count) /* Move to the start of the next line. */ int -rl_crlf () +rl_crlf (void) { #if defined (NEW_TTY_DRIVER) || defined (__MINT__) if (_rl_term_cr) @@ -690,7 +677,7 @@ rl_crlf () /* Ring the terminal bell. */ int -rl_ding () +rl_ding (void) { if (_rl_echoing_p) { @@ -729,7 +716,7 @@ rl_ding () static int enabled_meta = 0; /* flag indicating we enabled meta mode */ void -_rl_enable_meta_key () +_rl_enable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mm) @@ -741,7 +728,7 @@ _rl_enable_meta_key () } void -_rl_disable_meta_key () +_rl_disable_meta_key (void) { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mo && enabled_meta) @@ -753,8 +740,7 @@ _rl_disable_meta_key () } void -_rl_control_keypad (on) - int on; +_rl_control_keypad (int on) { #if !defined (__DJGPP__) if (on && _rl_term_ks) @@ -775,8 +761,7 @@ _rl_control_keypad (on) cursor. Overwrite mode gets a very visible cursor. Only does anything if we have both capabilities. */ void -_rl_set_cursor (im, force) - int im, force; +_rl_set_cursor (int im, int force) { #ifndef __MSDOS__ if (_rl_term_ve && _rl_term_vs) diff --git a/lib/readline/text.c b/lib/readline/text.c index c353252bc..81de2a99c 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -83,8 +83,7 @@ int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */ way that you should do insertion. _rl_insert_char () calls this function. Returns the number of characters inserted. */ int -rl_insert_text (string) - const char *string; +rl_insert_text (const char *string) { register int i, l; @@ -121,8 +120,7 @@ rl_insert_text (string) /* Delete the string between FROM and TO. FROM is inclusive, TO is not. Returns the number of characters deleted. */ int -rl_delete_text (from, to) - int from, to; +rl_delete_text (int from, int to) { register char *text; register int diff, i; @@ -172,8 +170,7 @@ rl_delete_text (from, to) } while (0) void -_rl_fix_point (fix_mark_too) - int fix_mark_too; +_rl_fix_point (int fix_mark_too) { _RL_FIX_POINT (rl_point); if (fix_mark_too) @@ -185,9 +182,7 @@ _rl_fix_point (fix_mark_too) TEXT. The operation is undoable. To replace the entire line in an undoable mode, use _rl_replace_text(text, 0, rl_end); */ int -_rl_replace_text (text, start, end) - const char *text; - int start, end; +_rl_replace_text (const char *text, int start, int end) { int n; @@ -206,9 +201,7 @@ _rl_replace_text (text, start, end) /* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is non-zero, we free the current undo list. */ void -rl_replace_line (text, clear_undo) - const char *text; - int clear_undo; +rl_replace_line (const char *text, int clear_undo) { int len; @@ -259,8 +252,7 @@ rl_replace_line (text, clear_undo) /* Move forward COUNT bytes. */ int -rl_forward_byte (count, key) - int count, key; +rl_forward_byte (int count, int key) { if (count < 0) return (rl_backward_byte (-count, key)); @@ -292,8 +284,7 @@ rl_forward_byte (count, key) } int -_rl_forward_char_internal (count) - int count; +_rl_forward_char_internal (int count) { int point; @@ -319,8 +310,7 @@ _rl_forward_char_internal (count) #if defined (HANDLE_MULTIBYTE) /* Move forward COUNT characters. */ int -rl_forward_char (count, key) - int count, key; +rl_forward_char (int count, int key) { int point; @@ -350,8 +340,7 @@ rl_forward_char (count, key) } #else /* !HANDLE_MULTIBYTE */ int -rl_forward_char (count, key) - int count, key; +rl_forward_char (int count, int key) { return (rl_forward_byte (count, key)); } @@ -359,16 +348,14 @@ rl_forward_char (count, key) /* Backwards compatibility. */ int -rl_forward (count, key) - int count, key; +rl_forward (int count, int key) { return (rl_forward_char (count, key)); } /* Move backward COUNT bytes. */ int -rl_backward_byte (count, key) - int count, key; +rl_backward_byte (int count, int key) { if (count < 0) return (rl_forward_byte (-count, key)); @@ -393,8 +380,7 @@ rl_backward_byte (count, key) #if defined (HANDLE_MULTIBYTE) /* Move backward COUNT characters. */ int -rl_backward_char (count, key) - int count, key; +rl_backward_char (int count, int key) { int point; @@ -426,8 +412,7 @@ rl_backward_char (count, key) } #else int -rl_backward_char (count, key) - int count, key; +rl_backward_char (int count, int key) { return (rl_backward_byte (count, key)); } @@ -435,16 +420,14 @@ rl_backward_char (count, key) /* Backwards compatibility. */ int -rl_backward (count, key) - int count, key; +rl_backward (int count, int key) { return (rl_backward_char (count, key)); } /* Move to the beginning of the line. */ int -rl_beg_of_line (count, key) - int count, key; +rl_beg_of_line (int count, int key) { rl_point = 0; return 0; @@ -452,8 +435,7 @@ rl_beg_of_line (count, key) /* Move to the end of the line. */ int -rl_end_of_line (count, key) - int count, key; +rl_end_of_line (int count, int key) { rl_point = rl_end; return 0; @@ -461,8 +443,7 @@ rl_end_of_line (count, key) /* Move forward a word. We do what Emacs does. Handles multibyte chars. */ int -rl_forward_word (count, key) - int count, key; +rl_forward_word (int count, int key) { int c; @@ -510,8 +491,7 @@ rl_forward_word (count, key) /* Move backward a word. We do what Emacs does. Handles multibyte chars. */ int -rl_backward_word (count, key) - int count, key; +rl_backward_word (int count, int key) { int c, p; @@ -560,8 +540,7 @@ rl_backward_word (count, key) /* Clear the current line. Numeric argument to C-l does this. */ int -rl_refresh_line (ignore1, ignore2) - int ignore1, ignore2; +rl_refresh_line (int ignore1, int ignore2) { int curr_line; @@ -582,8 +561,7 @@ rl_refresh_line (ignore1, ignore2) the prompt and the current input line. Given a numeric arg, redraw only the current line. */ int -rl_clear_screen (count, key) - int count, key; +rl_clear_screen (int count, int key) { if (rl_explicit_arg) { @@ -599,8 +577,25 @@ rl_clear_screen (count, key) } int -rl_skip_csi_sequence (count, key) - int count, key; +rl_previous_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_backward_char (c, key)); +} + +int +rl_next_screen_line (int count, int key) +{ + int c; + + c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1); + return (rl_forward_char (c, key)); +} + +int +rl_skip_csi_sequence (int count, int key) { int ch; @@ -614,8 +609,7 @@ rl_skip_csi_sequence (count, key) } int -rl_arrow_keys (count, c) - int count, c; +rl_arrow_keys (int count, int key) { int ch; @@ -672,8 +666,7 @@ static mbstate_t ps = {0}; If C introduces a multibyte sequence, we read the whole sequence and then insert the multibyte char into the line buffer. */ int -_rl_insert_char (count, c) - int count, c; +_rl_insert_char (int count, int c) { register int i; char *string; @@ -695,6 +688,12 @@ _rl_insert_char (count, c) incoming[1] = '\0'; incoming_length = 1; } + else if (_rl_utf8locale && (c & 0x80) == 0) + { + incoming[0] = c; + incoming[1] = '\0'; + incoming_length = 1; + } else { wchar_t wc; @@ -739,6 +738,12 @@ _rl_insert_char (count, c) effect of mbstate is undefined. */ memset (&ps, 0, sizeof (mbstate_t)); } + else if (ret == 1) + { + incoming[0] = pending_bytes[0]; + incoming[incoming_length = 1] = '\0'; + pending_bytes_length = 0; + } else { /* We successfully read a single multibyte character. */ @@ -761,8 +766,13 @@ _rl_insert_char (count, c) i = 0; while (i < string_size) { - strncpy (string + i, incoming, incoming_length); - i += incoming_length; + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } } incoming_length = 0; stored_count = 0; @@ -790,8 +800,13 @@ _rl_insert_char (count, c) i = 0; while (i < string_size) { - strncpy (string + i, incoming, incoming_length); - i += incoming_length; + if (incoming_length == 1) + string[i++] = *incoming; + else + { + strncpy (string + i, incoming, incoming_length); + i += incoming_length; + } } while (count) @@ -857,8 +872,7 @@ _rl_insert_char (count, c) If C introduces a multibyte character sequence, read the entire sequence before starting the overwrite loop. */ int -_rl_overwrite_char (count, c) - int count, c; +_rl_overwrite_char (int count, int c) { int i; #if defined (HANDLE_MULTIBYTE) @@ -891,8 +905,7 @@ _rl_overwrite_char (count, c) } int -rl_insert (count, c) - int count, c; +rl_insert (int count, int c) { int r, n, x; @@ -902,6 +915,7 @@ rl_insert (count, c) x = 0; n = (unsigned short)-2; while (_rl_optimize_typeahead && + rl_num_chars_to_read == 0 && (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && _rl_pushed_input_available () == 0 && _rl_input_queued (0) && @@ -941,8 +955,7 @@ rl_insert (count, c) /* Insert the next typed character verbatim. */ static int -_rl_insert_next (count) - int count; +_rl_insert_next (int count) { int c; @@ -966,24 +979,37 @@ _rl_insert_next (count) #if defined (READLINE_CALLBACKS) static int -_rl_insert_next_callback (data) - _rl_callback_generic_arg *data; +_rl_insert_next_callback (_rl_callback_generic_arg *data) { - int count; + int count, r; count = data->count; + r = 0; + + if (count < 0) + { + data->count++; + r = _rl_insert_next (1); + _rl_want_redisplay = 1; + /* If we should keep going, leave the callback function installed */ + if (data->count < 0 && r == 0) + return r; + count = 0; /* data->count == 0 || r != 0; force break below */ + } /* Deregister function, let rl_callback_read_char deallocate data */ _rl_callback_func = 0; _rl_want_redisplay = 1; - + + if (count == 0) + return r; + return _rl_insert_next (count); } #endif int -rl_quoted_insert (count, key) - int count, key; +rl_quoted_insert (int count, int key) { /* Let's see...should the callback interface futz with signal handling? */ #if defined (HANDLE_SIGNALS) @@ -999,14 +1025,24 @@ rl_quoted_insert (count, key) return (0); } #endif - + + /* A negative count means to quote the next -COUNT characters. */ + if (count < 0) + { + int r; + + do + r = _rl_insert_next (1); + while (r == 0 && ++count < 0); + return r; + } + return _rl_insert_next (count); } /* Insert a tab character. */ int -rl_tab_insert (count, key) - int count, key; +rl_tab_insert (int count, int key) { return (_rl_insert_char (count, '\t')); } @@ -1015,8 +1051,7 @@ rl_tab_insert (count, key) KEY is the key that invoked this command. I guess it could have meaning in the future. */ int -rl_newline (count, key) - int count, key; +rl_newline (int count, int key) { rl_done = 1; @@ -1049,8 +1084,7 @@ rl_newline (count, key) is just a stub, you bind keys to it and the code in _rl_dispatch () is special cased. */ int -rl_do_lowercase_version (ignore1, ignore2) - int ignore1, ignore2; +rl_do_lowercase_version (int ignore1, int ignore2) { return 0; } @@ -1059,8 +1093,7 @@ rl_do_lowercase_version (ignore1, ignore2) rubout in overwrite mode has one oddity: it replaces a control character that's displayed as two characters (^X) with two spaces. */ int -_rl_overwrite_rubout (count, key) - int count, key; +_rl_overwrite_rubout (int count, int key) { int opoint; int i, l; @@ -1102,8 +1135,7 @@ _rl_overwrite_rubout (count, key) /* Rubout the character behind point. */ int -rl_rubout (count, key) - int count, key; +rl_rubout (int count, int key) { if (count < 0) return (rl_delete (-count, key)); @@ -1121,8 +1153,7 @@ rl_rubout (count, key) } int -_rl_rubout_char (count, key) - int count, key; +_rl_rubout_char (int count, int key) { int orig_point; unsigned char c; @@ -1167,8 +1198,7 @@ _rl_rubout_char (count, key) /* Delete the character under the cursor. Given a numeric argument, kill that many characters instead. */ int -rl_delete (count, key) - int count, key; +rl_delete (int count, int key) { int xpoint; @@ -1205,8 +1235,7 @@ rl_delete (count, key) behind the cursor is deleted. COUNT is obeyed and may be used to delete forward or backward that many characters. */ int -rl_rubout_or_delete (count, key) - int count, key; +rl_rubout_or_delete (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (_rl_rubout_char (count, key)); @@ -1216,8 +1245,7 @@ rl_rubout_or_delete (count, key) /* Delete all spaces and tabs around point. */ int -rl_delete_horizontal_space (count, ignore) - int count, ignore; +rl_delete_horizontal_space (int count, int ignore) { int start; @@ -1245,8 +1273,7 @@ rl_delete_horizontal_space (count, ignore) is caught before this is invoked, so this really does the same thing as delete-char-or-list-or-eof, as long as it's bound to the eof character. */ int -rl_delete_or_show_completions (count, key) - int count, key; +rl_delete_or_show_completions (int count, int key) { if (rl_end != 0 && rl_point == rl_end) return (rl_possible_completions (count, key)); @@ -1261,8 +1288,7 @@ rl_delete_or_show_completions (count, key) /* Turn the current line into a comment in shell history. A K*rn shell style function. */ int -rl_insert_comment (count, key) - int count, key; +rl_insert_comment (int count, int key) { char *rl_comment_text; int rl_comment_len; @@ -1300,24 +1326,21 @@ rl_insert_comment (count, key) /* Uppercase the word at point. */ int -rl_upcase_word (count, key) - int count, key; +rl_upcase_word (int count, int key) { return (rl_change_case (count, UpCase)); } /* Lowercase the word at point. */ int -rl_downcase_word (count, key) - int count, key; +rl_downcase_word (int count, int key) { return (rl_change_case (count, DownCase)); } /* Upcase the first letter, downcase the rest. */ int -rl_capitalize_word (count, key) - int count, key; +rl_capitalize_word (int count, int key) { return (rl_change_case (count, CapCase)); } @@ -1328,11 +1351,11 @@ rl_capitalize_word (count, key) If a negative argument is given, leave point where it started, otherwise, leave it where it moves to. */ static int -rl_change_case (count, op) - int count, op; +rl_change_case (int count, int op) { int start, next, end; - int inword, c, nc, nop; + int inword, nc, nop; + wchar_t c; #if defined (HANDLE_MULTIBYTE) wchar_t wc, nwc; char mb[MB_LEN_MAX+1]; @@ -1382,7 +1405,10 @@ rl_change_case (count, op) } else nop = op; - if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii ((unsigned char)c)) + /* Can't check isascii here; some languages (e.g, Turkish) have + multibyte upper and lower case equivalents of single-byte ascii + characters */ + if (MB_CUR_MAX == 1 || rl_byte_oriented) { nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); rl_line_buffer[start] = nc; @@ -1398,11 +1424,35 @@ rl_change_case (count, op) nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc); if (nwc != wc) /* just skip unchanged characters */ { + char *s, *e; mlen = wcrtomb (mb, nwc, &mps); if (mlen > 0) mb[mlen] = '\0'; - /* Assume the same width */ - strncpy (rl_line_buffer + start, mb, mlen); + /* what to do if m != mlen? adjust below */ + /* m == length of old char, mlen == length of new char */ + s = rl_line_buffer + start; + e = rl_line_buffer + rl_end; + if (m == mlen) + memcpy (s, mb, mlen); + else if (m > mlen) + { + memcpy (s, mb, mlen); + memmove (s + mlen, s + m, (e - s) - m); + next -= m - mlen; /* next char changes */ + end -= m - mlen; /* end of word changes */ + rl_end -= m - mlen; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } + else if (m < mlen) + { + rl_extend_line_buffer (mlen - m + 1); + memmove (s + mlen, s + m, (e - s) - m); + memcpy (s, mb, mlen); + next += mlen - m; /* next char changes */ + end += mlen - m; /* end of word changes */ + rl_end += mlen - m; /* end of line changes */ + rl_line_buffer[rl_end] = 0; + } } } #endif @@ -1423,8 +1473,7 @@ rl_change_case (count, op) /* Transpose the words at point. If point is at the end of the line, transpose the two words before point. */ int -rl_transpose_words (count, key) - int count, key; +rl_transpose_words (int count, int key) { char *word1, *word2; int w1_beg, w1_end, w2_beg, w2_end; @@ -1484,8 +1533,7 @@ rl_transpose_words (count, key) /* Transpose the characters at point. If point is at the end of the line, then transpose the characters before point. */ int -rl_transpose_chars (count, key) - int count, key; +rl_transpose_chars (int count, int key) { #if defined (HANDLE_MULTIBYTE) char *dummy; @@ -1549,13 +1597,9 @@ rl_transpose_chars (count, key) int #if defined (HANDLE_MULTIBYTE) -_rl_char_search_internal (count, dir, smbchar, len) - int count, dir; - char *smbchar; - int len; +_rl_char_search_internal (int count, int dir, char *smbchar, int len) #else -_rl_char_search_internal (count, dir, schar) - int count, dir, schar; +_rl_char_search_internal (int count, int dir, int schar) #endif { int pos, inc; @@ -1619,8 +1663,7 @@ _rl_char_search_internal (count, dir, schar) that there are two separate versions of this function. */ #if defined (HANDLE_MULTIBYTE) static int -_rl_char_search (count, fdir, bdir) - int count, fdir, bdir; +_rl_char_search (int count, int fdir, int bdir) { char mbchar[MB_LEN_MAX]; int mb_len; @@ -1637,8 +1680,7 @@ _rl_char_search (count, fdir, bdir) } #else /* !HANDLE_MULTIBYTE */ static int -_rl_char_search (count, fdir, bdir) - int count, fdir, bdir; +_rl_char_search (int count, int fdir, int bdir) { int c; @@ -1669,8 +1711,7 @@ _rl_char_search_callback (data) #endif int -rl_char_search (count, key) - int count, key; +rl_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -1687,8 +1728,7 @@ rl_char_search (count, key) } int -rl_backward_char_search (count, key) - int count, key; +rl_backward_char_search (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -1712,10 +1752,9 @@ rl_backward_char_search (count, key) /* Set the mark at POSITION. */ int -_rl_set_mark_at_pos (position) - int position; +_rl_set_mark_at_pos (int position) { - if (position > rl_end) + if (position < 0 || position > rl_end) return 1; rl_mark = position; @@ -1724,23 +1763,22 @@ _rl_set_mark_at_pos (position) /* A bindable command to set the mark. */ int -rl_set_mark (count, key) - int count, key; +rl_set_mark (int count, int key) { return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point)); } /* Exchange the position of mark and point. */ int -rl_exchange_point_and_mark (count, key) - int count, key; +rl_exchange_point_and_mark (int count, int key) { if (rl_mark > rl_end) rl_mark = -1; - if (rl_mark == -1) + if (rl_mark < 0) { rl_ding (); + rl_mark = 0; /* like _RL_FIX_POINT */ return 1; } else diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c index 95bc4215c..9d0f29614 100644 --- a/lib/readline/tilde.c +++ b/lib/readline/tilde.c @@ -1,6 +1,6 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); the tilde which starts the expansion. Place the length of the text which identified this tilde starter in LEN, excluding the tilde itself. */ static int -tilde_find_prefix (string, len) - const char *string; - int *len; +tilde_find_prefix (const char *string, int *len) { register int i, j, string_len; register char **prefixes; @@ -160,8 +158,7 @@ tilde_find_prefix (string, len) /* Find the end of a tilde expansion in STRING, and return the index of the character which ends the tilde definition. */ static int -tilde_find_suffix (string) - const char *string; +tilde_find_suffix (const char *string) { register int i, j, string_len; register char **suffixes; @@ -189,8 +186,7 @@ tilde_find_suffix (string) /* Return a new string which is the result of tilde expanding STRING. */ char * -tilde_expand (string) - const char *string; +tilde_expand (const char *string) { char *result; int result_size, result_index; @@ -267,9 +263,7 @@ tilde_expand (string) non-null, the index of the end of the prefix into FNAME is returned in the location it points to. */ static char * -isolate_tilde_prefix (fname, lenp) - const char *fname; - int *lenp; +isolate_tilde_prefix (const char *fname, int *lenp) { char *ret; int i; @@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp) function. Right now, it just calls tilde_find_suffix and allocates new memory, but it can be expanded to do different things later. */ char * -tilde_find_word (fname, flags, lenp) - const char *fname; - int flags, *lenp; +tilde_find_word (const char *fname, int flags, int *lenp) { int x; char *r; @@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp) /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * -glue_prefix_and_suffix (prefix, suffix, suffind) - char *prefix; - const char *suffix; - int suffind; +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) { char *ret; int plen, slen; @@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind) tilde. If there is no expansion, call tilde_expansion_failure_hook. This always returns a newly-allocated string, never static storage. */ char * -tilde_expand_word (filename) - const char *filename; +tilde_expand_word (const char *filename) { char *dirname, *expansion, *username; int user_len; @@ -434,9 +422,7 @@ tilde_expand_word (filename) #undef NULL #include -main (argc, argv) - int argc; - char **argv; +main (int argc, char **argv) { char *result, line[512]; int done = 0; @@ -464,11 +450,10 @@ main (argc, argv) exit (0); } -static void memory_error_and_abort (); +static void memory_error_and_abort (void); static void * -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { void *temp = (char *)malloc (bytes); @@ -478,9 +463,7 @@ xmalloc (bytes) } static void * -xrealloc (pointer, bytes) - void *pointer; - int bytes; +xrealloc (void *pointer, int bytes) { void *temp; @@ -496,7 +479,7 @@ xrealloc (pointer, bytes) } static void -memory_error_and_abort () +memory_error_and_abort (void) { fprintf (stderr, "readline: out of virtual memory\n"); abort (); diff --git a/lib/readline/undo.c b/lib/readline/undo.c index 58363040c..75874e5d4 100644 --- a/lib/readline/undo.c +++ b/lib/readline/undo.c @@ -1,6 +1,6 @@ /* undo.c - manage list of changes to lines, offering opportunity to undo them */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -68,10 +68,7 @@ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL; /* **************************************************************** */ static UNDO_LIST * -alloc_undo_entry (what, start, end, text) - enum undo_code what; - int start, end; - char *text; +alloc_undo_entry (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; @@ -88,10 +85,7 @@ alloc_undo_entry (what, start, end, text) /* Remember how to undo something. Concatenate some undos if that seems right. */ void -rl_add_undo (what, start, end, text) - enum undo_code what; - int start, end; - char *text; +rl_add_undo (enum undo_code what, int start, int end, char *text) { UNDO_LIST *temp; @@ -102,8 +96,7 @@ rl_add_undo (what, start, end, text) /* Free an UNDO_LIST */ void -_rl_free_undo_list (ul) - UNDO_LIST *ul; +_rl_free_undo_list (UNDO_LIST *ul) { UNDO_LIST *release; @@ -121,7 +114,7 @@ _rl_free_undo_list (ul) /* Free the existing undo list. */ void -rl_free_undo_list () +rl_free_undo_list (void) { UNDO_LIST *release, *orig_list; @@ -132,8 +125,7 @@ rl_free_undo_list () } UNDO_LIST * -_rl_copy_undo_entry (entry) - UNDO_LIST *entry; +_rl_copy_undo_entry (UNDO_LIST *entry) { UNDO_LIST *new; @@ -143,8 +135,7 @@ _rl_copy_undo_entry (entry) } UNDO_LIST * -_rl_copy_undo_list (head) - UNDO_LIST *head; +_rl_copy_undo_list (UNDO_LIST *head) { UNDO_LIST *list, *new, *roving, *c; @@ -173,7 +164,7 @@ _rl_copy_undo_list (head) /* Undo the next thing in the list. Return 0 if there is nothing to undo, or non-zero if there was. */ int -rl_do_undo () +rl_do_undo (void) { UNDO_LIST *release; int waiting_for_begin, start, end; @@ -255,8 +246,7 @@ rl_do_undo () #undef TRANS int -_rl_fix_last_undo_of_type (type, start, end) - int type, start, end; +_rl_fix_last_undo_of_type (int type, int start, int end) { UNDO_LIST *rl; @@ -274,7 +264,7 @@ _rl_fix_last_undo_of_type (type, start, end) /* Begin a group. Subsequent undos are undone as an atomic operation. */ int -rl_begin_undo_group () +rl_begin_undo_group (void) { rl_add_undo (UNDO_BEGIN, 0, 0, 0); _rl_undo_group_level++; @@ -283,7 +273,7 @@ rl_begin_undo_group () /* End an undo group started with rl_begin_undo_group (). */ int -rl_end_undo_group () +rl_end_undo_group (void) { rl_add_undo (UNDO_END, 0, 0, 0); _rl_undo_group_level--; @@ -292,8 +282,7 @@ rl_end_undo_group () /* Save an undo entry for the text from START to END. */ int -rl_modifying (start, end) - int start, end; +rl_modifying (int start, int end) { if (start > end) { @@ -313,8 +302,7 @@ rl_modifying (start, end) /* Revert the current line to its previous state. */ int -rl_revert_line (count, key) - int count, key; +rl_revert_line (int count, int key) { if (rl_undo_list == 0) rl_ding (); @@ -333,8 +321,7 @@ rl_revert_line (count, key) /* Do some undoing of things that were done. */ int -rl_undo_command (count, key) - int count, key; +rl_undo_command (int count, int key) { if (count < 0) return 0; /* Nothing to do. */ diff --git a/lib/readline/util.c b/lib/readline/util.c index 4589c61f9..e009b2383 100644 --- a/lib/readline/util.c +++ b/lib/readline/util.c @@ -1,6 +1,6 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -70,8 +70,7 @@ int _rl_allow_pathname_alphabetic_chars = 0; static const char * const pathname_alphabetic_chars = "/-_=~.#$"; int -rl_alphabetic (c) - int c; +rl_alphabetic (int c) { if (ALPHABETIC (c)) return (1); @@ -97,7 +96,7 @@ _rl_walphabetic (wchar_t wc) /* How to abort things. */ int -_rl_abort_internal () +_rl_abort_internal (void) { rl_ding (); rl_clear_message (); @@ -117,22 +116,19 @@ _rl_abort_internal () } int -rl_abort (count, key) - int count, key; +rl_abort (int count, int key) { return (_rl_abort_internal ()); } int -_rl_null_function (count, key) - int count, key; +_rl_null_function (int count, int key) { return 0; } int -rl_tty_status (count, key) - int count, key; +rl_tty_status (int count, int key) { #if defined (TIOCSTAT) ioctl (1, TIOCSTAT, (char *)0); @@ -146,8 +142,7 @@ rl_tty_status (count, key) /* Return a copy of the string between FROM and TO. FROM is inclusive, TO is not. */ char * -rl_copy_text (from, to) - int from, to; +rl_copy_text (int from, int to) { register int length; char *copy; @@ -166,8 +161,7 @@ rl_copy_text (from, to) /* Increase the size of RL_LINE_BUFFER until it has enough space to hold LEN characters. */ void -rl_extend_line_buffer (len) - int len; +rl_extend_line_buffer (int len) { while (len >= rl_line_buffer_len) { @@ -181,8 +175,7 @@ rl_extend_line_buffer (len) /* A function for simple tilde expansion. */ int -rl_tilde_expand (ignore, key) - int ignore, key; +rl_tilde_expand (int ignore, int key) { register int start, end; char *homedir, *temp; @@ -200,7 +193,7 @@ rl_tilde_expand (ignore, key) } else if (start >= 0 && rl_line_buffer[start] != '~') { - for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--) + for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--) ; start++; } @@ -324,8 +317,7 @@ _rl_errmsg (format, arg1, arg2) /* Determine if s2 occurs in s1. If so, return a pointer to the match in s1. The compare is case insensitive. */ char * -_rl_strindex (s1, s2) - register const char *s1, *s2; +_rl_strindex (const char *s1, const char *s2) { register int i, l, len; @@ -339,8 +331,7 @@ _rl_strindex (s1, s2) /* Find the first occurrence in STRING1 of any character from STRING2. Return a pointer to the character in STRING1. */ char * -_rl_strpbrk (string1, string2) - const char *string1, *string2; +_rl_strpbrk (const char *string1, const char *string2) { register const char *scan; #if defined (HANDLE_MULTIBYTE) @@ -374,10 +365,7 @@ _rl_strpbrk (string1, string2) /* Compare at most COUNT characters from string1 to string2. Case doesn't matter (strncasecmp). */ int -_rl_strnicmp (string1, string2, count) - const char *string1; - const char *string2; - int count; +_rl_strnicmp (const char *string1, const char *string2, int count) { register const char *s1; register const char *s2; @@ -404,9 +392,7 @@ _rl_strnicmp (string1, string2, count) /* strcmp (), but caseless (strcasecmp). */ int -_rl_stricmp (string1, string2) - const char *string1; - const char *string2; +_rl_stricmp (const char *string1, const char *string2) { register const char *s1; register const char *s2; @@ -431,8 +417,7 @@ _rl_stricmp (string1, string2) /* Stupid comparison routine for qsort () ing strings. */ int -_rl_qsort_string_compare (s1, s2) - char **s1, **s2; +_rl_qsort_string_compare (char **s1, char **s2) { #if defined (HAVE_STRCOLL) return (strcoll (*s1, *s2)); @@ -448,7 +433,7 @@ _rl_qsort_string_compare (s1, s2) } /* Function equivalents for the macros defined in chardefs.h. */ -#define FUNCTION_FOR_MACRO(f) int (f) (c) int c; { return f (c); } +#define FUNCTION_FOR_MACRO(f) int (f) (int c) { return f (c); } FUNCTION_FOR_MACRO (_rl_digit_p) FUNCTION_FOR_MACRO (_rl_digit_value) @@ -461,8 +446,7 @@ FUNCTION_FOR_MACRO (_rl_uppercase_p) /* A convenience function, to force memory deallocation to be performed by readline. DLLs on Windows apparently require this. */ void -rl_free (mem) - void *mem; +rl_free (void *mem) { if (mem) free (mem); @@ -472,8 +456,7 @@ rl_free (mem) all `public' readline header files. */ #undef _rl_savestring char * -_rl_savestring (s) - const char *s; +_rl_savestring (const char *s) { return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); } @@ -512,7 +495,7 @@ _rl_trace (va_alist) } int -_rl_tropen () +_rl_tropen (void) { char fnbuf[128], *x; @@ -525,14 +508,14 @@ _rl_tropen () #else x = "/var/tmp"; #endif - sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid()); + snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid()); unlink(fnbuf); _rl_tracefp = fopen (fnbuf, "w+"); return _rl_tracefp != 0; } int -_rl_trclose () +_rl_trclose (void) { int r; @@ -542,8 +525,7 @@ _rl_trclose () } void -_rl_settracefp (fp) - FILE *fp; +_rl_settracefp (FILE *fp) { _rl_tracefp = fp; } @@ -559,8 +541,7 @@ _rl_settracefp (fp) /* Report STRING to the audit system. */ void -_rl_audit_tty (string) - char *string; +_rl_audit_tty (char *string) { struct audit_message req; struct sockaddr_nl addr; diff --git a/lib/readline/vi_keymap.c b/lib/readline/vi_keymap.c index e5da2e0fa..045258bd8 100644 --- a/lib/readline/vi_keymap.c +++ b/lib/readline/vi_keymap.c @@ -1,6 +1,6 @@ /* vi_keymap.c -- the keymap for vi_mode in readline (). */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index 56d2e72fb..3cb7e8c99 100644 --- a/lib/readline/vi_mode.c +++ b/lib/readline/vi_mode.c @@ -1,7 +1,7 @@ /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -63,6 +63,8 @@ #define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0) #endif +/* This is global so other parts of the code can check whether the last + command was a text modification command. */ int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ _rl_vimotion_cxt *_rl_vimvcxt = 0; @@ -99,7 +101,7 @@ static int _rl_vi_last_search_mblen; #else static int _rl_vi_last_search_char; #endif -static int _rl_vi_last_replacement; +static char _rl_vi_last_replacement[MB_LEN_MAX+1]; /* reserve for trailing NULL */ static int _rl_vi_last_key_before_insert; @@ -146,7 +148,7 @@ static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *)); static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *)); void -_rl_vi_initialize_line () +_rl_vi_initialize_line (void) { register int i, n; @@ -158,7 +160,7 @@ _rl_vi_initialize_line () } void -_rl_vi_reset_last () +_rl_vi_reset_last (void) { _rl_vi_last_command = 'i'; _rl_vi_last_repeat = 1; @@ -167,8 +169,7 @@ _rl_vi_reset_last () } void -_rl_vi_set_last (key, repeat, sign) - int key, repeat, sign; +_rl_vi_set_last (int key, int repeat, int sign) { _rl_vi_last_command = key; _rl_vi_last_repeat = repeat; @@ -178,8 +179,7 @@ _rl_vi_set_last (key, repeat, sign) /* A convenience function that calls _rl_vi_set_last to save the last command information and enters insertion mode. */ void -rl_vi_start_inserting (key, repeat, sign) - int key, repeat, sign; +rl_vi_start_inserting (int key, int repeat, int sign) { _rl_vi_set_last (key, repeat, sign); rl_vi_insertion_mode (1, key); @@ -187,22 +187,19 @@ rl_vi_start_inserting (key, repeat, sign) /* Is the command C a VI mode text modification command? */ int -_rl_vi_textmod_command (c) - int c; +_rl_vi_textmod_command (int c) { return (member (c, vi_textmod)); } int -_rl_vi_motion_command (c) - int c; +_rl_vi_motion_command (int c) { return (member (c, vi_motion)); } static void -_rl_vi_replace_insert (count) - int count; +_rl_vi_replace_insert (int count) { int nchars; @@ -217,8 +214,7 @@ _rl_vi_replace_insert (count) } static void -_rl_vi_stuff_insert (count) - int count; +_rl_vi_stuff_insert (int count) { rl_begin_undo_group (); while (count--) @@ -230,8 +226,7 @@ _rl_vi_stuff_insert (count) redo a text modification command. The default for _rl_vi_last_command puts you back into insert mode. */ int -rl_vi_redo (count, c) - int count, c; +rl_vi_redo (int count, int c) { int r; @@ -296,16 +291,14 @@ rl_vi_redo (count, c) /* A placeholder for further expansion. */ int -rl_vi_undo (count, key) - int count, key; +rl_vi_undo (int count, int key) { return (rl_undo_command (count, key)); } /* Yank the nth arg from the previous line into this line at point. */ int -rl_vi_yank_arg (count, key) - int count, key; +rl_vi_yank_arg (int count, int key) { /* Readline thinks that the first word on a line is the 0th, while vi thinks the first word on a line is the 1st. Compensate. */ @@ -320,8 +313,7 @@ rl_vi_yank_arg (count, key) /* With an argument, move back that many history lines, else move to the beginning of history. */ int -rl_vi_fetch_history (count, c) - int count, c; +rl_vi_fetch_history (int count, int c) { int wanted; @@ -345,8 +337,7 @@ rl_vi_fetch_history (count, c) /* Search again for the last thing searched for. */ int -rl_vi_search_again (count, key) - int count, key; +rl_vi_search_again (int count, int key) { switch (key) { @@ -363,8 +354,7 @@ rl_vi_search_again (count, key) /* Do a vi style search. */ int -rl_vi_search (count, key) - int count, key; +rl_vi_search (int count, int key) { switch (key) { @@ -387,8 +377,7 @@ rl_vi_search (count, key) /* Completion, from vi's point of view. */ int -rl_vi_complete (ignore, key) - int ignore, key; +rl_vi_complete (int ignore, int key) { if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) { @@ -414,8 +403,7 @@ rl_vi_complete (ignore, key) /* Tilde expansion for vi mode. */ int -rl_vi_tilde_expand (ignore, key) - int ignore, key; +rl_vi_tilde_expand (int ignore, int key) { rl_tilde_expand (0, key); rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -424,8 +412,7 @@ rl_vi_tilde_expand (ignore, key) /* Previous word in vi mode. */ int -rl_vi_prev_word (count, key) - int count, key; +rl_vi_prev_word (int count, int key) { if (count < 0) return (rl_vi_next_word (-count, key)); @@ -446,8 +433,7 @@ rl_vi_prev_word (count, key) /* Next word in vi mode. */ int -rl_vi_next_word (count, key) - int count, key; +rl_vi_next_word (int count, int key) { if (count < 0) return (rl_vi_prev_word (-count, key)); @@ -467,8 +453,7 @@ rl_vi_next_word (count, key) /* Move to the end of the ?next? word. */ int -rl_vi_end_word (count, key) - int count, key; +rl_vi_end_word (int count, int key) { if (count < 0) { @@ -485,8 +470,7 @@ rl_vi_end_word (count, key) /* Move forward a word the way that 'W' does. */ int -rl_vi_fWord (count, ignore) - int count, ignore; +rl_vi_fWord (int count, int ignore) { while (count-- && rl_point < (rl_end - 1)) { @@ -502,8 +486,7 @@ rl_vi_fWord (count, ignore) } int -rl_vi_bWord (count, ignore) - int count, ignore; +rl_vi_bWord (int count, int ignore) { while (count-- && rl_point > 0) { @@ -526,8 +509,7 @@ rl_vi_bWord (count, ignore) } int -rl_vi_eWord (count, ignore) - int count, ignore; +rl_vi_eWord (int count, int ignore) { while (count-- && rl_point < (rl_end - 1)) { @@ -557,8 +539,7 @@ rl_vi_eWord (count, ignore) } int -rl_vi_fword (count, ignore) - int count, ignore; +rl_vi_fword (int count, int ignore) { while (count-- && rl_point < (rl_end - 1)) { @@ -583,8 +564,7 @@ rl_vi_fword (count, ignore) } int -rl_vi_bword (count, ignore) - int count, ignore; +rl_vi_bword (int count, int ignore) { while (count-- && rl_point > 0) { @@ -594,7 +574,8 @@ rl_vi_bword (count, ignore) so we will go back to the start of the previous word. */ if (!whitespace (rl_line_buffer[rl_point]) && whitespace (rl_line_buffer[rl_point - 1])) - rl_point--; + if (--rl_point == 0) + break; /* If this character and the previous character are `opposite', move back so we don't get messed up by the rl_point++ down there in @@ -622,8 +603,7 @@ rl_vi_bword (count, ignore) } int -rl_vi_eword (count, ignore) - int count, ignore; +rl_vi_eword (int count, int ignore) { while (count-- && rl_point < rl_end - 1) { @@ -647,8 +627,7 @@ rl_vi_eword (count, ignore) } int -rl_vi_insert_beg (count, key) - int count, key; +rl_vi_insert_beg (int count, int key) { rl_beg_of_line (1, key); rl_vi_insert_mode (1, key); @@ -656,8 +635,7 @@ rl_vi_insert_beg (count, key) } static void -_rl_vi_append_forward (key) - int key; +_rl_vi_append_forward (int key) { int point; @@ -668,11 +646,7 @@ _rl_vi_append_forward (key) else { point = rl_point; -#if 0 - rl_forward_char (1, key); -#else rl_point = _rl_forward_char_internal (1); -#endif if (point == rl_point) rl_point = rl_end; } @@ -680,8 +654,7 @@ _rl_vi_append_forward (key) } int -rl_vi_append_mode (count, key) - int count, key; +rl_vi_append_mode (int count, int key) { _rl_vi_append_forward (key); rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -689,8 +662,7 @@ rl_vi_append_mode (count, key) } int -rl_vi_append_eol (count, key) - int count, key; +rl_vi_append_eol (int count, int key) { rl_end_of_line (1, key); rl_vi_append_mode (1, key); @@ -699,8 +671,7 @@ rl_vi_append_eol (count, key) /* What to do in the case of C-d. */ int -rl_vi_eof_maybe (count, c) - int count, c; +rl_vi_eof_maybe (int count, int c) { return (rl_newline (1, '\n')); } @@ -710,8 +681,7 @@ rl_vi_eof_maybe (count, c) /* Switching from one mode to the other really just involves switching keymaps. */ int -rl_vi_insertion_mode (count, key) - int count, key; +rl_vi_insertion_mode (int count, int key) { _rl_keymap = vi_insertion_keymap; _rl_vi_last_key_before_insert = key; @@ -721,16 +691,14 @@ rl_vi_insertion_mode (count, key) } int -rl_vi_insert_mode (count, key) - int count, key; +rl_vi_insert_mode (int count, int key) { rl_vi_start_inserting (key, 1, rl_arg_sign); return (0); } static void -vi_save_insert_buffer (start, len) - int start, len; +vi_save_insert_buffer (int start, int len) { /* Same code as _rl_vi_save_insert below */ if (len >= vi_insert_buffer_size) @@ -743,7 +711,7 @@ vi_save_insert_buffer (start, len) } static void -_rl_vi_save_replace () +_rl_vi_save_replace (void) { int len, start, end; UNDO_LIST *up; @@ -766,8 +734,7 @@ _rl_vi_save_replace () } static void -_rl_vi_save_insert (up) - UNDO_LIST *up; +_rl_vi_save_insert (UNDO_LIST *up) { int len, start, end; @@ -786,7 +753,7 @@ _rl_vi_save_insert (up) } void -_rl_vi_done_inserting () +_rl_vi_done_inserting (void) { if (_rl_vi_doing_insert) { @@ -821,8 +788,7 @@ _rl_vi_done_inserting () } int -rl_vi_movement_mode (count, key) - int count, key; +rl_vi_movement_mode (int count, int key) { if (rl_point > 0) rl_backward_char (1, key); @@ -843,8 +809,7 @@ rl_vi_movement_mode (count, key) } int -rl_vi_arg_digit (count, c) - int count, c; +rl_vi_arg_digit (int count, int c) { if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg) return (rl_beg_of_line (1, c)); @@ -855,8 +820,7 @@ rl_vi_arg_digit (count, c) /* Change the case of the next COUNT characters. */ #if defined (HANDLE_MULTIBYTE) static int -_rl_vi_change_mbchar_case (count) - int count; +_rl_vi_change_mbchar_case (int count) { wchar_t wc; char mb[MB_LEN_MAX+1]; @@ -909,8 +873,7 @@ _rl_vi_change_mbchar_case (count) #endif int -rl_vi_change_case (count, ignore) - int count, ignore; +rl_vi_change_case (int count, int ignore) { int c, p; @@ -956,8 +919,7 @@ rl_vi_change_case (count, ignore) } int -rl_vi_put (count, key) - int count, key; +rl_vi_put (int count, int key) { if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end)) rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO); @@ -969,8 +931,9 @@ rl_vi_put (count, key) return (0); } +/* Move the cursor back one character. */ static void -_rl_vi_backup () +_rl_vi_backup (void) { if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO); @@ -978,8 +941,9 @@ _rl_vi_backup () rl_point--; } +/* Move the cursor back one character if you're at the end of the line */ int -rl_vi_check () +rl_vi_check (void) { if (rl_point && rl_point == rl_end) { @@ -991,9 +955,9 @@ rl_vi_check () return (0); } +/* Move to the character position specified by COUNT */ int -rl_vi_column (count, key) - int count, key; +rl_vi_column (int count, int key) { if (count > rl_end) rl_end_of_line (1, key); @@ -1006,8 +970,7 @@ rl_vi_column (count, key) argument should be aborted, 0 if we should not read any more chars, and 1 if we should continue to read chars. */ static int -_rl_vi_arg_dispatch (c) - int c; +_rl_vi_arg_dispatch (int c) { int key; @@ -1041,7 +1004,7 @@ _rl_vi_arg_dispatch (c) Don't recognize minus sign? Should this do rl_save_prompt/rl_restore_prompt? */ static int -rl_digit_loop1 () +rl_digit_loop1 (void) { int c, r; @@ -1061,10 +1024,12 @@ rl_digit_loop1 () return (0); } +/* This set of functions is basically to handle the commands that take a + motion argument while in callback mode: read the command, read the motion + command modifier, find the extent of the text to affect, and dispatch the + command for execution. */ static void -_rl_mvcxt_init (m, op, key) - _rl_vimotion_cxt *m; - int op, key; +_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key) { m->op = op; m->state = m->flags = 0; @@ -1077,8 +1042,7 @@ _rl_mvcxt_init (m, op, key) } static _rl_vimotion_cxt * -_rl_mvcxt_alloc (op, key) - int op, key; +_rl_mvcxt_alloc (int op, int key) { _rl_vimotion_cxt *m; @@ -1088,15 +1052,13 @@ _rl_mvcxt_alloc (op, key) } static void -_rl_mvcxt_dispose (m) - _rl_vimotion_cxt *m; +_rl_mvcxt_dispose (_rl_vimotion_cxt *m) { xfree (m); } static int -rl_domove_motion_callback (m) - _rl_vimotion_cxt *m; +rl_domove_motion_callback (_rl_vimotion_cxt *m) { int c; @@ -1129,9 +1091,7 @@ rl_domove_motion_callback (m) } int -_rl_vi_domove_motion_cleanup (c, m) - int c; - _rl_vimotion_cxt *m; +_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m) { int r; @@ -1193,8 +1153,7 @@ _rl_vi_domove_motion_cleanup (c, m) #define RL_VIMOVENUMARG() (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG)) static int -rl_domove_read_callback (m) - _rl_vimotion_cxt *m; +rl_domove_read_callback (_rl_vimotion_cxt *m) { int c, save; @@ -1260,8 +1219,7 @@ rl_domove_read_callback (m) } static int -rl_vi_domove_getchar (m) - _rl_vimotion_cxt *m; +rl_vi_domove_getchar (_rl_vimotion_cxt *m) { int c; @@ -1274,8 +1232,7 @@ rl_vi_domove_getchar (m) #if defined (READLINE_CALLBACKS) int -_rl_vi_domove_callback (m) - _rl_vimotion_cxt *m; +_rl_vi_domove_callback (_rl_vimotion_cxt *m) { int c, r; @@ -1288,10 +1245,9 @@ _rl_vi_domove_callback (m) } #endif -/* This code path taken when not in callback mode. */ +/* This code path is taken when not in callback mode. */ int -rl_vi_domove (x, ignore) - int x, *ignore; +rl_vi_domove (int x, int *ignore) { int r; _rl_vimotion_cxt *m; @@ -1309,8 +1265,7 @@ rl_vi_domove (x, ignore) } static int -vi_delete_dispatch (m) - _rl_vimotion_cxt *m; +vi_delete_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ @@ -1323,8 +1278,7 @@ vi_delete_dispatch (m) } int -rl_vi_delete_to (count, key) - int count, key; +rl_vi_delete_to (int count, int key) { int c, r; @@ -1373,8 +1327,7 @@ rl_vi_delete_to (count, key) } static int -vi_change_dispatch (m) - _rl_vimotion_cxt *m; +vi_change_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. c[wW] are handled by special-case code in rl_vi_domove(), @@ -1413,8 +1366,7 @@ vi_change_dispatch (m) } int -rl_vi_change_to (count, key) - int count, key; +rl_vi_change_to (int count, int key) { int c, r; @@ -1463,8 +1415,7 @@ rl_vi_change_to (count, key) } static int -vi_yank_dispatch (m) - _rl_vimotion_cxt *m; +vi_yank_dispatch (_rl_vimotion_cxt *m) { /* These are the motion commands that do not require adjusting the mark. */ @@ -1482,8 +1433,7 @@ vi_yank_dispatch (m) } int -rl_vi_yank_to (count, key) - int count, key; +rl_vi_yank_to (int count, int key) { int c, r; @@ -1532,8 +1482,7 @@ rl_vi_yank_to (count, key) } static int -vidomove_dispatch (m) - _rl_vimotion_cxt *m; +vidomove_dispatch (_rl_vimotion_cxt *m) { int r; @@ -1559,8 +1508,7 @@ vidomove_dispatch (m) } int -rl_vi_rubout (count, key) - int count, key; +rl_vi_rubout (int count, int key) { int opoint; @@ -1590,8 +1538,7 @@ rl_vi_rubout (count, key) } int -rl_vi_delete (count, key) - int count, key; +rl_vi_delete (int count, int key) { int end; @@ -1626,8 +1573,7 @@ rl_vi_delete (count, key) #define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c)) int -rl_vi_unix_word_rubout (count, key) - int count, key; +rl_vi_unix_word_rubout (int count, int key) { int orig_point; @@ -1677,8 +1623,7 @@ rl_vi_unix_word_rubout (count, key) int -rl_vi_back_to_indent (count, key) - int count, key; +rl_vi_back_to_indent (int count, int key) { rl_beg_of_line (1, key); while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) @@ -1687,8 +1632,7 @@ rl_vi_back_to_indent (count, key) } int -rl_vi_first_print (count, key) - int count, key; +rl_vi_first_print (int count, int key) { return (rl_vi_back_to_indent (1, key)); } @@ -1697,8 +1641,7 @@ static int _rl_cs_dir, _rl_cs_orig_dir; #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_char_search (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_char_search (_rl_callback_generic_arg *data) { int c; #if defined (HANDLE_MULTIBYTE) @@ -1732,8 +1675,7 @@ _rl_vi_callback_char_search (data) #endif int -rl_vi_char_search (count, key) - int count, key; +rl_vi_char_search (int count, int key) { int c; #if defined (HANDLE_MULTIBYTE) @@ -1826,8 +1768,7 @@ rl_vi_char_search (count, key) /* Match brackets */ int -rl_vi_match (ignore, key) - int ignore, key; +rl_vi_match (int ignore, int key) { int count = 1, brack, pos, tmp, pre; @@ -1916,8 +1857,7 @@ rl_vi_match (ignore, key) } int -rl_vi_bracktype (c) - int c; +rl_vi_bracktype (int c) { switch (c) { @@ -1932,9 +1872,7 @@ rl_vi_bracktype (c) } static int -_rl_vi_change_char (count, c, mb) - int count, c; - char *mb; +_rl_vi_change_char (int count, int c, char *mb) { int p; @@ -1947,7 +1885,7 @@ _rl_vi_change_char (count, c, mb) p = rl_point; rl_vi_delete (1, c); if (rl_point < p) /* Did we retreat at EOL? */ - rl_point++; + _rl_vi_append_forward (c); #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) rl_insert_text (mb); @@ -1965,9 +1903,7 @@ _rl_vi_change_char (count, c, mb) } static int -_rl_vi_callback_getchar (mb, mlen) - char *mb; - int mlen; +_rl_vi_callback_getchar (char *mb, int mlen) { int c; @@ -1988,13 +1924,18 @@ _rl_vi_callback_getchar (mb, mlen) #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_change_char (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_change_char (_rl_callback_generic_arg *data) { int c; - char mb[MB_LEN_MAX]; + char mb[MB_LEN_MAX+1]; - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#if defined (HANDLE_MULTIBYTE) + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); +#else + _rl_vi_last_replacement[0] = c; +#endif + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */ if (c < 0) return -1; @@ -2007,17 +1948,16 @@ _rl_vi_callback_change_char (data) #endif int -rl_vi_change_char (count, key) - int count, key; +rl_vi_change_char (int count, int key) { int c; - char mb[MB_LEN_MAX]; + char mb[MB_LEN_MAX+1]; if (_rl_vi_redoing) { - c = _rl_vi_last_replacement; - mb[0] = c; - mb[1] = '\0'; + strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX); + c = (unsigned char)_rl_vi_last_replacement[0]; /* XXX */ + mb[MB_LEN_MAX] = '\0'; } #if defined (READLINE_CALLBACKS) else if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -2028,7 +1968,15 @@ rl_vi_change_char (count, key) } #endif else - _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); + { + c = _rl_vi_callback_getchar (mb, MB_LEN_MAX); +#ifdef HANDLE_MULTIBYTE + strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX); +#else + _rl_vi_last_replacement[0] = c; +#endif + _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */ + } if (c < 0) return -1; @@ -2037,8 +1985,7 @@ rl_vi_change_char (count, key) } int -rl_vi_subst (count, key) - int count, key; +rl_vi_subst (int count, int key) { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ if (_rl_vi_redoing == 0) @@ -2048,8 +1995,7 @@ rl_vi_subst (count, key) } int -rl_vi_overstrike (count, key) - int count, key; +rl_vi_overstrike (int count, int key) { if (_rl_vi_doing_insert == 0) { @@ -2067,8 +2013,7 @@ rl_vi_overstrike (count, key) } int -rl_vi_overstrike_delete (count, key) - int count, key; +rl_vi_overstrike_delete (int count, int key) { int i, s; @@ -2098,8 +2043,7 @@ rl_vi_overstrike_delete (count, key) } int -rl_vi_replace (count, key) - int count, key; +rl_vi_replace (int count, int key) { int i; @@ -2130,6 +2074,9 @@ rl_vi_replace (count, key) vi_insertion_keymap[CTRL ('H')].function == rl_rubout) vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete; + /* Make sure this is the value we need. */ + vi_replace_map[ANYOTHERKEY].type = ISFUNC; + vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL; } rl_vi_start_inserting (key, 1, rl_arg_sign); @@ -2145,7 +2092,7 @@ rl_vi_replace (count, key) the previous character. A space matches everything. Word delimiters are space and ;. */ int -rl_vi_possible_completions() +rl_vi_possible_completions (void) { int save_pos = rl_point; @@ -2170,7 +2117,7 @@ rl_vi_possible_completions() /* Functions to save and restore marks. */ static int -_rl_vi_set_mark () +_rl_vi_set_mark (void) { int ch; @@ -2190,8 +2137,7 @@ _rl_vi_set_mark () #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_set_mark (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_set_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2201,8 +2147,7 @@ _rl_vi_callback_set_mark (data) #endif int -rl_vi_set_mark (count, key) - int count, key; +rl_vi_set_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) @@ -2217,7 +2162,7 @@ rl_vi_set_mark (count, key) } static int -_rl_vi_goto_mark () +_rl_vi_goto_mark (void) { int ch; @@ -2248,8 +2193,7 @@ _rl_vi_goto_mark () #if defined (READLINE_CALLBACKS) static int -_rl_vi_callback_goto_mark (data) - _rl_callback_generic_arg *data; +_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data) { _rl_callback_func = 0; _rl_want_redisplay = 1; @@ -2259,8 +2203,7 @@ _rl_vi_callback_goto_mark (data) #endif int -rl_vi_goto_mark (count, key) - int count, key; +rl_vi_goto_mark (int count, int key) { #if defined (READLINE_CALLBACKS) if (RL_ISSTATE (RL_STATE_CALLBACK)) diff --git a/lib/readline/xfree.c b/lib/readline/xfree.c index 37a81e6c2..c199b29bd 100644 --- a/lib/readline/xfree.c +++ b/lib/readline/xfree.c @@ -1,6 +1,6 @@ /* xfree.c -- safe version of free that ignores attempts to free NUL */ -/* Copyright (C) 1991-2010 Free Software Foundation, Inc. +/* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -42,8 +42,7 @@ /* Use this as the function to call when adding unwind protects so we don't need to know what free() returns. */ void -xfree (string) - PTR_T string; +xfree (PTR_T string) { if (string) free (string); diff --git a/lib/readline/xmalloc.c b/lib/readline/xmalloc.c index c77d7634d..5d01d75ea 100644 --- a/lib/readline/xmalloc.c +++ b/lib/readline/xmalloc.c @@ -1,6 +1,6 @@ /* xmalloc.c -- safe versions of malloc and realloc */ -/* Copyright (C) 1991-2009 Free Software Foundation, Inc. +/* Copyright (C) 1991-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -42,8 +42,7 @@ /* **************************************************************** */ static void -memory_error_and_abort (fname) - char *fname; +memory_error_and_abort (char *fname) { fprintf (stderr, "%s: out of virtual memory\n", fname); exit (2); @@ -53,8 +52,7 @@ memory_error_and_abort (fname) to hold BYTES number of bytes. If the memory cannot be allocated, print an error message and abort. */ PTR_T -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { PTR_T temp; @@ -65,9 +63,7 @@ xmalloc (bytes) } PTR_T -xrealloc (pointer, bytes) - PTR_T pointer; - size_t bytes; +xrealloc (PTR_T pointer, size_t bytes) { PTR_T temp; diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index 2ca921b33..b1a086d6f 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -67,8 +67,8 @@ LOCAL_DEFS = @LOCAL_DEFS@ INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC) -CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \ - $(CFLAGS) $(CPPFLAGS) +CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \ + $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS) GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \ -Wcast-align -Wstrict-prototypes -Wconversion \ diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c index f68303bc4..7cdd4178b 100644 --- a/lib/sh/casemod.c +++ b/lib/sh/casemod.c @@ -229,7 +229,10 @@ singlebyte: else { m = mbrtowc (&wc, string + start, end - start, &state); - if (MB_INVALIDCH (m) || m == 1) + /* Have to go through wide case conversion even for single-byte + chars, to accommodate single-byte characters where the + corresponding upper or lower case equivalent is multibyte. */ + if (MB_INVALIDCH (m)) { wc = (unsigned char)string[start]; goto singlebyte; diff --git a/lib/sh/clock.c b/lib/sh/clock.c index 84cdbc542..c6c52bf89 100644 --- a/lib/sh/clock.c +++ b/lib/sh/clock.c @@ -32,7 +32,13 @@ #include #include -extern long get_clk_tck __P((void)); +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + +extern long get_clk_tck PARAMS((void)); void clock_t_to_secs (t, sp, sfp) @@ -76,6 +82,6 @@ print_clock_t (fp, t) minutes = timestamp / 60; seconds = timestamp % 60; - fprintf (fp, "%ldm%d.%03ds", minutes, seconds, seconds_fraction); + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint(), seconds_fraction); } #endif /* HAVE_TIMES */ diff --git a/lib/sh/eaccess.c b/lib/sh/eaccess.c index 8fd8a43e7..3d8ae4e85 100644 --- a/lib/sh/eaccess.c +++ b/lib/sh/eaccess.c @@ -91,7 +91,9 @@ sh_stat (path, finfo) } if (path[0] == '/' && path[1] == 'd' && strncmp (path, "/dev/fd/", 8) == 0) { -#if !defined (HAVE_DEV_FD) + /* If stating /dev/fd/n doesn't produce the same results as fstat of + FD N, then define DEV_FD_STAT_BROKEN */ +#if !defined (HAVE_DEV_FD) || defined (DEV_FD_STAT_BROKEN) intmax_t fd; int r; diff --git a/lib/sh/mbschr.c b/lib/sh/mbschr.c index 7730e46ee..fdce6d5a1 100644 --- a/lib/sh/mbschr.c +++ b/lib/sh/mbschr.c @@ -28,9 +28,18 @@ #include "shmbutil.h" extern int locale_mb_cur_max; +extern int locale_utf8locale; #undef mbschr +static inline char * +utf8_mbschr (s, c) + const char *s; + int c; +{ + return strchr (s, c); /* for now */ +} + /* In some locales, the non-first byte of some multibyte characters have the same value as some ascii character. Faced with these strings, a legacy strchr() might return the wrong value. */ @@ -49,6 +58,9 @@ mbschr (s, c) mbstate_t state; size_t strlength, mblength; + if (locale_utf8locale && c < 0x80) + return (utf8_mbschr (s, c)); /* XXX */ + /* The locale encodings with said weird property are BIG5, BIG5-HKSCS, GBK, GB18030, SHIFT_JIS, and JOHAB. They exhibit the problem only when c >= 0x30. We can therefore use the faster bytewise search if diff --git a/lib/sh/shmbchar.c b/lib/sh/shmbchar.c index 7f14208e6..80858ebf2 100644 --- a/lib/sh/shmbchar.c +++ b/lib/sh/shmbchar.c @@ -20,9 +20,15 @@ #include #include +#include + #include #include +#ifndef errno +extern int errno; +#endif + #if IS_BASIC_ASCII /* Bit table of characters in the ISO C "basic character set". */ @@ -37,6 +43,106 @@ const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] = #endif /* IS_BASIC_ASCII */ +extern int locale_utf8locale; + +/* We can optimize this if we know the locale is UTF-8, but needs to handle + malformed byte sequences. */ +static inline size_t +utf8_mbstrlen(s) + const char *s; +{ + size_t num = 0; + register unsigned char c; + + while ((c = *s++)) + /* bytes 0xc0 through 0xff are first byte of multi-byte sequence */ + if ((c & 0xc0) != 0x80) /* skip continuation bytes */ + ++num; + return (num); +} + +/* Adapted from GNU libutf8 */ +static inline int +utf8_mblen (s, n) + const char *s; + int n; +{ + unsigned char c; + + if (s == 0) + return 0; + else if (n == 0) + return -1; + + c = (unsigned char) *s; + if (c < 0x80) + return (c != 0); + else if (c < 0xc0) + goto return_error; + else + { + const char *start = s; + size_t count; + int check_unsafe; + + if (c < 0xe0) + { + count = 1; + if (c < 0xc2) + goto return_error; + check_unsafe = 0; + } + else if (c < 0xf0) + { + count = 2; + check_unsafe = (c == 0xe0); + } +#if SIZEOF_WCHAR_T == 4 + else if (c < 0xf8) + { + count = 3; + check_unsafe = (c == 0xe0); + } + else if (c < 0xfc) + { + count = 4; + check_unsafe = (c == 0xf8); + } + else if (c < 0xfe) + { + count = 5; + check_unsafe = (c == 0xfc); + } +#endif + else + goto return_error; + if (n <= count) + return -1; + s++; + c = (unsigned char) *s++ ^ 0x80; + if (c >= 0x40) + goto return_error; + if (--count > 0) + { + if (check_unsafe && ((c >> (6 - count)) == 0)) + goto return_error; + do + { + c = (unsigned char) *s++ ^ 0x80; + if (c >= 0x40) + goto return_error; + } + while (--count > 0); + } + return s - start; + } +return_error: + errno = EILSEQ; + return -1; +} + +/* Count the number of characters in S, counting multi-byte characters as a + single character. */ size_t mbstrlen (s) const char *s; @@ -64,7 +170,21 @@ mbstrlen (s) return nc; } +static inline char * +utf8_mbsmbchar (str) + const char *str; +{ + register char *s; + + for (s = (char *)str; *s; s++) + if ((*s & 0xc0) == 0x80) + return s; + return (0); +} + /* Return pointer to first multibyte char in S, or NULL if none. */ +/* XXX - if we know that the locale is UTF-8, we can just check whether or + not any byte has the eighth bit turned on */ char * mbsmbchar (s) const char *s; @@ -74,13 +194,19 @@ mbsmbchar (s) mbstate_t mbs = { 0 }; int mb_cur_max; + if (locale_utf8locale) + return (utf8_mbsmbchar (s)); /* XXX */ + mb_cur_max = MB_CUR_MAX; for (t = (char *)s; *t; t++) { if (is_basic (*t)) continue; - clen = mbrlen (t, mb_cur_max, &mbs); + if (locale_utf8locale) /* not used if above code active */ + clen = utf8_mblen (t, mb_cur_max); + else + clen = mbrlen (t, mb_cur_max, &mbs); if (clen == 0) return 0; @@ -93,6 +219,22 @@ mbsmbchar (s) return 0; } +static inline int +utf_mbsnlen(src, srclen, maxlen) + const char *src; + size_t srclen; + int maxlen; +{ + register int sind, count; + + for (sind = count = 0; src[sind] && sind <= maxlen; sind++) + { + if ((src[sind] & 0xc0) != 0x80) + count++; + } + return (count); +} + int sh_mbsnlen(src, srclen, maxlen) const char *src; diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c index ecec5971f..97e2bc533 100644 --- a/lib/sh/shquote.c +++ b/lib/sh/shquote.c @@ -228,7 +228,8 @@ sh_un_double_quote (string) going through the shell parser, which will protect the internal quoting characters. TABLE, if set, points to a map of the ascii code set with char needing to be backslash-quoted if table[char]==1. FLAGS, - if 1, causes tildes to be quoted as well. */ + if 1, causes tildes to be quoted as well. If FLAGS&2, backslash-quote + other shell blank characters. */ char * sh_backslash_quote (string, table, flags) @@ -273,6 +274,8 @@ sh_backslash_quote (string, table, flags) /* Tildes are special at the start of a word or after a `:' or `=' (technically unquoted, but it doesn't make a difference in practice) */ *r++ = '\\'; + else if ((flags&2) && shellblank((unsigned char)c)) + *r++ = '\\'; *r++ = c; } diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c index 798314765..48f255f5d 100644 --- a/lib/sh/strtrans.c +++ b/lib/sh/strtrans.c @@ -230,8 +230,6 @@ ansic_quote (str, flags, rlen) *r++ = '$'; *r++ = '\''; - s = str; - for (s = str; c = *s; s++) { b = l = 1; /* 1 == add backslash; 0 == no backslash */ @@ -305,11 +303,9 @@ ansic_wshouldquote (string) { const wchar_t *wcs; wchar_t wcc; - wchar_t *wcstr = NULL; size_t slen; - slen = mbstowcs (wcstr, string, 0); if (slen == (size_t)-1) diff --git a/lib/sh/timeval.c b/lib/sh/timeval.c index 7bd9df8f6..c4b61dc8a 100644 --- a/lib/sh/timeval.c +++ b/lib/sh/timeval.c @@ -25,6 +25,13 @@ #include #include +#include +#include + +#ifndef locale_decpoint +extern int locale_decpoint PARAMS((void)); +#endif + #include struct timeval * @@ -140,6 +147,6 @@ print_timeval (fp, tvp) minutes = timestamp / 60; seconds = timestamp % 60; - fprintf (fp, "%ldm%d.%03ds", minutes, seconds, seconds_fraction); + fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint (), seconds_fraction); } #endif /* HAVE_TIMEVAL */ diff --git a/lib/sh/ufuncs.c b/lib/sh/ufuncs.c index fcd4c0444..ad9284ccb 100644 --- a/lib/sh/ufuncs.c +++ b/lib/sh/ufuncs.c @@ -37,8 +37,16 @@ #include #endif +#include +#if !defined (errno) +extern int errno; +#endif /* !errno */ + #if defined (HAVE_SELECT) # include "posixselect.h" +# include "quit.h" +# include "trap.h" +# include "stat-time.h" #endif /* A version of `alarm' using setitimer if it's available. */ @@ -84,17 +92,50 @@ falarm (secs, usecs) /* A version of sleep using fractional seconds and select. I'd like to use `usleep', but it's already taken */ -#if defined (HAVE_TIMEVAL) && defined (HAVE_SELECT) +#if defined (HAVE_TIMEVAL) && (defined (HAVE_SELECT) || defined (HAVE_PSELECT)) int fsleep(sec, usec) unsigned int sec, usec; { + int e, r; + sigset_t blocked_sigs, prevmask; +#if defined (HAVE_PSELECT) + struct timespec ts; +#else struct timeval tv; +#endif + sigemptyset (&blocked_sigs); +# if defined (SIGCHLD) + sigaddset (&blocked_sigs, SIGCHLD); +# endif + +#if defined (HAVE_PSELECT) + ts.tv_sec = sec; + ts.tv_nsec = usec * 1000; +#else + sigemptyset (&prevmask); tv.tv_sec = sec; tv.tv_usec = usec; +#endif /* !HAVE_PSELECT */ + + do + { +#if defined (HAVE_PSELECT) + r = pselect(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs); +#else + sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask); + r = select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); + sigprocmask (SIG_SETMASK, &prevmask, NULL); +#endif + e = errno; + if (r < 0 && errno == EINTR) + QUIT; /* just signals, no traps */ + errno = e; + } + while (r < 0 && errno == EINTR); - return select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &tv); + return r; } #else /* !HAVE_TIMEVAL || !HAVE_SELECT */ int diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c index b58eaefd9..fe13c4a0b 100644 --- a/lib/sh/unicode.c +++ b/lib/sh/unicode.c @@ -1,6 +1,6 @@ /* unicode.c - functions to convert unicode characters */ -/* Copyright (C) 2010-2015 Free Software Foundation, Inc. +/* Copyright (C) 2010-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -55,6 +55,8 @@ extern const char *locale_charset __P((void)); extern char *get_locale_var __P((char *)); #endif +extern int locale_utf8locale; + static int u32init = 0; static int utf8locale = 0; #if defined (HAVE_ICONV) @@ -219,12 +221,12 @@ u32toutf16 (c, s) int l; l = 0; - if (c < 0x0d800) + if (c < 0x0d800 || (c >= 0x0e000 && c <= 0x0ffff)) { s[0] = (unsigned short) (c & 0xFFFF); l = 1; } - else if (c >= 0x0e000 && c <= 0x010ffff) + else if (c >= 0x10000 && c <= 0x010ffff) { c -= 0x010000; s[0] = (unsigned short)((c >> 10) + 0xd800); @@ -265,28 +267,21 @@ u32cconv (c, s) return n; #endif -#if HAVE_NL_LANGINFO - codeset = nl_langinfo (CODESET); - if (STREQ (codeset, "UTF-8")) - { - n = u32toutf8 (c, s); - return n; - } -#endif - #if HAVE_ICONV /* this is mostly from coreutils-8.5/lib/unicodeio.c */ if (u32init == 0) { -# if HAVE_LOCALE_CHARSET - charset = locale_charset (); /* XXX - fix later */ -# else - charset = stub_charset (); -# endif - if (STREQ (charset, "UTF-8")) - utf8locale = 1; - else + utf8locale = locale_utf8locale; + localconv = (iconv_t)-1; + if (utf8locale == 0) { +#if HAVE_LOCALE_CHARSET + charset = locale_charset (); +#elif HAVE_NL_LANGINFO + charset = nl_langinfo (CODESET); +#else + charset = stub_charset (); +#endif localconv = iconv_open (charset, "UTF-8"); if (localconv == (iconv_t)-1) /* We assume ASCII when presented with an unknown encoding. */ @@ -295,6 +290,8 @@ u32cconv (c, s) u32init = 1; } + /* NL_LANGINFO and locale_charset used when setting locale_utf8locale */ + /* If we have a UTF-8 locale, convert to UTF-8 and return converted value. */ n = u32toutf8 (c, s); if (utf8locale) @@ -315,12 +312,8 @@ u32cconv (c, s) if (iconv (localconv, (ICONV_CONST char **)&iptr, &sn, &optr, &obytesleft) == (size_t)-1) { -#if 1 /* You get ISO C99 escape sequences if iconv fails */ n = u32tocesc (c, s); -#else - /* You get UTF-8 if iconv fails */ -#endif return n; } @@ -332,7 +325,10 @@ u32cconv (c, s) return (optr - obuf); #endif /* HAVE_ICONV */ - n = u32tocesc (c, s); /* fallback is ISO C99 escape sequences */ + if (locale_utf8locale) + n = u32toutf8 (c, s); + else + n = u32tocesc (c, s); /* fallback is ISO C99 escape sequences */ return n; } #else diff --git a/lib/sh/zread.c b/lib/sh/zread.c index 496f20b87..8b7ecedf6 100644 --- a/lib/sh/zread.c +++ b/lib/sh/zread.c @@ -1,6 +1,6 @@ /* zread - read data from file descriptor into buffer with retries */ -/* Copyright (C) 1999-2002 Free Software Foundation, Inc. +/* Copyright (C) 1999-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -53,6 +53,7 @@ zread (fd, buf, len) { ssize_t r; + check_signals (); /* check for signals before a blocking read */ while ((r = read (fd, buf, len)) < 0 && errno == EINTR) /* XXX - bash-5.0 */ /* We check executing_builtin and run traps here for backwards compatibility */ @@ -103,6 +104,7 @@ zreadintr (fd, buf, len) char *buf; size_t len; { + check_signals (); return (read (fd, buf, len)); } diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in index 7ca3b7897..c21d3897c 100644 --- a/lib/tilde/Makefile.in +++ b/lib/tilde/Makefile.in @@ -52,7 +52,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib -CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ +CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \ ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS) .c.o: diff --git a/lib/tilde/shell.c b/lib/tilde/shell.c index fafb86198..9805a9248 100644 --- a/lib/tilde/shell.c +++ b/lib/tilde/shell.c @@ -1,7 +1,7 @@ /* shell.c -- tilde utility functions that are normally provided by bash when readline is linked as part of the shell. */ -/* Copyright (C) 1998-2009 Free Software Foundation, Inc. +/* Copyright (C) 1998-2017 Free Software Foundation, Inc. This file is part of the GNU Tilde Library. @@ -49,8 +49,7 @@ extern struct passwd *getpwuid (); #endif /* !HAVE_GETPW_DECLS */ char * -get_env_value (varname) - char *varname; +get_env_value (char *varname) { return ((char *)getenv (varname)); } @@ -58,7 +57,7 @@ get_env_value (varname) /* If we're not using $HOME, assume that the passwd file information won't change while this shell instance is running. */ char * -get_home_dir () +get_home_dir (void) { static char *home_dir = (char *)NULL; struct passwd *entry; diff --git a/lib/tilde/tilde.c b/lib/tilde/tilde.c index 95bc4215c..9d0f29614 100644 --- a/lib/tilde/tilde.c +++ b/lib/tilde/tilde.c @@ -1,6 +1,6 @@ /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ -/* Copyright (C) 1988-2009 Free Software Foundation, Inc. +/* Copyright (C) 1988-2017 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); the tilde which starts the expansion. Place the length of the text which identified this tilde starter in LEN, excluding the tilde itself. */ static int -tilde_find_prefix (string, len) - const char *string; - int *len; +tilde_find_prefix (const char *string, int *len) { register int i, j, string_len; register char **prefixes; @@ -160,8 +158,7 @@ tilde_find_prefix (string, len) /* Find the end of a tilde expansion in STRING, and return the index of the character which ends the tilde definition. */ static int -tilde_find_suffix (string) - const char *string; +tilde_find_suffix (const char *string) { register int i, j, string_len; register char **suffixes; @@ -189,8 +186,7 @@ tilde_find_suffix (string) /* Return a new string which is the result of tilde expanding STRING. */ char * -tilde_expand (string) - const char *string; +tilde_expand (const char *string) { char *result; int result_size, result_index; @@ -267,9 +263,7 @@ tilde_expand (string) non-null, the index of the end of the prefix into FNAME is returned in the location it points to. */ static char * -isolate_tilde_prefix (fname, lenp) - const char *fname; - int *lenp; +isolate_tilde_prefix (const char *fname, int *lenp) { char *ret; int i; @@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp) function. Right now, it just calls tilde_find_suffix and allocates new memory, but it can be expanded to do different things later. */ char * -tilde_find_word (fname, flags, lenp) - const char *fname; - int flags, *lenp; +tilde_find_word (const char *fname, int flags, int *lenp) { int x; char *r; @@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp) /* Return a string that is PREFIX concatenated with SUFFIX starting at SUFFIND. */ static char * -glue_prefix_and_suffix (prefix, suffix, suffind) - char *prefix; - const char *suffix; - int suffind; +glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind) { char *ret; int plen, slen; @@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind) tilde. If there is no expansion, call tilde_expansion_failure_hook. This always returns a newly-allocated string, never static storage. */ char * -tilde_expand_word (filename) - const char *filename; +tilde_expand_word (const char *filename) { char *dirname, *expansion, *username; int user_len; @@ -434,9 +422,7 @@ tilde_expand_word (filename) #undef NULL #include -main (argc, argv) - int argc; - char **argv; +main (int argc, char **argv) { char *result, line[512]; int done = 0; @@ -464,11 +450,10 @@ main (argc, argv) exit (0); } -static void memory_error_and_abort (); +static void memory_error_and_abort (void); static void * -xmalloc (bytes) - size_t bytes; +xmalloc (size_t bytes) { void *temp = (char *)malloc (bytes); @@ -478,9 +463,7 @@ xmalloc (bytes) } static void * -xrealloc (pointer, bytes) - void *pointer; - int bytes; +xrealloc (void *pointer, int bytes) { void *temp; @@ -496,7 +479,7 @@ xrealloc (pointer, bytes) } static void -memory_error_and_abort () +memory_error_and_abort (void) { fprintf (stderr, "readline: out of virtual memory\n"); abort (); diff --git a/locale.c b/locale.c index a199cdf36..c42046bb8 100644 --- a/locale.c +++ b/locale.c @@ -1,6 +1,6 @@ /* locale.c - Miscellaneous internationalization functions. */ -/* Copyright (C) 1996-2009,2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2009,2012,2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,8 +43,9 @@ extern int errno; #endif -int locale_utf8locale; /* unused for now */ +int locale_utf8locale; /* set but unused for now */ int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */ +int locale_shiftstates; extern int dump_translatable_strings, dump_po_strings; @@ -84,6 +85,8 @@ set_default_locale () textdomain (PACKAGE); locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (default_locale); + locale_shiftstates = mblen ((char *)NULL, 0); } /* Set default values for LC_CTYPE, LC_COLLATE, LC_MESSAGES, LC_NUMERIC and @@ -103,6 +106,8 @@ set_default_locale_vars () setlocale (LC_CTYPE, lc_all); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + locale_utf8locale = locale_isutf8 (lc_all); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); } # endif @@ -203,6 +208,10 @@ set_locale_var (var, value) } locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + /* if LC_ALL == "", reset_locale_vars has already called this */ + if (*lc_all && x) + locale_utf8locale = locale_isutf8 (lc_all); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); return r; #else @@ -219,6 +228,10 @@ set_locale_var (var, value) x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + /* if setlocale() returns NULL, the locale is not changed */ + if (x) + locale_utf8locale = locale_isutf8 (x); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); } # endif @@ -327,15 +340,16 @@ get_locale_var (var) static int reset_locale_vars () { - char *t; + char *t, *x; #if defined (HAVE_SETLOCALE) if (lang == 0 || *lang == '\0') maybe_make_export_env (); /* trust that this will change environment for setlocale */ if (setlocale (LC_ALL, lang ? lang : "") == 0) return 0; + x = 0; # if defined (LC_CTYPE) - t = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); + x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); # endif # if defined (LC_COLLATE) t = setlocale (LC_COLLATE, get_locale_var ("LC_COLLATE")); @@ -352,8 +366,10 @@ reset_locale_vars () locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; + if (x) + locale_utf8locale = locale_isutf8 (x); + locale_shiftstates = mblen ((char *)NULL, 0); u32reset (); - #endif return 1; } @@ -547,17 +563,55 @@ locale_setblanks () } } +/* Parse a locale specification + language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]] + and return TRUE if the codeset is UTF-8 or utf8 */ static int locale_isutf8 (lspec) char *lspec; { - char *cp; + char *cp, *encoding; #if HAVE_LANGINFO_CODESET cp = nl_langinfo (CODESET); return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); +#elif HAVE_LOCALE_CHARSET + cp = locale_charset (); + return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8")); #else /* Take a shot */ - return (strstr (lspec, "UTF-8") || strstr (lspec, "utf8")); + for (cp = lspec; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + { + if (*cp == '.') + { + for (encoding = ++cp; *cp && *cp != '@' && *cp != '+' && *cp != ','; cp++) + ; + /* The encoding (codeset) is the substring between encoding and cp */ + if ((cp - encoding == 5 && STREQN (encoding, "UTF-8", 5)) || + (cp - encoding == 4 && STREQN (encoding, "utf8", 4))) + return 1; + else + return 0; + } + } + return 0; #endif } + +#if defined (HAVE_LOCALECONV) +int +locale_decpoint () +{ + struct lconv *lv; + + lv = localeconv (); + return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; +} +#else +# undef locale_decpoint +int +locale_decpoint () +{ + return '.'; +} +#endif diff --git a/make_cmd.c b/make_cmd.c index b42e9ff14..ecbbfd6e7 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -1,7 +1,7 @@ /* make_cmd.c -- Functions for making instances of the various parser constructs. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -34,19 +34,11 @@ #include "bashintl.h" +#include "shell.h" +#include "execute_cmd.h" #include "parser.h" -#include "syntax.h" -#include "command.h" -#include "general.h" -#include "error.h" #include "flags.h" -#include "make_cmd.h" -#include "dispose_cmd.h" -#include "variables.h" -#include "subst.h" #include "input.h" -#include "ocache.h" -#include "externs.h" #if defined (JOB_CONTROL) #include "jobs.h" @@ -54,10 +46,6 @@ #include "shmbutil.h" -extern int line_number, current_command_line_count, parser_state; -extern int last_command_exit_value; -extern int shell_initialized; - int here_doc_first_line = 0; /* Object caching */ @@ -805,7 +793,7 @@ make_function_def (name, command, lineno, lstart) temp->source_file = shell_initialized ? "main" : "environment"; #if defined (DEBUGGER) - bind_function_def (name->word, temp); + bind_function_def (name->word, temp, 0); #endif temp->source_file = temp->source_file ? savestring (temp->source_file) : 0; @@ -822,6 +810,7 @@ make_subshell_command (command) temp = (SUBSHELL_COM *)xmalloc (sizeof (SUBSHELL_COM)); temp->command = command; temp->flags = CMD_WANT_SUBSHELL; + temp->line = line_number; return (make_command (cm_subshell, (SIMPLE_COM *)temp)); } diff --git a/make_cmd.h b/make_cmd.h index f17774d91..fcd7766dc 100644 --- a/make_cmd.h +++ b/make_cmd.h @@ -23,6 +23,8 @@ #include "stdc.h" +extern int here_doc_first_line; + extern void cmd_init __P((void)); extern WORD_DESC *alloc_word_desc __P((void)); diff --git a/nojobs.c b/nojobs.c index fdbe0ae03..472624b92 100644 --- a/nojobs.c +++ b/nojobs.c @@ -49,6 +49,7 @@ #include "trap.h" #include "builtins/builtext.h" /* for wait_builtin */ +#include "builtins/common.h" #define DEFAULT_CHILD_MAX 32 @@ -73,17 +74,9 @@ extern int errno; #endif /* !errno */ -extern int interactive, interactive_shell, login_shell; -extern int subshell_environment; -extern int last_command_exit_value, last_command_exit_signal; -extern int interrupt_immediately; -extern sh_builtin_func_t *this_shell_builtin; #if defined (HAVE_POSIX_SIGNALS) extern sigset_t top_level_mask; #endif -extern procenv_t wait_intr_buf; -extern int wait_intr_flag; -extern int wait_signal_received; extern void set_original_signal __P((int, SigHandler *)); @@ -170,7 +163,10 @@ alloc_pid_list () /* None of the newly allocated slots have process id's yet. */ for (i = old; i < pid_list_size; i++) - pid_list[i].pid = NO_PID; + { + pid_list[i].pid = NO_PID; + pid_list[i].status = pid_list[i].flags = 0; + } } /* Return the offset within the PID_LIST array of an empty slot. This can @@ -273,6 +269,12 @@ set_pid_status (pid, status) coproc_pidchk (pid, status); #endif +#if defined (PROCESS_SUBSTITUTION) + if ((slot = find_procsub_child (pid)) >= 0) + set_procsub_status (slot, pid, WSTATUS (status)); + /* XXX - also saving in list below */ +#endif + slot = find_index_by_pid (pid); if (slot == NO_PID) return; @@ -399,8 +401,9 @@ cleanup_dead_jobs () for (i = 0; i < pid_list_size; i++) { - if ((pid_list[i].flags & PROC_RUNNING) == 0 && - (pid_list[i].flags & PROC_NOTIFIED)) + if (pid_list[i].pid != NO_PID && + (pid_list[i].flags & PROC_RUNNING) == 0 && + (pid_list[i].flags & PROC_NOTIFIED)) pid_list[i].pid = NO_PID; } diff --git a/parse.y b/parse.y index f415d2eec..6457782ba 100644 --- a/parse.y +++ b/parse.y @@ -1,6 +1,6 @@ /* parse.y - Yacc grammar for bash. */ -/* Copyright (C) 1989-2015 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -45,6 +45,7 @@ #define NEED_STRFTIME_DECL /* used in externs.h */ #include "shell.h" +#include "execute_cmd.h" #include "typemax.h" /* SIZE_MAX if needed */ #include "trap.h" #include "flags.h" @@ -94,6 +95,8 @@ typedef void *alias_t; #define RE_READ_TOKEN -99 #define NO_EXPANSION -100 +#define END_ALIAS -2 + #ifdef DEBUG # define YYDEBUG 1 #else @@ -115,24 +118,12 @@ typedef void *alias_t; extern int extended_glob; #endif -extern int eof_encountered; -extern int no_line_editing, running_under_emacs; -extern int current_command_number; -extern int sourcelevel, parse_and_execute_level; -extern int posixly_correct; -extern int last_command_exit_value; -extern pid_t last_command_subst_pid; -extern char *shell_name, *current_host_name; -extern char *dist_version; -extern int patch_level; extern int dump_translatable_strings, dump_po_strings; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern int here_doc_first_line; -#if defined (BUFFERED_INPUT) -extern int bash_input_fd_changed; -#endif +#if !defined (errno) extern int errno; +#endif + /* **************************************************************** */ /* */ /* "Forward" declarations */ @@ -218,6 +209,7 @@ static void print_prompt __P((void)); #if defined (HANDLE_MULTIBYTE) static void set_line_mbstate __P((void)); static char *shell_input_line_property = NULL; +static size_t shell_input_line_propsize = 0; #else # define set_line_mbstate() #endif @@ -328,6 +320,9 @@ static WORD_DESC *word_desc_to_read; static REDIRECTEE source; static REDIRECTEE redir; + +static FILE *yyoutstream; +static FILE *yyerrstream; %} %union { @@ -418,6 +413,22 @@ inputunit: simple_list simple_list_terminator YYABORT; } } + | error yacc_EOF + { + /* EOF after an error. Do ignoreeof or not. Really + only interesting in non-interactive shells */ + global_command = (COMMAND *)NULL; + last_command_exit_value = 1; + handle_eof_input_unit (); + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } | yacc_EOF { /* Case of EOF seen by itself. Do ignoreeof or @@ -744,14 +755,14 @@ command: simple_command COMMAND *tc; tc = $1; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $2; } - else + else if (tc) tc->redirects = $2; $$ = $1; } @@ -830,21 +841,25 @@ for_command: FOR WORD newline_list DO compound_list DONE arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE { $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' { $$ = make_arith_for_command ($2, $6, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS DO compound_list DONE { $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } | FOR ARITH_FOR_EXPRS '{' compound_list '}' { $$ = make_arith_for_command ($2, $4, arith_for_lineno); + if ($$ == 0) YYERROR; if (word_top > 0) word_top--; } ; @@ -928,14 +943,14 @@ function_body: shell_command redirection. The two are semantically equivalent, though -- the only difference is in how the command printing code displays the redirections. */ - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $2; } - else + else if (tc) tc->redirects = $2; $$ = $1; } @@ -958,14 +973,14 @@ coproc: COPROC shell_command COMMAND *tc; tc = $2; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $3; } - else + else if (tc) tc->redirects = $3; $$ = make_coproc_command ("COPROC", $2); $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; @@ -980,14 +995,14 @@ coproc: COPROC shell_command COMMAND *tc; tc = $3; - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = $4; } - else + else if (tc) tc->redirects = $4; $$ = make_coproc_command ($2->word, $3); $$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; @@ -1230,6 +1245,7 @@ pipeline_command: pipeline token_to_read = '\n'; else if ($2 == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } | BANG list_terminator { @@ -1250,6 +1266,7 @@ pipeline_command: pipeline token_to_read = '\n'; if ($2 == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } ; @@ -1316,6 +1333,8 @@ debug_parser (i) { #if YYDEBUG != 0 yydebug = i; + yyoutstream = stdout; + yyerrstream = stderr; #endif } #endif @@ -1453,6 +1472,7 @@ yy_readline_get () old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); } + sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); @@ -1615,19 +1635,9 @@ yy_stream_get () result = EOF; if (bash_input.location.file) { -#if 0 - if (interactive) - interrupt_immediately++; -#endif - /* XXX - don't need terminate_immediately; getc_with_restart checks for terminating signals itself if read returns < 0 */ result = getc_with_restart (bash_input.location.file); - -#if 0 - if (interactive) - interrupt_immediately--; -#endif } return (result); } @@ -1961,6 +1971,23 @@ parser_restore_alias () #endif } +#if defined (ALIAS) +/* Before freeing AP, make sure that there aren't any cases of pointer + aliasing that could cause us to reference freed memory later on. */ +void +clear_string_list_expander (ap) + alias_t *ap; +{ + register STRING_SAVER *t; + + for (t = pushed_string_list; t; t = t->next) + { + if (t->expander && t->expander == ap) + t->expander = 0; + } +} +#endif + void clear_shell_input_line () { @@ -2014,7 +2041,8 @@ read_a_line (remove_quoted_newline) c = '\n'; } - /* `+2' in case the final character in the buffer is a newline. */ + /* `+2' in case the final character in the buffer is a newline or we + have to handle CTLESC or CTLNUL. */ RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a @@ -2045,7 +2073,14 @@ read_a_line (remove_quoted_newline) } } else - line_buffer[indx++] = c; + { + /* remove_quoted_newline is non-zero if the here-document delimiter + is unquoted. In this case, we will be expanding the lines and + need to make sure CTLESC and CTLNUL in the input are quoted. */ + if (remove_quoted_newline && (c == CTLESC || c == CTLNUL)) + line_buffer[indx++] = CTLESC; + line_buffer[indx++] = c; + } if (c == '\n') { @@ -2306,6 +2341,16 @@ shell_getc (remove_quoted_newline) #if 0 internal_warning ("shell_getc: ignored null byte in input"); #endif + /* If we get EOS while parsing a string, treat it as EOF so we + don't just keep looping. Happens very rarely */ + if (bash_input.type == st_string) + { + if (i == 0) + shell_input_line_terminator = EOF; + shell_input_line[i] = '\0'; + c = EOF; + break; + } continue; } @@ -2484,6 +2529,30 @@ next_alias_char: parsing an alias, we have just saved one (push_string, when called by the parse_dparen code) In this case, just go on as well. The PSH_SOURCE case is handled below. */ + + /* If we're at the end of an alias expansion add a space to make sure that + the alias remains marked as being in use while we expand its last word. + This makes sure that pop_string doesn't mark the alias as not in use + before the string resulting from the alias expansion is tokenized and + checked for alias expansion, preventing recursion. At this point, the + last character in shell_input_line is the last character of the alias + expansion. We test that last character to determine whether or not to + return the space that will delimit the token and postpone the pop_string. + This set of conditions duplicates what used to be in mk_alexpansion () + below, with the addition that we don't add a space if we're currently + reading a quoted string. */ +#ifndef OLD_ALIAS_HACK + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + shell_input_line_index > 0 && + shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +#endif + pop_alias: if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { @@ -2502,10 +2571,9 @@ pop_alias: /* What do we do here if we're expanding an alias whose definition includes an escaped newline? If that's the last character in the alias expansion, we just pop the pushed string list (recall that - we inhibit the appending of a space in mk_alexpansion() if newline - is the last character). If it's not the last character, we need - to consume the quoted newline and move to the next character in - the expansion. */ + we inhibit the appending of a space if newline is the last + character). If it's not the last character, we need to consume the + quoted newline and move to the next character in the expansion. */ #if defined (ALIAS) if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') { @@ -2570,7 +2638,7 @@ parser_remaining_input () { if (shell_input_line == 0) return 0; - if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -2680,7 +2748,7 @@ yylex () if (bash_input.type == st_string) rewind_input_string (); } - parser_state &= ~PST_EOFTOKEN; + parser_state &= ~PST_EOFTOKEN; /* ??? */ return (current_token); } @@ -2689,6 +2757,10 @@ yylex () which allow ESAC to be the next one read. */ static int esacs_needed_count; +/* When non-zero, we can read IN as an acceptable token, regardless of how + many newlines we read. */ +static int expecting_in_token; + static void push_heredoc (r) REDIRECT *r; @@ -2809,10 +2881,15 @@ mk_alexpansion (s) l = strlen (s); r = xmalloc (l + 2); strcpy (r, s); +#ifdef OLD_ALIAS_HACK /* If the last character in the alias is a newline, don't add a trailing space to the expansion. Works with shell_getc above. */ - if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) + /* Need to do something about the case where the alias expansion contains + an unmatched quoted string, since appending this space affects the + subsequent output. */ + if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; +#endif r[l] = '\0'; return r; } @@ -2833,10 +2910,14 @@ alias_expand_token (tokstr) if (ap && (ap->flags & AL_BEINGEXPANDED)) return (NO_EXPANSION); +#ifdef OLD_ALIAS_HACK /* mk_alexpansion puts an extra space on the end of the alias expansion, - so the lookahead by the parser works right. If this gets changed, - make sure the code in shell_getc that deals with reaching the end of - an expanded alias is changed with it. */ + so the lookahead by the parser works right (the alias needs to remain + `in use' while parsing its last word to avoid alias recursion for + something like "alias echo=echo"). If this gets changed, make sure + the code in shell_getc that deals with reaching the end of an + expanded alias is changed with it. */ +#endif expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; if (expanded) @@ -2934,12 +3015,9 @@ static int special_case_tokens (tokstr) char *tokstr; { + /* Posix grammar rule 6 */ if ((last_read_token == WORD) && -#if defined (SELECT_COMMAND) ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && -#else - ((token_before_that == FOR) || (token_before_that == CASE)) && -#endif (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) { if (token_before_that == CASE) @@ -2947,9 +3025,34 @@ special_case_tokens (tokstr) parser_state |= PST_CASEPAT; esacs_needed_count++; } + if (expecting_in_token) + expecting_in_token--; + return (IN); + } + + /* bash-5.0: leaving above code intact for now, but it should eventually be + removed in favor of this clause. */ + /* Posix grammar rule 6 */ + if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') && + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (parser_state & PST_CASESTMT) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + expecting_in_token--; return (IN); } + /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */ + else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') && + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + { + expecting_in_token--; + return (DO); + } + /* for i do; command-list; done */ if (last_read_token == WORD && #if defined (SELECT_COMMAND) (token_before_that == FOR || token_before_that == SELECT) && @@ -2957,7 +3060,11 @@ special_case_tokens (tokstr) (token_before_that == FOR) && #endif (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) - return (DO); + { + if (expecting_in_token) + expecting_in_token--; + return (DO); + } /* Ditto for ESAC in the CASE case. Specifically, this handles "case word in esac", which is a legal @@ -2967,9 +3074,9 @@ special_case_tokens (tokstr) the designers disagree. */ if (esacs_needed_count) { - esacs_needed_count--; - if (STREQ (tokstr, "esac")) + if (last_read_token == IN && STREQ (tokstr, "esac")) { + esacs_needed_count--; parser_state &= ~PST_CASEPAT; return (ESAC); } @@ -3121,6 +3228,17 @@ read_token (command) return (yacc_EOF); } + /* If we hit the end of the string and we're not expanding an alias (e.g., + we are eval'ing a string that is an incomplete command), return EOF */ + if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) + { +#if defined (DEBUG) +itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); +#endif + EOF_Reached = 1; + return (yacc_EOF); + } + if MBTEST(character == '#' && (!interactive || interactive_comments)) { /* A comment. Discard until EOL or EOF, and then return a newline. */ @@ -3316,18 +3434,19 @@ tokword: #define P_DOLBRACE 0x0040 /* parsing a ${...} construct */ /* Lexical state while parsing a grouping construct or $(...). */ -#define LEX_WASDOL 0x001 -#define LEX_CKCOMMENT 0x002 -#define LEX_INCOMMENT 0x004 -#define LEX_PASSNEXT 0x008 -#define LEX_RESWDOK 0x010 -#define LEX_CKCASE 0x020 -#define LEX_INCASE 0x040 -#define LEX_INHEREDOC 0x080 -#define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ -#define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ -#define LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ -#define LEX_INWORD 0x800 +#define LEX_WASDOL 0x0001 +#define LEX_CKCOMMENT 0x0002 +#define LEX_INCOMMENT 0x0004 +#define LEX_PASSNEXT 0x0008 +#define LEX_RESWDOK 0x0010 +#define LEX_CKCASE 0x0020 +#define LEX_INCASE 0x0040 +#define LEX_INHEREDOC 0x0080 +#define LEX_HEREDELIM 0x0100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x0200 /* <<- strip tabs from here doc delim */ +#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ +#define LEX_INWORD 0x0800 +#define LEX_GTLT 0x1000 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -3358,7 +3477,7 @@ parse_matched_pair (qc, open, close, lenp, flags) int open, close; int *lenp, flags; { - int count, ch, tflags; + int count, ch, prevch, tflags; int nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; int retind, retsize, rflags; @@ -3380,8 +3499,10 @@ parse_matched_pair (qc, open, close, lenp, flags) retind = 0; start_lineno = line_number; + ch = EOF; /* just in case */ while (count) { + prevch = ch; ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); if (ch == EOF) @@ -3532,7 +3653,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); /* If we're parsing a double-quoted brace expansion and we are not in a place where single quotes are treated specially, @@ -3562,7 +3683,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -3575,6 +3696,12 @@ parse_matched_pair (qc, open, close, lenp, flags) } else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; +#if defined (PROCESS_SUBSTITUTION) + /* XXX - technically this should only be recognized at the start of + a word */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '(')) /* ) */ + goto parse_dollar_word; +#endif } /* Parse an old-style command substitution within double quotes as a single word. */ @@ -3606,7 +3733,13 @@ parse_dollar_word: FREE (nestret); } - if MBTEST(ch == '$') +#if defined (PROCESS_SUBSTITUTION) + if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0) + tflags |= LEX_GTLT; + else + tflags &= ~LEX_GTLT; +#endif + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -3738,7 +3871,7 @@ parse_comsub (qc, open, close, lenp, flags) while (count) { comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); if (ch == EOF) { @@ -3769,7 +3902,7 @@ eof_error: tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; - if (STREQN (ret + tind, heredelim, hdlen)) + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) { tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ @@ -4010,11 +4143,13 @@ eof_error: tflags |= LEX_RESWDOK; lex_rwlen = 0; } - else + else if (shellmeta (ch) == 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } + else /* can't be in a reserved word any more */ + lex_rwlen = 0; } else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) ; /* don't modify LEX_RESWDOK if we're starting a comment */ @@ -4087,7 +4222,10 @@ eof_error: continue; } else - ch = peekc; /* fall through and continue XXX */ + { + shell_ungetc (peekc); /* not a here-doc, start over */ + continue; + } } else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) { @@ -4143,7 +4281,7 @@ eof_error: { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); if ((rflags & P_DQUOTE) == 0) { @@ -4162,7 +4300,7 @@ eof_error: { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -4190,7 +4328,7 @@ eof_error: FREE (nestret); } - if MBTEST(ch == '$') + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -4215,12 +4353,25 @@ xparse_dolparen (base, string, indp, flags) sh_parser_state_t ps; sh_input_line_state_t ls; int orig_ind, nc, sflags, orig_eof_token; - char *ret, *s, *ep, *ostring; + char *ret, *ep, *ostring; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + STRING_SAVER *saved_pushed_strings; +#endif - /*yydebug = 1;*/ +/*debug_parser(1);*/ orig_ind = *indp; ostring = string; + if (*string == 0) + { + if (flags & SX_NOALLOC) + return (char *)NULL; + + ret = xmalloc (1); + ret[0] = '\0'; + return ret; + } + /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) @@ -4228,29 +4379,47 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; +#endif /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ + nc = parse_string (string, "command substitution", sflags, &ep); + if (current_token == shell_eof_token) + yyclearin; /* might want to clear lookahead token unconditionally */ + shell_eof_token = orig_eof_token; restore_parser_state (&ps); reset_parser (); /* reset_parser clears shell_input_line and associated variables */ restore_input_line_state (&ls); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = saved_pushed_strings; +#endif + token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the - negative of the return value */ + negative of the return value. We abandon the rest of this input line + first */ if (nc < 0) - jump_to_top_level (-nc); /* XXX */ + { + clear_shell_input_line (); /* XXX */ + jump_to_top_level (-nc); /* XXX */ + } /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET - and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ + and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') @@ -4269,6 +4438,8 @@ xparse_dolparen (base, string, indp, flags) #if DEBUG if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); + if (*indp < orig_ind) + itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif if (flags & SX_NOALLOC) @@ -4512,7 +4683,7 @@ cond_term () if (term) term->flags |= CMD_INVERT_RETURN; } - else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) + else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (READ); @@ -4645,20 +4816,30 @@ parse_cond_command () #if defined (ARRAY_VARS) /* When this is called, it's guaranteed that we don't care about anything - in t beyond i. We do save and restore the chars, though. */ + in t beyond i. We use a buffer with room for the characters we add just + in case assignment() ends up doing something like parsing a command + substitution that will reallocate atoken. We don't want to write beyond + the end of an allocated buffer. */ static int token_is_assignment (t, i) char *t; int i; { - unsigned char c, c1; int r; + char *atoken; - c = t[i]; c1 = t[i+1]; - t[i] = '='; t[i+1] = '\0'; - r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); - t[i] = c; t[i+1] = c1; - return r; + atoken = xmalloc (i + 3); + memcpy (atoken, t, i); + atoken[i] = '='; + atoken[i+1] = '\0'; + + r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0); + + free (atoken); + + /* XXX - check that r == i to avoid returning false positive for + t containing `=' before t[i]. */ + return (r > 0 && r == i); } /* XXX - possible changes here for `+=' */ @@ -4773,7 +4954,8 @@ read_token_word (character) strcpy (token + token_index, ttok); token_index += ttoklen; all_digit_token = 0; - quoted = 1; + if (character != '`') + quoted = 1; dollar_present |= (character == '"' && strchr (ttok, '$') != 0); FREE (ttok); goto next_character; @@ -5113,6 +5295,7 @@ got_token: yylval.word = the_word; + /* should we check that quoted == 0 as well? */ if (token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { @@ -5125,9 +5308,15 @@ got_token: #endif { strcpy (the_word->word, token+1); -/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/ +/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */ + yylval.word = the_word; /* accommodate recursive call */ return (REDIR_WORD); } + else + /* valid_array_reference can call the parser recursively; need to + make sure that yylval.word doesn't change if we are going to + return WORD or ASSIGNMENT_WORD */ + yylval.word = the_word; } result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) @@ -5145,6 +5334,7 @@ got_token: if (word_top < MAX_CASE_NEST) word_top++; word_lineno[word_top] = line_number; + expecting_in_token++; break; } @@ -5348,6 +5538,9 @@ history_delimiting_chars (line) return (" "); } + if (line_isblank (line)) + return (""); + return ("; "); } #endif /* HISTORY */ @@ -5418,6 +5611,31 @@ print_prompt () fflush (stderr); } +#if defined (HISTORY) + /* The history library increments the history offset as soon as it stores + the first line of a potentially multi-line command, so we compensate + here by returning one fewer when appropriate. */ +static int +prompt_history_number (pmt) + char *pmt; +{ + int ret; + + ret = history_number (); + if (ret == 1) + return ret; + + if (pmt == ps1_prompt) /* are we expanding $PS1? */ + return ret; + else if (pmt == ps2_prompt && command_oriented_history == 0) + return ret; /* not command oriented history */ + else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved) + return ret - 1; + else + return ret - 1; /* PS0, PS4, ${var@P}, PS2 other cases */ +} +#endif + /* Return a string which will be printed as a prompt. The string may contain special characters which are decoded as follows: @@ -5455,7 +5673,7 @@ decode_prompt_string (string) char *string; { WORD_LIST *list; - char *result, *t; + char *result, *t, *orig_string; struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) @@ -5471,6 +5689,7 @@ decode_prompt_string (string) result = (char *)xmalloc (result_size = PROMPT_GROWTH); result[result_index = 0] = 0; temp = (char *)NULL; + orig_string = string; while (c = *string++) { @@ -5486,7 +5705,7 @@ decode_prompt_string (string) #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ string--; /* add_string increments string again. */ goto add_string; @@ -5718,14 +5937,19 @@ decode_prompt_string (string) goto add_string; case '#': - temp = itos (current_command_number); + n = current_command_number; + /* If we have already incremented current_command_number (PS4, + ${var@P}), compensate */ + if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt) + n--; + temp = itos (n); goto add_string; case '!': #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ goto add_string; @@ -6302,8 +6526,6 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { - int i; - if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -6339,15 +6561,10 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; -#if 0 - for (i = 0; i < HEREDOC_MAX; i++) - ps->redir_stack[i] = redir_stack[i]; -#else if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); -#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -6457,6 +6674,10 @@ restore_input_line_state (ls) ************************************************/ #if defined (HANDLE_MULTIBYTE) + +/* We don't let the property buffer get larger than this unless the line is */ +#define MAX_PROPSIZE 32768 + static void set_line_mbstate () { @@ -6468,8 +6689,22 @@ set_line_mbstate () if (shell_input_line == NULL) return; len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ - shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); + if (len == 0) + return; + if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1) + { + free (shell_input_line_property); + shell_input_line_property = 0; + shell_input_line_propsize = 0; + } + if (len+1 > shell_input_line_propsize) + { + shell_input_line_propsize = len + 1; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize); + } + /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to + mbrlen */ memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) { @@ -6484,6 +6719,9 @@ set_line_mbstate () break; } + /* I'd love to take more advantage of UTF-8's properties in a UTF-8 + locale, but mbrlen changes the mbstate_t on every call even when + presented with single-byte characters. */ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); if (mbclen == 1 || mbclen == (size_t)-1) { diff --git a/parser-built b/parser-built index b367eb205..6efd73716 100644 --- a/parser-built +++ b/parser-built @@ -148,7 +148,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ diff --git a/parser.h b/parser.h index 8d396dff0..88c799d88 100644 --- a/parser.h +++ b/parser.h @@ -70,4 +70,30 @@ struct dstack { #define DOLBRACE_QUOTE 0x40 /* single quote is special in double quotes */ #define DOLBRACE_QUOTE2 0x80 /* single quote is semi-special in double quotes */ +/* variable declarations from parse.y */ +extern struct dstack dstack; + +extern char *primary_prompt; +extern char *secondary_prompt; + +extern char *current_prompt_string; + +extern char *ps1_prompt; +extern char *ps2_prompt; +extern char *ps0_prompt; + +extern int expand_aliases; +extern int current_command_line_count; +extern int saved_command_line_count; +extern int shell_eof_token; +extern int current_token; +extern int parser_state; +extern int need_here_doc; + +extern int ignoreeof; +extern int eof_encountered; +extern int eof_encountered_limit; + +extern int line_number, line_number_base; + #endif /* _PARSER_H_ */ diff --git a/patchlevel.h b/patchlevel.h index a711c4957..1cd7c96c7 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 19 +#define PATCHLEVEL 0 #endif /* _PATCHLEVEL_H_ */ diff --git a/pathexp.c b/pathexp.c index 21fc148db..b51729a7b 100644 --- a/pathexp.c +++ b/pathexp.c @@ -96,8 +96,13 @@ unquoted_glob_pattern_p (string) return (1); continue; - case CTLESC: + /* A pattern can't end with a backslash, but a backslash in the pattern + can be removed by the matching engine, so we have to run it through + globbing. */ case '\\': + return (*string != 0); + + case CTLESC: if (*string++ == '\0') return (0); } @@ -172,10 +177,11 @@ glob_char_p (s) is performed, (flags & QGLOB_CVTNULL) should be 0; if called when quote removal has not been done (for example, before attempting to match a pattern while executing a case statement), flags should include - QGLOB_CVTNULL. If flags includes QGLOB_FILENAME, appropriate quoting - to match a filename should be performed. QGLOB_REGEXP means we're - quoting for a Posix ERE (for [[ string =~ pat ]]) and that requires - some special handling. */ + QGLOB_CVTNULL. If flags includes QGLOB_CTLESC, we need to remove CTLESC + quoting CTLESC or CTLNUL (as if dequote_string were called). If flags + includes QGLOB_FILENAME, appropriate quoting to match a filename should be + performed. QGLOB_REGEXP means we're quoting for a Posix ERE (for + [[ string =~ pat ]]) and that requires some special handling. */ char * quote_string_for_globbing (pathname, qflags) const char *pathname; @@ -183,7 +189,7 @@ quote_string_for_globbing (pathname, qflags) { char *temp; register int i, j; - int brack, cclass, collsym, equiv, c, last_was_backslash; + int cclass, collsym, equiv, c, last_was_backslash; int savei, savej; temp = (char *)xmalloc (2 * strlen (pathname) + 1); @@ -194,7 +200,7 @@ quote_string_for_globbing (pathname, qflags) return temp; } - brack = cclass = collsym = equiv = last_was_backslash = 0; + cclass = collsym = equiv = last_was_backslash = 0; for (i = j = 0; pathname[i]; i++) { /* Fix for CTLESC at the end of the string? */ @@ -205,7 +211,7 @@ quote_string_for_globbing (pathname, qflags) } /* If we are parsing regexp, turn CTLESC CTLESC into CTLESC. It's not an ERE special character, so we should just be able to pass it through. */ - else if ((qflags & QGLOB_REGEXP) && pathname[i] == CTLESC && pathname[i+1] == CTLESC) + else if ((qflags & (QGLOB_REGEXP|QGLOB_CTLESC)) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) { i++; temp[j++] = pathname[i]; @@ -225,11 +231,20 @@ quote_string_for_globbing (pathname, qflags) } else if ((qflags & QGLOB_REGEXP) && (i == 0 || pathname[i-1] != CTLESC) && pathname[i] == '[') /*]*/ { - brack = 1; temp[j++] = pathname[i++]; /* open bracket */ savej = j; savei = i; c = pathname[i++]; /* c == char after open bracket */ + if (c == '^') /* ignore pattern negation */ + { + temp[j++] = c; + c = pathname[i++]; + } + if (c == ']') /* ignore right bracket if first char */ + { + temp[j++] = c; + c = pathname[i++]; + } do { if (c == 0) @@ -315,6 +330,10 @@ quote_string_for_globbing (pathname, qflags) i++; if (pathname[i] == '\0') break; + /* If we are turning CTLESC CTLESC into CTLESC, we need to do that + even when the first CTLESC is preceded by a backslash. */ + if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL)) + i++; /* skip over the CTLESC */ } else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP)) last_was_backslash = 1; @@ -406,11 +425,13 @@ shell_glob_filename (pathname) #else /* !USE_POSIX_GLOB_LIBRARY */ char *temp, **results; + int gflags; noglob_dot_filenames = glob_dot_filenames == 0; temp = quote_string_for_globbing (pathname, QGLOB_FILENAME); - results = glob_filename (temp, glob_star ? GX_GLOBSTAR : 0); + gflags = glob_star ? GX_GLOBSTAR : 0; + results = glob_filename (temp, gflags); free (temp); if (results && ((GLOB_FAILED (results)) == 0)) diff --git a/pathexp.h b/pathexp.h index 183a2124c..adef8b2a1 100644 --- a/pathexp.h +++ b/pathexp.h @@ -33,6 +33,8 @@ extern char *glob_error_return; #define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */ #define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */ +#define QGLOB_CTLESC 0x08 /* turn CTLESC CTLESC into CTLESC for BREs */ +#define QGLOB_DEQUOTE 0x10 /* like dequote_string but quote glob chars */ #if defined (EXTENDED_GLOB) /* Flags to OR with other flag args to strmatch() to enabled the extended diff --git a/pcomplete.c b/pcomplete.c index ac0903a9e..7a5f102f5 100644 --- a/pcomplete.c +++ b/pcomplete.c @@ -1,6 +1,6 @@ /* pcomplete.c - functions to generate lists of matches for programmable completion. */ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -71,8 +71,6 @@ #include #include -#define PCOMP_RETRYFAIL 256 - #ifdef STRDUP # undef STRDUP #endif @@ -84,10 +82,8 @@ typedef SHELL_VAR **SVFUNC (); extern char *strpbrk __P((char *, char *)); #endif -extern int array_needs_making; extern STRING_INT_ALIST word_token_alist[]; extern char *signal_names[]; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; #if defined (DEBUG) #if defined (PREFER_STDARG) @@ -155,6 +151,10 @@ static int progcomp_debug = 0; int prog_completion_enabled = 1; +#ifdef ALIAS +int progcomp_alias = 0; /* unavailable to user code for now */ +#endif + /* These are used to manage the arrays of strings for possible completions. */ ITEMLIST it_aliases = { 0, it_init_aliases, (STRINGLIST *)0 }; ITEMLIST it_arrayvars = { LIST_DYNAMIC, it_init_arrayvars, (STRINGLIST *)0 }; @@ -185,6 +185,9 @@ COMPSPEC *pcomp_curcs; const char *pcomp_curcmd; const char *pcomp_curtxt; +char *pcomp_line; +int pcomp_ind; + #ifdef DEBUG /* Debugging code */ static void @@ -728,7 +731,6 @@ pcomp_filename_completion_function (text, state) int state; { static char *dfn; /* dequoted filename */ - int qc; int iscompgen, iscompleting; if (state == 0) @@ -954,11 +956,15 @@ bind_comp_words (lwords) { SHELL_VAR *v; - v = find_variable ("COMP_WORDS"); + v = find_variable_noref ("COMP_WORDS"); if (v == 0) v = make_new_array_variable ("COMP_WORDS"); + if (nameref_p (v)) + VUNSETATTR (v, att_nameref); +#if 0 if (readonly_p (v)) VUNSETATTR (v, att_readonly); +#endif if (array_p (v) == 0) v = convert_var_to_array (v); v = assign_array_var_from_word_list (v, lwords, 0); @@ -993,17 +999,17 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) llen = MB_STRLEN (line); line[ind] = c; value = inttostr (llen, ibuf, sizeof(ibuf)); - v = bind_int_variable ("COMP_POINT", value); + v = bind_int_variable ("COMP_POINT", value, 0); if (v && exported) VSETATTR(v, att_exported); value = inttostr (rl_completion_type, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_TYPE", value); + v = bind_int_variable ("COMP_TYPE", value, 0); if (v && exported) VSETATTR(v, att_exported); value = inttostr (rl_completion_invoking_key, ibuf, sizeof (ibuf)); - v = bind_int_variable ("COMP_KEY", value); + v = bind_int_variable ("COMP_KEY", value, 0); if (v && exported) VSETATTR(v, att_exported); @@ -1014,7 +1020,7 @@ bind_compfunc_variables (line, ind, lwords, cw, exported) #ifdef ARRAY_VARS v = bind_comp_words (lwords); value = inttostr (cw, ibuf, sizeof(ibuf)); - bind_int_variable ("COMP_CWORD", value); + bind_int_variable ("COMP_CWORD", value, 0); #endif } else @@ -1165,13 +1171,13 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp) v = find_variable ("COMPREPLY"); if (v == 0) return ((STRINGLIST *)NULL); - if (array_p (v) == 0) + if (array_p (v) == 0 && assoc_p (v) == 0) v = convert_var_to_array (v); VUNSETATTR (v, att_invisible); a = array_cell (v); - if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_empty (a)) + if (found == 0 || (found & PCOMP_RETRYFAIL) || a == 0 || array_p (v) == 0 || array_empty (a)) sl = (STRINGLIST *)NULL; else { @@ -1243,7 +1249,7 @@ gen_command_matches (cs, cmd, text, line, ind, lwords, nw, cw) } cscmd[cmdlen] = '\0'; - tw = command_substitute (cscmd, 0); + tw = command_substitute (cscmd, 0, 0); csbuf = tw ? tw->word : (char *)NULL; if (tw) dispose_word_desc (tw); @@ -1379,14 +1385,14 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) /* If we have a command or function to execute, we need to first break the command line into individual words, find the number of words, and find the word in the list containing the word to be completed. */ - line = substring (rl_line_buffer, start, end); + line = substring (pcomp_line, start, end); llen = end - start; #ifdef DEBUG debug_printf ("command_line_to_word_list (%s, %d, %d, %p, %p)", - line, llen, rl_point - start, &nw, &cw); + line, llen, pcomp_ind - start, &nw, &cw); #endif - lwords = command_line_to_word_list (line, llen, rl_point - start, &nw, &cw); + lwords = command_line_to_word_list (line, llen, pcomp_ind - start, &nw, &cw); /* If we skipped a NULL word at the beginning of the line, add it back */ if (lwords && lwords->word && cmd[0] == 0 && lwords->word->word[0] != 0) { @@ -1413,7 +1419,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) if (cs->funcname) { foundf = 0; - tmatches = gen_shell_function_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw, &foundf); + tmatches = gen_shell_function_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw, &foundf); if (foundf != 0) found = foundf; if (tmatches) @@ -1433,7 +1439,7 @@ gen_compspec_completions (cs, cmd, word, start, end, foundp) if (cs->command) { - tmatches = gen_command_matches (cs, cmd, word, line, rl_point - start, lwords, nw, cw); + tmatches = gen_command_matches (cs, cmd, word, line, pcomp_ind - start, lwords, nw, cw); if (tmatches) { #ifdef DEBUG @@ -1607,37 +1613,107 @@ gen_progcomp_completions (ocmd, cmd, word, start, end, foundp, retryp, lastcs) /* The driver function for the programmable completion code. Returns a list of matches for WORD, which is an argument to command CMD. START and END - bound the command currently being completed in rl_line_buffer. */ + bound the command currently being completed in pcomp_line (usually + rl_line_buffer). */ char ** programmable_completions (cmd, word, start, end, foundp) const char *cmd; const char *word; int start, end, *foundp; { - COMPSPEC *cs, *lastcs; + COMPSPEC *lastcs; STRINGLIST *ret; char **rmatches, *t; int found, retry, count; + char *ocmd; + int oend; +#if defined (ALIAS) + alias_t *al; +#endif lastcs = 0; found = count = 0; + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + + ocmd = (char *)cmd; + oend = end; + do { retry = 0; /* We look at the basename of CMD if the full command does not have an associated COMPSPEC. */ - ret = gen_progcomp_completions (cmd, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (ocmd, ocmd, word, start, oend, &found, &retry, &lastcs); if (found == 0) { - t = strrchr (cmd, '/'); + t = strrchr (ocmd, '/'); if (t && *(++t)) - ret = gen_progcomp_completions (t, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (t, ocmd, word, start, oend, &found, &retry, &lastcs); } if (found == 0) - ret = gen_progcomp_completions (DEFAULTCMD, cmd, word, start, end, &found, &retry, &lastcs); + ret = gen_progcomp_completions (DEFAULTCMD, ocmd, word, start, oend, &found, &retry, &lastcs); + +#if defined (ALIAS) + /* Look up any alias for CMD, try to gen completions for it */ + /* Look up the alias, find the value, build a new line replacing CMD + with that value, offsetting PCOMP_IND and END appropriately, reset + PCOMP_LINE to the new line and OCMD with the new command name, then + call gen_progcomp_completions again. We could use alias_expand for + this, but it does more (and less) than we need right now. */ + if (found == 0 && retry == 0 && progcomp_alias && (al = find_alias (ocmd))) + { + char *ncmd, *nline, *ntxt; + int ind, lendiff; + size_t nlen, olen, llen; + + /* We found an alias for OCMD. Take the value and build a new line */ + ntxt = al->value; + nlen = strlen (ntxt); + if (nlen == 0) + break; + olen = strlen (ocmd); + lendiff = nlen - olen; /* can be negative */ + llen = strlen (pcomp_line); + + nline = (char *)xmalloc (llen + lendiff + 1); + if (start > 0) + strncpy (nline, pcomp_line, start); + strncpy (nline + start, ntxt, nlen); + strcpy (nline + start + nlen, pcomp_line + start + olen); + + /* Find the first word of the alias value and use that as OCMD. We + don't check the alias value to see whether it begins with a valid + command name, so this can be fooled. */ + ind = skip_to_delim (ntxt, 0, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE); /*)*/ + if (ind > 0) + ncmd = substring (ntxt, 0, ind); + else + { + free (nline); + break; /* will free pcomp_line and ocmd later */ + } + + /* Adjust PCOMP_IND and OEND appropriately */ + pcomp_ind += lendiff; + oend += lendiff; + + /* Set up values with new line. WORD stays the same. */ + if (ocmd != cmd) + free (ocmd); + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + + ocmd = ncmd; + pcomp_line = nline; + + /* And go back and start over. */ + retry = 1; + } +#endif /* ALIAS */ count++; @@ -1649,6 +1725,11 @@ programmable_completions (cmd, word, start, end, foundp) } while (retry); + if (pcomp_line != rl_line_buffer) + free (pcomp_line); + if (ocmd != cmd) + free (ocmd); + if (ret) { rmatches = ret->list; @@ -1663,6 +1744,10 @@ programmable_completions (cmd, word, start, end, foundp) if (lastcs) /* XXX - should be while? */ compspec_dispose (lastcs); + /* XXX restore pcomp_line and pcomp_ind? */ + pcomp_line = rl_line_buffer; + pcomp_ind = rl_point; + return (rmatches); } diff --git a/pcomplete.h b/pcomplete.h index 0514245a6..2ae8224eb 100644 --- a/pcomplete.h +++ b/pcomplete.h @@ -77,6 +77,12 @@ typedef struct compspec { #define COPT_PLUSDIRS (1<<7) #define COPT_NOSORT (1<<8) +#define COPT_LASTUSER COPT_NOSORT + +#define PCOMP_RETRYFAIL (COPT_LASTUSER << 1) +#define PCOMP_NOTFOUND (COPT_LASTUSER << 2) + + /* List of items is used by the code that implements the programmable completions. */ typedef struct _list_of_items { @@ -103,7 +109,12 @@ typedef struct _list_of_items { #define DEFAULTCMD "_DefaultCmD_" extern HASH_TABLE *prog_completes; + +extern char *pcomp_line; +extern int pcomp_ind; + extern int prog_completion_enabled; +extern int progcomp_alias; /* Not all of these are used yet. */ extern ITEMLIST it_aliases; diff --git a/po/LINGUAS b/po/LINGUAS index 9c17d2658..442297c7e 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,2 +1,2 @@ # Set of available languages. -en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW +en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW diff --git a/po/af.gmo b/po/af.gmo index 65138ec15..a91e97315 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index 54feb499c..58f51e803 100644 --- a/po/af.po +++ b/po/af.po @@ -6,130 +6,130 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2004-03-17 13:48+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -"Language: af\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 #, fuzzy msgid "bad array subscript" msgstr "Os/2 Biskaart Skikking" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 -#, fuzzy, c-format +#: arrayfunc.c:582 +#, c-format msgid "%s: invalid associative array key" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan nie %s skep nie" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 -#, fuzzy, c-format +#: builtins/alias.def:131 +#, c-format msgid "`%s': invalid alias name" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/bind.def:270 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: bevel nie gevind nie" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: leesalleen-funksie" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: bevel nie gevind nie" + +#: builtins/break.def:77 builtins/break.def:119 #, fuzzy msgid "loop count" msgstr "Afteken" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -140,172 +140,172 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 #, fuzzy msgid "too many arguments" msgstr "te veel parameters" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "boonste lêergids." -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 +#: builtins/common.c:96 #, fuzzy, c-format msgid "line %d: " msgstr "3d modus" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, fuzzy, c-format msgid "warning: " msgstr "besig om te skryf" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "%s: option `%s' requires an argument\n" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: bevel nie gevind nie" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:229 +#: builtins/common.c:223 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "Die datum is nie geldige!" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 #, fuzzy msgid "invalid number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, fuzzy, c-format msgid "%s: readonly variable" msgstr "Veranderlike boom" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 #, fuzzy msgid "argument" msgstr "argument verwag\n" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, fuzzy, c-format msgid "%s: no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:300 +#: builtins/common.c:294 #, fuzzy msgid "no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:310 +#: builtins/common.c:304 #, fuzzy, c-format msgid "%s: restricted" msgstr "Die bediener beëindig Die verbinding." -#: builtins/common.c:312 +#: builtins/common.c:306 #, fuzzy msgid "restricted" msgstr "" "\n" "Bevel beëindig\n" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, fuzzy, c-format msgid "write error: %s" msgstr "pypfout: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: dubbelsinnige herroetering" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -314,69 +314,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: leesalleen-funksie" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -410,69 +410,69 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: is 'n gids" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, fuzzy, c-format msgid "logout\n" msgstr "Afteken" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 #, fuzzy msgid "no command found" msgstr "%s: bevel nie gevind nie" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -487,39 +487,38 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option `%s' requires an argument\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "Bevelreël" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -531,20 +530,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: heelgetal-uitdrukking is verwag\n" @@ -552,96 +552,95 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n" #: builtins/inlib.def:71 #, fuzzy, c-format msgid "%s: inlib failed" -msgstr "%s: heelgetal-uitdrukking is verwag\n" +msgstr "Veranderlike boom" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Onbekende fout %d" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 #, fuzzy msgid "expression expected" msgstr "Bools uitdrukking verwag" #: builtins/mapfile.def:178 -#, fuzzy, c-format +#, c-format msgid "%s: not an indexed array" -msgstr "Veranderlike boom" +msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 -#, fuzzy, c-format +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format msgid "%s: invalid line count" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" -msgstr "%s: illegal option -- %c\n" +msgstr "Os/2 Biskaart Skikking" -#: builtins/mapfile.def:317 -#, fuzzy, c-format +#: builtins/mapfile.def:316 +#, c-format msgid "%s: invalid callback quantum" -msgstr "Die sein nommer wat was gevang het" +msgstr "" -#: builtins/mapfile.def:350 -#, fuzzy +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "Veranderlike boom" +msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 -#, fuzzy, c-format +#: builtins/printf.def:471 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -654,23 +653,22 @@ msgstr "boonste l #: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" -msgstr "%s: illegal option -- %c\n" +msgstr "%s: option `%s' requires an argument\n" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 #, fuzzy msgid "" msgstr "Nuutste gebruik word werksaam gids" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 -#, fuzzy +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "Stapel grootte verhoog" +msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -694,7 +692,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -719,7 +717,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -740,45 +738,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:729 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "pypfout: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:881 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:922 +#: builtins/set.def:915 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "Veranderlike boom" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: leesalleen-funksie" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: kan nie %s skep nie" @@ -788,20 +786,20 @@ msgstr "%s: kan nie %s skep nie" msgid "shift count" msgstr "Shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: bevel nie gevind nie" @@ -815,62 +813,62 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "Begin aanteken tolk" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: leesalleen-funksie" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%s: illegal option -- %c\n" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 #, fuzzy msgid "limit" msgstr "Filter beperk:" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan nie %s skep nie" @@ -890,216 +888,221 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, fuzzy, c-format msgid "last command: %s\n" msgstr "Bevelreël" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 #, fuzzy msgid "unknown command error" msgstr "Onbekende fout %d" -#: error.c:464 +#: error.c:463 #, fuzzy msgid "bad command type" msgstr "bevelnaam" -#: error.c:465 +#: error.c:464 #, fuzzy msgid "bad connector" msgstr "foutiewe verbinder`%d'" -#: error.c:466 +#: error.c:465 #, fuzzy msgid "bad jump" msgstr "Spring na:" -#: error.c:504 +#: error.c:503 #, fuzzy, c-format msgid "%s: unbound variable" msgstr "Veranderlike boom" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 #, fuzzy msgid "pipe error" msgstr "pypfout: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: bevel nie gevind nie" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: is 'n gids" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 #, fuzzy msgid "recursion stack underflow" msgstr "Stapel grootte verhoog" -#: expr.c:431 +#: expr.c:453 #, fuzzy msgid "syntax error in expression" msgstr "Sintaks fout in patroon" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Sintaks fout in patroon" + +#: expr.c:520 expr.c:886 #, fuzzy msgid "division by 0" msgstr "devisie by nul." -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:621 #, fuzzy msgid "`:' expected for conditional expression" msgstr "Soek die lêer vir 'n uitdrukking" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1030 #, fuzzy msgid "missing `)'" msgstr "Ontbrekende '>'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 #, fuzzy msgid "syntax error: operand expected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1484 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" "Hierdie is die fout boodskap van %1:\n" "%2" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "waarde te groot vir basis" -#: expr.c:1546 +#: expr.c:1611 #, fuzzy, c-format msgid "%s: expression error\n" -msgstr "%s: heelgetal-uitdrukking is verwag\n" +msgstr "Pypfout.\n" -#: general.c:68 +#: general.c:69 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "Kan nie die program uitvoer nie:" -#: input.c:102 subst.c:5858 -#, fuzzy, c-format +#: input.c:99 subst.c:5858 +#, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1108,197 +1111,200 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1635 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "E108: Geen veranderlike: \"%s\"" -#: jobs.c:1605 +#: jobs.c:1650 #, fuzzy, c-format msgid "Signal %d" msgstr "Sein kwaliteit:" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Klaar" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 #, fuzzy msgid "Stopped" msgstr "Op gehou" -#: jobs.c:1628 +#: jobs.c:1673 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Op gehou" -#: jobs.c:1632 +#: jobs.c:1677 #, fuzzy msgid "Running" msgstr "aktief" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Verlaat %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Onbekende status" -#: jobs.c:1741 +#: jobs.c:1786 #, fuzzy, c-format msgid "(core dumped) " msgstr "Kern Ontwikkelaar" -#: jobs.c:1760 +#: jobs.c:1805 #, fuzzy, c-format msgid " (wd: %s)" msgstr "Aktiveer nou dadelik" -#: jobs.c:1985 +#: jobs.c:2033 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "Fout in die skryf van %s" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3355 #, fuzzy, c-format msgid "%s: job has terminated" msgstr "Die bediener beëindig Die verbinding." -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, fuzzy, c-format msgid "%s: line %d: " msgstr "3d modus" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, fuzzy, c-format msgid " (core dumped)" msgstr "Kern Ontwikkelaar" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, fuzzy, c-format msgid "(wd now: %s)\n" msgstr "Aktiveer nou dadelik" -#: jobs.c:4041 +#: jobs.c:4185 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "geen taakbeheer in hierdie dop nie" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 -#, fuzzy +#: lib/malloc/malloc.c:323 msgid "unknown" -msgstr "(onbekend)" +msgstr "onbekend" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1340,22 +1346,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1375,153 +1381,153 @@ msgstr "Wanneer nuwe pos arriveer in" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:329 +#: make_cmd.c:317 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "Sintaks fout in patroon" -#: make_cmd.c:331 +#: make_cmd.c:319 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: make_cmd.c:332 +#: make_cmd.c:320 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "sintaksfout" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4590 #, fuzzy msgid "syntax error in conditional expression" msgstr "Sintaks fout in patroon" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4672 #, fuzzy msgid "expected `)'" msgstr "')' is verwag\n" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4750 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4583 +#: parse.y:4754 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4791 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4623 +#: parse.y:4794 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4627 +#: parse.y:4798 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6238 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "Sintaks fout in patroon" -#: parse.y:6024 +#: parse.y:6248 #, fuzzy msgid "syntax error: unexpected end of file" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "sintaksfout" -#: parse.y:6086 +#: parse.y:6310 #, fuzzy, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik Kaart na Los Tronk" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1531,163 +1537,167 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: dubbelsinnige herroetering" -#: redir.c:182 +#: redir.c:178 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "Jy het gespesifiseer 'n bestaande lêer" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "Pypfout.\n" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%s: illegal option -- %c\n" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" +msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: is 'n gids" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ek het nie 'n naam nie!" -#: shell.c:1930 +#: shell.c:1980 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "bedryfstelselkernweergawe" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1933 +#: shell.c:1983 #, fuzzy msgid "GNU long options:\n" msgstr "Gnu C Saamsteller Opsies" -#: shell.c:1937 +#: shell.c:1987 #, fuzzy msgid "Shell options:\n" msgstr "opneem opsies" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1953 +#: shell.c:2003 #, fuzzy, c-format msgid "\t-%s or -o option\n" msgstr "" "Gebruik so: %s LÊER \n" " of: %s OPSIE\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1768,7 +1778,9 @@ msgstr "w #: siglist.c:111 #, fuzzy msgid "Terminated" -msgstr "Gedruk: %s" +msgstr "" +"\n" +"Bevel beëindig\n" #: siglist.c:115 #, fuzzy @@ -1893,22 +1905,22 @@ msgstr "Sein kwaliteit:" msgid "Unknown Signal #%d" msgstr "Sein kwaliteit:" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "Woord Substitusie" -#: subst.c:5798 +#: subst.c:5796 #, fuzzy msgid "cannot make child for process substitution" msgstr "Woord Substitusie" @@ -1928,72 +1940,77 @@ msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "--Geen reëls in buffer--" -#: subst.c:6083 +#: subst.c:6121 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "Woord Substitusie" -#: subst.c:6127 +#: subst.c:6164 #, fuzzy msgid "cannot make child for command substitution" msgstr "Woord Substitusie" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, fuzzy, c-format -msgid "%s: bad substitution" -msgstr "Woord Substitusie" - -#: subst.c:6800 -#, fuzzy, c-format +#: subst.c:6737 subst.c:6755 subst.c:6903 +#, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: illegal option -- %c\n" +msgstr "" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "%s: illegal option -- %c\n" +msgstr "Veranderlike boom" + +#: subst.c:6962 +#, c-format +msgid "%s: parameter not set" +msgstr "" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, fuzzy, c-format msgid "%s: substring expression < 0" msgstr "ongeldige uitdrukking" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, fuzzy, c-format +msgid "%s: bad substitution" +msgstr "Woord Substitusie" + +#: subst.c:8948 #, fuzzy, c-format msgid "$%s: cannot assign in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "" @@ -2018,108 +2035,108 @@ msgstr "')' is verwag\n" msgid "`)' expected, found %s" msgstr "')' is verwag, maar %s gevind\n" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, fuzzy, c-format msgid "%s: unary operator expected" msgstr "%s: unitêre operator is verwag\n" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, fuzzy, c-format msgid "%s: binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: test.c:869 +#: test.c:873 #, fuzzy msgid "missing `]'" msgstr "Ontbrekende '>'" -#: trap.c:224 +#: trap.c:216 #, fuzzy msgid "invalid signal number" msgstr "Die sein nommer wat was gevang het" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" +msgstr "" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 -#, fuzzy, c-format +#: variables.c:5862 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: kan nie %s skep nie" +msgstr "" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" @@ -2147,22 +2164,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: kan nie %s skep nie" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: kan nie %s skep nie" @@ -2354,7 +2371,7 @@ msgstr "Bediener of domein naam:" #: builtins.c:150 #, fuzzy msgid "shift [n]" -msgstr "Verlaat" +msgstr "Shift" #: builtins.c:152 #, fuzzy @@ -2402,8 +2419,8 @@ msgstr "Belmetode" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "Wag:" +msgid "wait [-fn] [id ...]" +msgstr "Konfigureer Eggo" #: builtins.c:181 #, fuzzy @@ -2441,9 +2458,8 @@ msgid "while COMMANDS; do COMMANDS; done" msgstr "" #: builtins.c:198 -#, fuzzy msgid "until COMMANDS; do COMMANDS; done" -msgstr "Bediener of domein naam:" +msgstr "" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" @@ -2516,7 +2532,7 @@ msgstr "" #: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "Tipe die naam van die %1 speler." +msgstr "Volle Naam:" #: builtins.c:242 msgid "" @@ -2526,8 +2542,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2779,11 +2795,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3084,7 +3100,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3100,7 +3116,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3125,7 +3142,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3149,7 +3166,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3166,7 +3183,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3189,7 +3206,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3234,7 +3251,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3255,7 +3272,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3286,7 +3303,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3298,7 +3315,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3384,7 +3401,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3406,7 +3423,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3425,7 +3442,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3446,7 +3463,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3457,7 +3474,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3471,7 +3488,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3485,7 +3502,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3568,7 +3585,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3576,7 +3593,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3588,7 +3605,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3632,7 +3649,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3662,7 +3679,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3711,7 +3728,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3729,7 +3746,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3737,19 +3754,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3764,7 +3783,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3777,7 +3796,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3794,7 +3813,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3814,7 +3833,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3830,7 +3849,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3841,7 +3860,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3862,7 +3881,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3873,7 +3892,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3884,7 +3903,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3897,7 +3916,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3911,7 +3930,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3922,7 +3941,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3936,7 +3955,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3947,7 +3966,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3975,7 +3994,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4029,7 +4048,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -4060,7 +4079,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4087,7 +4106,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4116,14 +4135,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4137,7 +4155,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4176,7 +4194,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4203,7 +4221,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4216,7 +4234,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4247,7 +4265,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4289,36 +4307,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#~ msgid ":" -#~ msgstr ":" - -#, fuzzy -#~ msgid "times" -#~ msgstr "Herhaal %1 times " - -#, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "Wag:" - -#, fuzzy -#~ msgid " new current working directory." -#~ msgstr "Nuutste gebruik word werksaam gids" - -#, fuzzy -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Verkeerde verklaring tipe" - -#, fuzzy -#~ msgid "Logout of a login shell." -#~ msgstr "Begin aanteken tolk" - #~ msgid "Missing `}'" #~ msgstr "Ontbrekende `}'" @@ -4378,6 +4373,10 @@ msgstr "" #~ msgid "You have entered %d (%d) items. The distribution is:\n" #~ msgstr "Die wagwoord frase jy ingevoerde is ongeldige." +#, fuzzy +#~ msgid "" +#~ msgstr "(onbekend)" + #, fuzzy #~ msgid "%s: bg background job?" #~ msgstr "Druktaak gestuur." @@ -4398,10 +4397,6 @@ msgstr "" #~ msgid "`-c' requires an argument" #~ msgstr "%s: option `%s' requires an argument\n" -#, fuzzy -#~ msgid "%s: bad array subscript" -#~ msgstr "Os/2 Biskaart Skikking" - #, fuzzy #~ msgid "reading" #~ msgstr "besig om te lees" @@ -4454,10 +4449,6 @@ msgstr "" #~ msgid "Unknown directive `%s'" #~ msgstr "Onbekende direktief" -#, fuzzy -#~ msgid "%s requires an argument" -#~ msgstr "%s: option `%s' requires an argument\n" - #, fuzzy #~ msgid "%s found before $END" #~ msgstr "Nee einde was gevind." @@ -4482,6 +4473,13 @@ msgstr "" #~ msgid "mkbuiltins: Out of virtual memory!\n" #~ msgstr "GenericName=Virtuele Geheue Statistieke" +#~ msgid ":" +#~ msgstr ":" + +#, fuzzy +#~ msgid "times" +#~ msgstr "Herhaal %1 times " + #, fuzzy #~ msgid "%[DIGITS | WORD] [&]" #~ msgstr "Woord oorvloei" @@ -4522,6 +4520,10 @@ msgstr "" #~ msgid "name only." #~ msgstr "Naam slegs" +#, fuzzy +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Verkeerde verklaring tipe" + #, fuzzy #~ msgid "\t\\a\talert (bell)" #~ msgstr "stelsel klok" @@ -4558,6 +4560,10 @@ msgstr "" #~ msgid "with the -E option." #~ msgstr "%s: illegal option -- %c\n" +#, fuzzy +#~ msgid "printed." +#~ msgstr "Gedruk: %s" + #, fuzzy #~ msgid "is set." #~ msgstr "Nie stel" diff --git a/po/bash.pot b/po/bash.pot index e2d353f5e..c6953b85b 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,119 +17,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "" -#: builtins/bind.def:270 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format -msgid "`%s': cannot unbind" +msgid "`%s': unknown function name" msgstr "" -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:312 #, c-format -msgid "`%s': unknown function name" +msgid "%s is not bound to any keys.\n" msgstr "" #: builtins/bind.def:316 #, c-format -msgid "%s is not bound to any keys.\n" +msgid "%s can be invoked via " msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:353 builtins/bind.def:368 #, c-format -msgid "%s can be invoked via " +msgid "`%s': cannot unbind" msgstr "" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -140,162 +140,162 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "" -#: builtins/cd.def:336 +#: builtins/cd.def:334 msgid "null directory" msgstr "" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -304,69 +304,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -400,68 +400,68 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -476,39 +476,38 @@ msgstr "" msgid "%s: option requires an argument -- %c\n" msgstr "" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -520,20 +519,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -547,16 +547,16 @@ msgstr "" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "" @@ -565,69 +565,69 @@ msgstr "" msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -641,19 +641,19 @@ msgstr "" msgid "%s: invalid argument" msgstr "" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -677,7 +677,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -702,7 +702,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -723,45 +723,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "" @@ -770,20 +770,20 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "" @@ -796,61 +796,61 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "" @@ -869,202 +869,206 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:495 expr.c:858 +#: expr.c:506 +msgid "syntax error in variable assignment" +msgstr "" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1073,192 +1077,196 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1300,22 +1308,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1333,147 +1341,147 @@ msgstr "" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1483,158 +1491,162 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1808,21 +1820,21 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "" @@ -1841,69 +1853,74 @@ msgstr "" msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 +#: subst.c:5990 msgid "command substitution: ignored null byte in input" msgstr "" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" +msgid "%s: invalid indirect expansion" msgstr "" -#: subst.c:6800 +#: subst.c:6771 subst.c:6910 #, c-format -msgid "%s: invalid indirect expansion" +msgid "%s: invalid variable name" msgstr "" -#: subst.c:6807 +#: subst.c:6962 #, c-format -msgid "%s: invalid variable name" +msgid "%s: parameter not set" msgstr "" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "" @@ -1926,106 +1943,106 @@ msgstr "" msgid "`)' expected, found %s" msgstr "" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" @@ -2053,22 +2070,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "" @@ -2270,7 +2287,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:177 -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "" #: builtins.c:181 @@ -2384,8 +2401,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2637,11 +2654,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2942,7 +2959,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -2958,7 +2975,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -2983,7 +3001,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3007,7 +3025,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3024,7 +3042,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3047,7 +3065,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3092,7 +3110,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3113,7 +3131,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3144,7 +3162,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3156,7 +3174,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3242,7 +3260,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3264,7 +3282,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3283,7 +3301,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3304,7 +3322,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3315,7 +3333,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3329,7 +3347,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3343,7 +3361,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3426,7 +3444,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3434,7 +3452,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3446,7 +3464,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3490,7 +3508,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3520,7 +3538,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3569,7 +3587,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3587,7 +3605,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3595,19 +3613,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3622,7 +3642,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3635,7 +3655,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3652,7 +3672,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3672,7 +3692,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3688,7 +3708,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3699,7 +3719,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3720,7 +3740,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3731,7 +3751,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3742,7 +3762,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3755,7 +3775,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3769,7 +3789,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3780,7 +3800,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3794,7 +3814,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3805,7 +3825,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3833,7 +3853,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3887,7 +3907,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -3918,7 +3938,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -3945,7 +3965,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -3974,14 +3994,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -3995,7 +4014,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4034,7 +4053,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4061,7 +4080,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4074,7 +4093,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4105,7 +4124,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4147,7 +4166,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bg.gmo b/po/bg.gmo index d30439946..a92cd31d6 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index eb9236cd9..db2e8bf31 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,141 +1,142 @@ # Bulgarian translation of bash po-file. -# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015. +# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015, 2016. # msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-29 08:17+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-24 10:03+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "грешен индекс на масив" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: изтриване на атрибута за указател от променливата" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: масивът не може да бъде преобразуван към речник" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: грешно име на ключ в речник" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не може да се присвоява на нецифров индекс" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при присвояване към речник трябва да се използва индекс" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не може да се създаде: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "изпълнение на команда на Юникс от bash: не може да се открие подредбата на\n" "функциите на клавишите за командата" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: първият непразен знак не е „\"“" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "в %2$s липсва затварящ знак „%1$c“" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: разделителят „:“ липсва" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за %d " "елемента" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" "заместване на изразите с фигурни скоби: не може да се задели памет за „%s“" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: грешно име на синоним" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редактирането на командния ред не е включено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: грешно име на подредбата на функциите на клавишите" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не може да се прочете: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: не може да се премахне присвояване" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: име на непозната функция" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не е зададена на никой клавиш.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s може да се извика чрез " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не може да се премахне присвояване" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "брой цикли" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "валидно само за циклите с „for“, „while“ и „until“" @@ -149,163 +150,162 @@ msgstr "" " \n" " Без ИЗРАЗ връща " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Променливата „HOME“ не е зададена" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "прекалено много аргументи" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "няма друга директория" +msgstr "нулева директория" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Променливата „OLDPWD“ не е зададена" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "ред %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: употреба: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: опцията изисква аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: изисква се числов аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не е открит" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: грешна опция" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: грешно име на опция" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: грешен идентификатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "грешно осмично число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "грешно шестнайсетично число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "грешно число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: грешно указване на сигнал" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: грешен идентификатор на процес или задача" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: променлива с права само за четене" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s е извън допустимия диапазон" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргументът" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s е извън допустимия диапазон" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: няма такава задача" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: няма управление на задачите" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "няма управление на задачите" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограничена обвивка" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограничена обвивка" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не е команда вградена в обвивката" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "грешка при запис: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка при задаване на атрибутите на терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка при получаване на атрибутите на терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка при получаване на текущата директория: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нееднозначно указана задача" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "помощта не е включена в тази версия" @@ -314,69 +314,69 @@ msgstr "помощта не е включена в тази версия" msgid "%s: invalid action name" msgstr "%s: грешно име на действие" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: не е указано дописване" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: опцията „-F“ може да не работи според очакванията ви" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: опцията „-C“ може да не работи според очакванията ви" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "в момента не се изпълнява функция за дописване" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може да се използва само във функция" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променливата-указател не може да е масив" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: променливата-указател не може да сочи към себе си" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: цикъл в променливите-указатели" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: неправилно име за променлива-указател" +msgstr "„%s“: неправилно име за променлива-указател" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "„-f“ не може да се използва за създаването на функции" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: функция с права само за четене" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: съставното присвояване на масив чрез цитат е остаряло" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: променливите за масиви не могат да се унищожават така" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: речник не може да се преобразува в масив" @@ -410,68 +410,68 @@ msgstr "%s: не е зареден динамично" msgid "%s: cannot delete: %s" msgstr "%s: не може да се изтрие: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: е директория" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: не е обикновен файл" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файлът е прекалено голям" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: двоичният файл не може да бъде изпълнен" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не може да се изпълни: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "изход\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "това не е входна обвивка: използвайте „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Има спрени задачи.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Има изпълнявани задачи.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "не е открита команда" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "указване на историята" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не може да се отвори временен файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текуща" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "задача %d е стартирана без управление на задачите" @@ -486,28 +486,27 @@ msgstr "%s: непозволена опция — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: опцията изисква аргумент — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хеширането е изключено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблицата с хешове е празна\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "съвпад.\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команди на обвивката, които напасват на ключовата дума „" msgstr[1] "Команди на обвивката, които напасват на ключовите думи „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +514,12 @@ msgstr "" "няма теми в помощта, които да отговарят на „%s“. Опитайте с\n" "„help help“, „man -k %s“ или „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не може да се отвори: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +540,21 @@ msgstr "" "Знакът звездичка „*“ до името на команда означава, че тя е изключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "не може да се ползва едновременно повече от една от опциите „-anrw“" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "позиция в историята" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: грешен аргумент" +msgstr "%s: грешна дата с време" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: неуспешно заместване чрез историята" @@ -568,16 +568,16 @@ msgstr "%s: неуспешно извикване на inlib" msgid "no other options allowed with `-x'" msgstr "не е позволена друга опция с „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументите трябва да са идентификатори на процеси или задачи" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Неизвестна грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "очаква се израз" @@ -586,69 +586,69 @@ msgstr "очаква се израз" msgid "%s: not an indexed array" msgstr "%s: не е масив" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: грешно указване на файловия дескриптор" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: грешен файлов дескриптор: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: грешен номер на ред" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: грешен начален индекс за масив" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: грешно количество редове за обработка" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "празно име на променлива за масив" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "изисква се поддръжка на променливи за масиви" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s“: липсва форматиращ знак" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: грешен формат на времето" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: грешен форматиращ знак" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "неуспешен анализ на форма̀та: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "липсва шестнадесетична цифра за \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "липсва цифра за Уникод за \\%c" @@ -662,19 +662,19 @@ msgstr "няма друга директория" msgid "%s: invalid argument" msgstr "%s: грешен аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "«няма текуща директория»" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стекът с директории е празен" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "индекс за стека с директории" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -718,7 +718,7 @@ msgstr "" "„dirs“,\n" " когато е стартирана без опции. Брои се от 0." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -770,7 +770,7 @@ msgstr "" " \n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -811,47 +811,47 @@ msgstr "" "\n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "грешка при четене: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "„return“ е възможен само от функция или изпълнен в текущата обвивка скрипт" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" "не може едновременно да се премахват задаванията на функция и променлива" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: не може да се премахне" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не може да се премахне: %s е само за четене" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: не е променлива за масив" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: не е функция" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не може да се изнесе" @@ -860,21 +860,21 @@ msgstr "%s: не може да се изнесе" msgid "shift count" msgstr "брой на преместванията" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "не може едновременно да се задават и да се премахват опции на обвивката" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: грешно име на опция на обвивката" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "изисква се аргумент име на файл" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файлът не е открит" @@ -887,61 +887,61 @@ msgstr "не може да бъде временно спряна" msgid "cannot suspend a login shell" msgstr "входната обвивка не може да бъде временно спряна" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s е синоним на „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s е ключова дума на обвивката\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s е функция\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s е специална, вградена команда в обвивката\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s е вградена команда в обвивката\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s е %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s е хеширан (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: грешен аргумент за ограничение" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: грешна команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ограничението не може да бъде получено: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ограничението не може да бъде променено: %s" @@ -960,206 +960,211 @@ msgstr "„%c“: неправилен оператор за описателе msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неправилен знак за описателен режим" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ред " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последна команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Преустановяване…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ИНФОРМАЦИЯ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "неизвестна грешка в команда" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "грешен вид команда" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "грешна връзка" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "грешен преход" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: променлива без стойност" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "\aвремето за изчакване на вход изтече: следва автоматично излизане от " "системата\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "стандартният вход не може да бъде пренасочен от „/dev/null“: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: копроцесът [%d:%s] все още съществува" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "грешка в програмен канал" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: превишено е максималното ниво на влагане на „eval“ (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на код (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: превишено е максималното ниво на влагане на функции (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: ограничение: в имената на командите не може да присъства знакът „/“" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: командата не е открита" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош интерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: двоичният файл не може да бъде изпълнен: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“ е вградена команда в обвивката" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "файловият дескриптор %d не може да се дублира като дескриптор %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "максималният брой нива за рекурсия в израз бяха преминати" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "отрицателно препълване на стека за рекурсии" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "синтактична грешка в израз" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "опит за присвояване на стойност на нещо, което не е променлива" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтактична грешка в израз" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "деление на 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "програмна грешка: неправилна лексема за присвояване на израз" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "за условен израз се изисква „:“" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "степента е по-малка от 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "очаква се идентификатор след предварително увеличаване или намаляване" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "липсва „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "синтактична грешка: очаква се оператор" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "синтактична грешка: грешен аритметичен оператор" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (грешната лексема е „%s“)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "грешна аритметична основа на бройна система" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "стойността е прекалено голяма за основата" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка в израза\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: няма достъп до родителските директории" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не може да се изчисти режимът без забавяне на файловия дескриптор %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не може да се задели нов файлов дескриптор за вход на bash от дескриптор %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1172,158 +1177,163 @@ msgstr "" "стартиране на програмен канал: не може да се комуникира с водача на канала\n" "(pgrp pipe)" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "стартираният процес %d е в изпълняваната задача %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "изтриване на спряната задача %d в групата процеси %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "добавяне на процес: процесът %5ld (%s) е в програмния канал" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "добавяне на процес: процесът %5ld (%s) е отбелязан като още жив" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" "описателен идентификатор на процес: %ld: няма такъв идентификатор на процес" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Завършен" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Спрян" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Спрян (%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Изпълняван" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Завършен (%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Изход %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Непознато състояние" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(паметта е разтоварена)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дъщерният процес смени групата при изпълнение (от %ld на %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "изчакване: процесът с идентификатор %ld не е дъщерен на тази обвивка" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "изчакване: липсват данни за процес с идентификатор %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "изчакване на задача: задачата %d е спряна" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: задачата е приключила" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: задача %d вече е във фонов режим" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "изчакване на дъщерен процес: включване на незабавното излизане от функцията\n" "чрез WNOHANG, за да се избегне недефиниран блок" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(работната директория е: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "инициализация на контрола на задачите: неуспешно изпълнение на getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "инициализация на контрола на задачите: дисциплина на линията" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "инициализация на контрола на задачите: дисциплина на линията" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "" "инициализация на контрола на задачите: задаване на група при изпълнение " "(setpgid)" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "групата на процесите на терминала не може да бъде зададена (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "в тази обвивка няма управление на задачите" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "заделяне на памет: грешно предположение: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1332,46 +1342,46 @@ msgstr "" "\r\n" "заделяне на памет: %s:%d: предположението е отпечатано\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "непознат" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" "заделяне на памет: блок в списъка със свободни блокове е зает или неподходящ" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "" "изчистване на памет: извикано е с блоков аргумент, който вече е изчистен" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "изчистване на памет: извикано е с незаделен блоков аргумент" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "изчистване на памет: открито е отрицателно препълване с mh_nbytes извън\n" "допустимия диапазон" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" "изчистване на памет: късовете на началната и крайната области се различават" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "презаделяне: извикано е с аргумент с незаделен блок" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "презаделяне: открито е отрицателно препълване с mh_nbytes извън допустимия\n" "диапазон" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "презаделяне: късовете на началната и крайната области се различават" @@ -1414,22 +1424,22 @@ msgstr "%s: неправилно указан мрежов път" msgid "network operations not supported" msgstr "не се поддържат мрежови операции" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: локалът не може да бъде сменен (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: локалът не може да бъде сменен (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: локалът не може да бъде сменен (%s): %s" @@ -1447,154 +1457,156 @@ msgstr "Имате нова поща в $_" msgid "The mail in %s has been read\n" msgstr "Пощата в %s вече е прочетена\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтактична грешка: изисква се аритметичен израз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтактична грешка: неочакван знак „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтактична грешка: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "вътрешен документ с „<<“: неправилен вид инструкция %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "вътрешният документ на ред %d е отделен със знак за нов ред (а трябва да е „%" "s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "пренасочване: инструкцията за пренасочване „%d“ е извън допустимия диапазон" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е " +"отрязан" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "превишен е маскималният брой възможни вътрешни документи" +msgstr "превишен е максималният брой възможни вътрешни документи" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "неочакван знак за край на файл „EOF“, а се очакваше съответстващ знак „%c“" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "неочакван знак за край на файл „EOF“, а се очакваше „]]“" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтактична грешка в условен израз: неочаквана лексема „%s“" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "синтактична грешка в условен израз" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочаквана лексема „%s“, а се очакваше знакът „)“" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "очакваше се „)“" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочакван аргумент „%s“ за унарен условен оператор" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "неочакван аргумент за унарен условен оператор" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочаквана лексема „%s“, очакваше се бинарен условен оператор" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "очакваше се бинарен условен оператор" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочакван аргумент „%s“ за бинарен условен оператор" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "неочакван аргумент за бинарен условен оператор" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочаквана лексема „%c“ в условна команда" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочаквана лексема „%s“ в условна команда" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочаквана лексема %d в условна команда" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтактична грешка в близост до неочакваната лексема „%s“" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "синтактична грешка в близост до „%s“" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "синтактична грешка: неочакван край на файл" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "синтактична грешка" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Използвайте „%s“, за да излезете от обвивката.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "неочакван знак за край на файл „EOF“, очакваше се знакът „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "дописване: функцията „%s“ не е открита" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: възможно зацикляне на повторните опити" #: pcomplib.c:182 #, c-format @@ -1602,114 +1614,118 @@ msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" "вмъкване на завършване на команда: %s указване на команда, което е NULL" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "команда за печат: лош конектор „%d“" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: грешен файлов дескриптор" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: указател към файл – NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "отпечатване: „%c“: неправилен форматиращ знак" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "файловият дескриптор е извън допустимия диапазон" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: двусмислено пренасочване" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не може да се презапише съществуващ файл" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: поради ограничение изходът не може да се пренасочи" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не може да се създаде временен файл за вътрешен документ: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: на променлива не може да се присвои файлов дескриптор" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" "„/dev/(tcp|udp)/host/port“ не се поддържат, ако няма поддръжка на мрежа" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "грешка при пренасочване: файловият дескриптор не може да бъде дублиран" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не е открита директорията „/tmp“. Създайте я!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ трябва да е директория" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неправилна опция" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" "идентификаторът на потребител на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на потребител на процеса е %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" "идентификаторът на група на процеса не може да се зададе да е %d,\n" "ефективният идентификатор на група на процеса е %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "режимът на изчистване на грешки е недостъпен, защото е изключен" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: е директория" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Не може да се получи името на текущия потребител!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1718,53 +1734,53 @@ msgstr "" "Употреба: %s [дълга опция на GNU] [опция]…\n" " %s [дълга опция на GNU] [опция] файл-скрипт…\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Дълги опции на GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Опции на обвивката:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" " -ilrsD или -c команда, или -O къса_опция (само при стартиране)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr " -%s или -o опция\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "За повече информация за опциите на обвивката въведете „%s -c \"help set\"“.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "За повече информация за вградените в обвивката команди въведете „%s -c " "help“.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Интернет страница на bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Помощ за софтуера GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "маска за обработката на сигнали: %d: грешна операция" @@ -1938,21 +1954,21 @@ msgstr "Непознат сигнал #" msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лошо заместване: липсва затварящ знак „%s“ в %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: на член от масив не може да се присвои списък" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "не може да се създаде програмен канал за заместване на процеси" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "не може да се създаде дъщерен процес за заместване на процеси" @@ -1973,59 +1989,63 @@ msgstr "" "именуваният програмен канал %s не може да се\n" "дублира като файловия дескриптор %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "лошо заместване: липсва затварящ знак „`“ в %s" +msgstr "заместване на команди: знакът „null“ във входа е прескочен" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "не може да се създаде програмен канал за заместване на команди" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "не може да се създаде дъщерен процес за заместване на команди" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "заместване на команди: каналът не може да се дублира като fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неправилно име за променлива-указател" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: лошо заместване" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: грешно непряко заместване" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "„%s“: грешно име на променлива" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: аргументът е „null“ или не е зададен" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: аргументът е „null“ или не е зададен" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: изразът от подниза е < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лошо заместване" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не може да се задава по този начин" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2033,12 +2053,12 @@ msgstr "" "бъдещите версии на обвивката ще използват изчисляване като аритметично\n" "заместване" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лошо заместване: липсва затварящ знак „`“ в %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "няма съвпадение: %s" @@ -2061,32 +2081,32 @@ msgstr "очаква се „)“" msgid "`)' expected, found %s" msgstr "очаква се „)“, а е получено %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: очаква се унарен оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: очаква се бинарен оператор" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "липсва „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неправилен номер на сигнал" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" "стартиране на предстоящите прихващания: неправилна стойност в\n" "trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2094,97 +2114,96 @@ msgstr "" "стартиране на предстоящите прихващания: обработката на сигнали е SIG_DFL.\n" "%d (%s) е преизпратен на текущата обвивка" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "обработка на прихващания: неправилен сигнал %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка при внасянето на дефиницията на функция за „%s“" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "нивото на обвивката (%d) е прекалено голямо. Задава се да е 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" "създаване на локална променлива: липсва контекст на функция в текущата " "област\n" "на видимост" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: на тази променлива не може да се присвои стойност" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: неправилно име за променлива-указател" +msgstr "%s: присвояване на число на променлива-указател" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" "всички локални променливи: липсва контекст на функция в текущата област на\n" "видимост" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s: аргументът за низа за изнасяне не трябва да е „null“" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неправилен знак на позиция %d в низа за изнасяне за %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "липсва „=“ в низа за изнасяне за %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "изваждане на контекст на променливи: в началото на структурата за променливи " "на\n" "обвивката (shell_variables) е нещо, което не е контекст на функция" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" "изваждане на контекст на променливи: липсва контекст за глобални променливи\n" "(global_variables)" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "изваждане на област: в началото на структурата за променливи на обвивката\n" "(shell_variables) е нещо, което не е временна област в обкръжението" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s не може да се отвори като ФАЙЛ" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: грешен файлов дескриптор за файла за трасиране" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: е извън допустимия диапазон" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Авторски права (C) 2015 Free Software Foundation, Inc." +msgstr "Авторски права (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2207,22 +2226,22 @@ msgstr "Това е свободен софтуер. Можете да го пр msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Няма НИКАКВИ ГАРАНЦИИ до степента позволена от закона." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не могат да се заделят %lu байта (заделени са %lu байта)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не могат да се заделят %lu байта" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не могат да се заделят %lu байта (заделени са %lu байта)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могат да се заделят %lu байта" @@ -2351,20 +2370,18 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [ЗАДАЧА…] или jobs -x КОМАНДА [АРГУМЕНТИ]" +msgstr "jobs [-lnprs] [ИД_ЗАДАЧА…] или jobs -x КОМАНДА [АРГУМЕНТИ]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [ЗАДАЧА…]" +msgstr "disown [-h] [-ar] [ИД_ЗАДАЧА… | ИД_ПРОЦЕС…]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИДЕНТИФИКАТОР_НА_ПРОЦЕС\n" -" | ИДЕНТИФИКАТОР_НА_ЗАДАЧА…\n" +"kill [-s СИГНАЛ | -n НОМЕР_НА_СИГНАЛ | -СИГНАЛ] ИД_ПРОЦЕС | ИД_ЗАДАЧА…\n" "или\n" "kill -l [СИГНАЛ]" @@ -2442,7 +2459,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [МАСКА]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ИД…]" #: builtins.c:181 @@ -2565,9 +2583,10 @@ msgstr "" " [-u ФАЙЛ_ДЕСКР] [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n БРОЙ] [-O НАЧАЛО] [-s БРОЙ] [-t] [-u ФАЙЛ_ДЕСКР]\n" " [-C ФУНКЦИЯ] [-c КВАНТ] [МАСИВ]" @@ -3008,6 +3027,7 @@ msgstr "" " Връща изходния код на КОМАНДАта или грешка, ако такава не е открита." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3026,11 +3046,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3095,7 +3115,6 @@ msgstr "" " на стойност на променлива." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3103,7 +3122,7 @@ msgid "" msgstr "" "Задаване на стойност и атрибути на променливи.\n" " \n" -" Остаряло. Виж „help declare“." +" Синоним на „declare“. Виж „help declare“." #: builtins.c:538 msgid "" @@ -3623,6 +3642,7 @@ msgstr "" " 0, освен ако ИМЕто не бъде открито или е дадена неправилна опция." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3637,7 +3657,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3676,7 +3696,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3712,7 +3733,9 @@ msgstr "" " -d ПОЗИЦИЯ\n" " изтрива елемента в историята намиращ се посочената ПОЗИЦИЯ.\n" " -a добавя историята от текущата сесия към файла с историята.\n" -" -n прочитане на непрочетените редове от файла с историята.\n" +" -n прочитане на непрочетените редове от файла с историята и добавяне " +"към\n" +" текущата история.\n" " -r прочитане на файла с историята и добавяне на съдържанието към " "текущата\n" " история.\n" @@ -3739,7 +3762,7 @@ msgstr "" " Изходен код:\n" " 0. Ако възникне грешка или е подадена неправилна опция връща грешка." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3786,7 +3809,7 @@ msgstr "" "се\n" " ползва „-x“, връща изходното състояние на КОМАНДАта." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3817,8 +3840,7 @@ msgstr "" " Изходен код:\n" " 0, освен когато е дадена неправилна опция или несъществуваща ЗАДАЧА." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3855,6 +3877,7 @@ msgstr "" " аргументи, те се интерпретират като номера на сигналите чиито " "имена\n" " да се изброят.\n" +" -L синоним на „-l“\n" "\n" " „kill“ е команда вградена в обвивката поради две причини: позволява да " "се\n" @@ -3867,7 +3890,7 @@ msgstr "" " Изходен код:\n" " 0. Ако възникне грешка или е подадена неправилна опция, връща грешка." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3955,7 +3978,8 @@ msgstr "" " Ако последният АРГУМЕНТ се изчислява като 0, „let“ връща 1. В противен\n" " случай — връща 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3976,7 +4000,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4067,7 +4091,7 @@ msgstr "" " грешка при задаване на стойност на променлива или е зададен неправилен\n" " файлов дескриптор като аргумент на -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -4090,8 +4114,7 @@ msgstr "" "функция\n" " или скрипт." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4256,8 +4279,9 @@ msgstr "" " -P Да не се следват символните връзки при изпълнението на команди " "като\n" " „cd“, които променят текущата директория.\n" -" -T Прихващането за „DEBUG“ да се наследява от функциите на " -"обвивката.\n" +" -T Прихващането за „DEBUG“ и „RETURN“ да се наследява от функциите " +"на\n" +" обвивката.\n" " -- Оставащите аргументи да се тълкуват като позиционни. Ако няма " "повече\n" " аргументи, се изтриват съответните позиционни.\n" @@ -4279,7 +4303,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не е зададена неправилна опция." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4321,7 +4345,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е само за\n" " четене." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4358,7 +4382,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е " "неправилно." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4400,7 +4424,7 @@ msgstr "" " 0, освен ако е зададена неправилна опция или някое от ИМЕната е " "неправилно." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4420,7 +4444,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако БРОят е отрицателно или по-голямо от стойността „$#“." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4447,7 +4471,7 @@ msgstr "" "не\n" " може да бъде открит, изходът е грешка." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4473,7 +4497,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникне грешка или управлението на задачи е изключено." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4643,7 +4667,7 @@ msgstr "" " 0, ако ИЗРАЗът е верен. Грешка, когато ИЗРАЗът е неверен или е даден\n" " неправилен аргумент." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4658,7 +4682,7 @@ msgstr "" "квадратна\n" " скоба „[“." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4678,7 +4702,7 @@ msgstr "" " Изходен код:\n" " Винаги 0." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4766,7 +4790,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е зададен неправилен сигнал или опция." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4827,7 +4851,7 @@ msgstr "" " 0, ако всички подадени ИМЕна са открити, неуспех, ако някое от тях " "липсва." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4928,7 +4952,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако не възникни грешка или е дадена неправилна опция." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4964,7 +4988,8 @@ msgstr "" " Изходен код:\n" " 0, освен ако МАСКАта или някоя от зададените опции са неправилни." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4972,13 +4997,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -5001,7 +5028,7 @@ msgstr "" " Връща изходния код на последната задача или процес. Ако е зададена\n" " неправилна опция, връща грешка." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -5028,7 +5055,7 @@ msgstr "" " Изходния код на процеса с последния идентификатор. Грешка, ако е даден\n" " неправилен идентификатор или е дадена неправилна опция." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5053,7 +5080,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -5083,7 +5110,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5125,7 +5152,7 @@ msgstr "" " Изходен код:\n" " Връща изходния код на последно изпълнената команда." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5155,7 +5182,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на ПРОГРАМНия_КАНАЛ." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5174,7 +5201,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5215,7 +5242,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5233,7 +5260,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5251,8 +5278,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5274,9 +5300,9 @@ msgstr "" " дадено ИМЕ на променлива, стандартно се ползва „COPROC“.\n" " \n" " Изходен код:\n" -" Изходния код на КОМАНДАта." +" Изходният код е 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5302,7 +5328,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако ИМЕто не е само за четене." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5321,7 +5347,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този на последно изпълнената команда." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5345,7 +5371,7 @@ msgstr "" " Изходен код:\n" " Изходният код е този възобновената задача." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5363,7 +5389,7 @@ msgstr "" " Изходен код:\n" " 1, ако резултатът на ИЗРАЗа е 0. В противен случай — 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5419,7 +5445,7 @@ msgstr "" " Изходен код:\n" " 0 или едно според стойността на ИЗРАЗа." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5545,7 +5571,7 @@ msgstr "" "кои\n" " команди да не се запазват в историята\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5610,7 +5636,7 @@ msgstr "" "към\n" " съответната директория." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5664,7 +5690,7 @@ msgstr "" "към\n" " съответната директория." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5718,14 +5744,14 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5759,7 +5785,7 @@ msgstr "" "изключена\n" " ОПЦИЯ." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5833,7 +5859,7 @@ msgstr "" " 0, освен ако не е дадена неправилна опция или възникне грешка при\n" " извеждането на резултата или при присвояването на стойността." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5887,7 +5913,7 @@ msgstr "" " Изходен код:\n" " 0, освен когато е дадена неправилна опция или възникне грешка." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5908,7 +5934,7 @@ msgstr "" " Изходен код:\n" " 0, освен ако е дадена неправилна опция или възникне грешка." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5969,7 +5995,7 @@ msgstr "" "ИМЕто\n" " за автоматично дописване." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -6053,7 +6079,7 @@ msgstr "" "променлива\n" " само за четене или не е индексиран масив." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -6062,18 +6088,3 @@ msgstr "" "Прочитане на редове от файл и поставяне в променлива – масив.\n" " \n" " Синоним на „mapfile“." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Авторски права (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/ca.gmo b/po/ca.gmo index bae5d3f4d..e6c1eaa19 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 14f6aa08d..65c107c32 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,139 +1,140 @@ # Catalan messages for GNU bash. -# Copyright (C) 2002, 2003, 2010, 2014, 2015 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Montxo Vicente i Sempere , 2003 (traducció), 2010 (revisions). # Jordi Mas i Hernàndez , 2004 (correccions). -# Ernest Adrogué Calveras , 2014, 2015 (nova traducció). +# Ernest Adrogué Calveras , 2014, 2015, 2017. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-18 13:33+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-01-10 20:11+0100\n" "Last-Translator: Ernest Adrogué Calveras \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subíndex erroni" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: s'elimina l'atribut «nameref»" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: no es pot convertir el vector indexat en associatiu" +msgstr "%s: no és possible convertir un vector indexat en associatiu" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: clau incorrecta de vector associatiu" +msgstr "%s: clau de vector associatiu no vàlida" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: no és possible assignar a un índex no-numèric" +msgstr "%s: no es pot assignar a un índex no-numèric" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no es pot crear: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: el primer caràcter no-blanc no és `\"'" +msgstr "%s: el primer caràcter no-blanc no és «\"»" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" -msgstr "falta un caràcter `%c' a %s" +msgstr "falta un caràcter de tancament «%c» a %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" -msgstr "%s: falten dos punts `:' de separació" +msgstr "%s: falta un caràcter «:» de separació" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansió de claus: no es pot assignar memòria per a %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "expansió de claus: ha fallat l'assignació de memòria per a `%s'" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" -msgstr "`%s': el nom de l'àlies no és valid" +msgstr "«%s»: el nom de l'àlies no és valid" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "l'edició de línia no està habilitada" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': el nom del mapa de tecles no és vàlid" +msgstr "«%s»: el nom del mapa de tecles no és vàlid" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no es pot llegir: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': no es pot desvincular" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': el nom de la funció és desconegut" +msgstr "«%s»: nom de funció desconegut" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no està vinculat a cap tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pot ser invocat via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: no es pot desvincular" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "nombre d'iteracions" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "només té sentit en una iteració de tipus `for', `while' o `until'" +msgstr "només té sentit en una iteració de tipus «for», «while» o «until»" # això forma part de la descripció de caller que està a un altre lloc #: builtins/caller.def:136 @@ -143,243 +144,242 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "la variable HOME no està definida" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "sobren arguments" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "no hi ha més directoris" +msgstr "directori nul" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "la variable OLDPWD no està definida" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "línia %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "atenció: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: sintaxi: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opció requereix un argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: fa falta un argument numèric" +msgstr "%s: falta un argument numèric" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: no s'ha trobat" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: l'opció no és vàlida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: el nom de l'opció no és vàlid" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': no és un identificador vàlid" +msgstr "«%s»: no és un identificador vàlid" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nombre octal no vàlid" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nombre hexadecimal no vàlid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "nombre no vàlid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: l'especificació de senyal no és vàlida" +msgstr "%s: especificació de senyal no vàlida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': el pid o l'especificació de tasca no són vàlids" +msgstr "«%s»: pid o especificació de feina no vàlids" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" -msgstr "%s: variable de només-lectura" +msgstr "%s: variable de només lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora del domini" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fora del domini" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: no s'ha trobat la tasca" +msgstr "%s: no existeix tal feina" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: no hi ha control de tasques" +msgstr "%s: no hi ha control de feines" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "no hi ha control de tasques" +msgstr "no hi ha control de feines" # cd .. en un intèrpret restringit -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restringit" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restringit" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no és una ordre interna de l'intèrpret" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "error d'escriptura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error en establir els atributs del terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error en obtenir els atributs del terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error en obtenir el directori actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: l'especificació de tasca és ambigua" +msgstr "%s: l'especificació de feina és ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "aquesta versió no té ajuda disponible" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" -msgstr "%s: el nom de l'acció no és vàlid" +msgstr "%s: nom d'acció no vàlid" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: no hi ha especificació de compleció" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "atenció: l'opció -F pot no funcionar com us espereu" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "atenció: l'opció -C pot no funcionar com us espereu" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "no s'està executant una funció de compleció" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "només es pot utilitzar en una funció" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: la variable referenciada no pot ser un vector" +msgstr "%s: una variable referència no pot ser un vector" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: no és permès que una variable s'autoreferenciï" +msgstr "%s: no es permeten autoreferències en variables referència" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" -msgstr "%s: la referència de nom és circular" +msgstr "%s: referència circular" -# buscar context -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: el nom de la variable referenciada no és vàlid" +msgstr "«%s»: la variable referència conté un nom de variable no vàlid" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" -msgstr "no és possible usar `-f' per a fer funcions" +msgstr "no és possible usar «-f» per convertir en funció" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" -msgstr "%s: funció de només-lectura" +msgstr "%s: funció de només lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: les assignacions compostes amb cometes estan desfasades" +msgstr "" +"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no és possible destruir variables vector d'aquesta manera" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: no es pot convertir el vector associatiu en indexat" +msgstr "%s: no és possible convertir un vector associatiu en indexat" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "la càrrega dinàmica no està disponible" +msgstr "no es poden carregar biblioteques dinàmicament" #: builtins/enable.def:343 #, c-format @@ -389,12 +389,12 @@ msgstr "no es pot obrir l'objecte compartit %s: %s" #: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "no es pot trobar %s a l'objecte compartit %s: %s" +msgstr "no s'ha trobat %s a l'objecte compartit %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "la càrrega de %s ha fallat (%d): no s'ha carregat" +msgstr "l'intent de carregar %s ha fallat (%d): no carregat" #: builtins/enable.def:512 #, c-format @@ -406,72 +406,72 @@ msgstr "%s: no s'ha carregat dinàmicament" msgid "%s: cannot delete: %s" msgstr "%s: no es pot eliminar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: és un directori" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: no és un fitxer ordinari" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: el fitxer és massa gran" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no es poden executar fitxers binaris" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no es pot executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" -msgstr "desconnexió\n" +msgstr "desconnectat\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "no és una sessió d'entrada: utilitzeu `exit'" +msgstr "no és una sessió d'entrada: utilitzeu «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Hi ha tasques aturades.\n" +msgstr "Hi ha feines aturades.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Hi ha tasques en marxa.\n" +msgstr "Hi ha feines en funcionament.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no s'ha trobat cap ordre" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificació d'historial" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no es pot obrir el fitxer temporal: %s" -# fg quan no hi ha cap tasca en segon pla -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +# fg quan no hi ha cap feina en segon pla +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "la tasca %d s'ha iniciat sense control de tasques" +msgstr "la feina %d es va iniciar sense control de feines" #: builtins/getopt.c:110 #, c-format @@ -483,41 +483,39 @@ msgstr "%s: opció il·legal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opció requereix un argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" -msgstr "hashing deshabilitat" +msgstr "el «hashing» està deshabilitat" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: la taula hash és buida\n" +msgstr "%s: la taula «hash» és buida\n" # hash (sense arguments) -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "vegades\tordre\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Ordres de l'intèrpret coincidents amb `" -msgstr[1] "Ordres de l'intèrpret coincidents amb `" +msgstr[0] "Ordres de l'intèrpret coincidents amb '" +msgstr[1] "Ordres de l'intèrpret coincidents amb '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"no hi ha ajuda sobre `%s'. Proveu `help help', `man -k %s' o `info %s'." +msgstr "no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no es pot obrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -529,31 +527,29 @@ msgid "" "\n" msgstr "" "Aquestes ordres de l'intèrpret estan definides internament.\n" -"Feu `help' per a veure'n una llista. \n" -"Feu `help nom' per a informació sobre la funció `nom'.\n" -"Utilitzeu `info bash' per a informació sobre l'intèrpret en general.\n" -"Utilitzeu `man -k' o bé `info' per a informació sobre ordres que no són a " -"la\n" -"llista.\n" +"Feu «help» per a veure'n una llista. \n" +"Feu «help nom» per a obtenir informació sobre la funció «nom».\n" +"Feu «info bash» per a obtenir informació general sobre l'intèrpret.\n" +"Feu «man -k» o «info» per a obtenir informació sobre altres programes.\n" "\n" -"Un asterisc (*) al costat d'un nom significa que l'ordre està " -"deshabilitada.\n" +"Un asterisc (*) significa que l'ordre està deshabilitada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "no és possible usar més d'una opció d'entre -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posició a l'historial" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: l'argument no és vàlid" +msgstr "%s: la marca horària no és vàlida" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: ha fallat l'expansió de l'historial" @@ -565,18 +561,18 @@ msgstr "%s: inlib ha fallat" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "no es permeten altres opcions amb `-x'" +msgstr "no es permeten altres opcions amb «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: els arguments han de ser ids de processos o tasques" +msgstr "%s: els arguments han de ser ids de processos o feines" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Error desconegut" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "s'esperava una expressió" @@ -585,72 +581,72 @@ msgstr "s'esperava una expressió" msgid "%s: not an indexed array" msgstr "%s: no és un vector indexat" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: l'especificació de descriptor de fitxer no és vàlida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: el descriptor de fitxer no és vàlid: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: el nombre de línies no és vàlid" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: l'origen del vector no és vàlid" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: el quàntum de retorn no és vàlid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nom de variable vector en blanc" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" -msgstr "es requereix suport per a variables vector" +msgstr "fa falta suport per a variables vector" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" -msgstr "`%s': falta un caràcter de format" +msgstr "«%s»: falta un caràcter de format" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" -msgstr "%c: l'especificació de format de temps no és vàlida" +msgstr "«%c»: l'especificació de format de temps no és vàlida" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" -msgstr "`%c': el caràcter de format no és vàlid" +msgstr "«%c»: el caràcter de format no és vàlid" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "atenció: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "problema en interpretar el format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "falta un dígit hexadecimal a \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" -msgstr "falta un dígit unicode a \\%c" +msgstr "falta un dígit Unicode a \\%c" #: builtins/pushd.def:199 msgid "no other directory" @@ -661,20 +657,20 @@ msgstr "no hi ha més directoris" msgid "%s: invalid argument" msgstr "%s: l'argument no és vàlid" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "la pila de directoris està buida" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índex de la pila de directoris" -# help dirs ?? missatge similar repetit més endavant -#: builtins/pushd.def:696 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -697,14 +693,14 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Mostra la llista actual de directoris recordats. Els directoris entren a " -"la\n" -" llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" -" directoris enrere amb l'ordre `popd'.\n" +"Mostra la llista actual de directoris recordats. Els directoris són " +"afegits\n" +" a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n" +" directoris cap enrere amb l'ordre «popd».\n" "\n" " Opcions:\n" " -c neteja la pila, esborrant-ne tots els elements\n" -" -l no mostra les versions abreviades (prefix ~) en els\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" " directoris relatius al vostre directori personal\n" " -p mostra la pila, una entrada per línia\n" " -v mostra la pila, una entrada per línia indicant la posició a\n" @@ -712,15 +708,15 @@ msgstr "" "\n" " Arguments:\n" " +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" " començant des de zero.\n" "\n" " -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions,\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" " començant des de zero." -# help pushd ??? -#: builtins/pushd.def:718 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -744,33 +740,33 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Afegeix un directori a sobre la pila de directoris, o fa girar la llista, " -"de\n" -" manera que a sobre la pila hi queda el directori de treball corrent.\n" -" Sense arguments, intercanvia els dos directoris de més amunt.\n" +"Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n" +" llista, de manera que al capdamunt de la pila hi queda el directori de\n" +" treball corrent. Sense arguments, intercanvia els dos directoris de " +"més\n" +" amunt.\n" "\n" " Opcions:\n" " -n Omet el canvi de directori quan s'afegeixen directoris a la\n" -" pila, de manera que només canvia la pila.\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" "\n" " +N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" " -N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de la dreta de la llista que mostra `dirs',\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" -" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" " converteix en el nou directori de treball corrent.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." -# help popd ??? -# -#: builtins/pushd.def:743 +# còpia parcial d'una altra cadena - l'original es troba més endavant +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -791,94 +787,93 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" "Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" -" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" -" de la pila.\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" "\n" " Opcions:\n" -" -n Evita el canvi de directori quan s'eliminen directoris de la\n" -" pila, de manera que només es manipula la pila.\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" " +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista que mostra `dirs', començant des de zero. \n" -" Per exemple: `popd +0' elimina el primer directori, i\n" -" `popd +1' el segon.\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" +" el segon.\n" "\n" " -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" -" llista que mostra `dirs', començant des de zero. \n" -" Per exemple: `popd -0' elimina l'últim directori, i\n" -" `popd -1' el penúltim.\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" +" penúltim.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»." # read -t -5 -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: el límit de temps no és vàlid" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "només es pot fer `return' des d'una funció o script" +msgstr "només es permet fer «return» des d'una funció o script" # unset -f -v foo -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "no és possible suprimir una funció i una variable alhora" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: no es pot suprimir" # unset UID -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: no es pot suprimir: %s de només-lectura" +msgstr "%s: no es pot suprimir: %s de només lectura" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: no és una variable vector" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: no és una funció" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: no es pot suprimir" +msgstr "%s: no es pot exportar" # shift -4 #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "nombre de shifts" +msgstr "nombre de «shifts»" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" -msgstr "" -"no es poden activar i desactivar opcions de l'intèrpret al mateix temps" +msgstr "no es poden activar i desactivar opcions de forma simultània" # shopt -s foo -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: l'opció de l'intèrpret no és vàlida" # source -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "fa falta un nom de fitxer" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: no s'ha trobat el fitxer" @@ -891,63 +886,63 @@ msgstr "no es pot suspendre" msgid "cannot suspend a login shell" msgstr "no és possible suspendre un intèrpret d'entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s és un àlies de `%s'\n" +msgstr "%s és un àlies de «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s és una paraula clau de l'intèrpret\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s és una funció\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s és una ordre interna\n" +msgstr "%s és una ordre interna especial\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s és una ordre interna\n" # type dmesg -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s és %s\n" # hash cp; type cp -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" -msgstr "%s és a la taula hash (%s)\n" +msgstr "%s és a la taula «hash» (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: el límit no és vàlid" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': ordre errònia" +msgstr "«%c»: ordre errònia" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no es pot obtenir el límit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no es pot modificar el límit: %s" @@ -960,420 +955,431 @@ msgstr "nombre octal" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': l'operador del mode simbòlic no és vàlid" +msgstr "«%c»: l'operador de mode simbòlic no és vàlid" # umask u=rwz #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': el mode simbòlic conté caràcters no vàlids" +msgstr "«%c»: el mode simbòlic conté caràcters no vàlids" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " línia " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "última ordre: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Avortant..." # prefix afegit als avisos infomatius interns (internal_inform) #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMACIÓ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "error no identificat" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipus d'ordre erroni" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "connector erroni" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salt erroni" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable no definida" # SIGALRM -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n" # error intern -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s" # error intern -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: `%c': el caràcter de format no és vàlid" +msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: el coprocés [%d:%s] encara existeix" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" -msgstr "error de canalització" +msgstr "error de canonada" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4624 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4636 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" +msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: restricció: no podeu especificar `/' en noms d'ordres" +msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: no s'ha trobat l'ordre" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intèrpret erroni" # error intern -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no es pot executar el fitxer binari: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" -msgstr "`%s': és una ordre interna especial" +msgstr "«%s»: és una ordre interna especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no s'ha pogut duplicar l'fd %d com a fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" -msgstr "s'ha excedit el nivell de recursió d'expressions" +msgstr "excedit el nivell màxim de recursivitat per a expressions" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" -msgstr "underflow a la pila de recursió" +msgstr "«underflow» a la pila de recursivitat" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "error de sintaxi a l'expressió" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "intent d'assignació a una no-variable" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "error de sintaxi a l'expressió" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "divisió per 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" -msgstr "bug: el component expassign és erroni" +msgstr "bug: el component «expassign» és erroni" # echo $((4 > 5 ? 0)) -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" -msgstr "falta un `:' a l'expressió condicional" +msgstr "falta un caràcter «:» a l'expressió condicional" # echo $((4 ** -1)) -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponent menor que 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "s'esperava un identificador després del preincrement o predecrement" +msgstr "fa falta un identificador després del pre-increment o pre-decrement" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" -msgstr "falta un `)'" +msgstr "falta un caràcter «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "error de sintaxi: s'esperava un operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "error de sintaxi: l'operador aritmètic no és vàlid" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (l'element erroni és \"%s\")" +msgstr "%s%s%s: %s (l'element erroni és «%s»)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "la base aritmètica no és vàlida" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "el valor de la base és massa gran" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: expressió errònia\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: els directoris superiors són inaccessibles" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "error en crear un fd nou a partir de l'fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "save_bash_input: ja existia un buffer per al nou fd %d" +msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d" #: jobs.c:527 msgid "start_pipeline: pgrp pipe" -msgstr "start_pipeline: pgrp de la canalització" +msgstr "start_pipeline: pgrp de la canonada" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "el pid bifurcat %d apareix a la tasca en execució %d" +msgstr "el pid bifurcat %d apareix a la feina en execució %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "s'elimina la tasca aturada %d amb grup de procés %ld" +msgstr "s'elimina la feina aturada %d amb grup de procés %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: procés %5ld (%s) a the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "add_process: el pid %5ld (%s) està marcat com a encara actiu" +msgstr "add_process: el pid %5ld (%s) està marcat com a viu" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existeix tal pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Senyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Fet" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Aturat" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Aturat(%s)" -#: jobs.c:1632 +# ha de tenir menys de 10 caràcters o no queda alineat +#: jobs.c:1677 msgid "Running" -msgstr "Executant-se" +msgstr "Funcionant" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Fet(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Sortida %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Estat desconegut" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(s'ha bolcat la memòria)" # wd = working directory -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (dt: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid (de %ld a %ld) per al procés inferior" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: el pid %ld no és un fill d'aquest intèrpret" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No es té constància del procés %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: la tasca %d està aturada" +msgstr "wait_for_job: la feina %d està aturada" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" -msgstr "%s: la tasca ha acabat" +msgstr "%s: la feina ha acabat" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" -msgstr "%s: la tasca %d ja es troba en segon pla" +msgstr "%s: la feina %d ja es troba en segon pla" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "waitchld: s'activa el WNOHANG per a evitar un bloqueig indefinit" +msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s línia %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (s'ha bolcat la memòria)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(dt ara: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp ha fallat" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina de línia" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina de línia" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no s'ha pogut establir el grup de procés del terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" -msgstr "aquesta sessió no té control de tasques" +msgstr "aquesta sessió no té control de feines" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserció fallida: %s\n" # error intern i el \r provoca warnings -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "desconegut" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc abatussat a la llista de disponibles" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: cridat amb un argument de bloc ja alliberat" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: cridat amb un argument bloc no assignat" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detectat; mh_nbytes fora del domini" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: les mides inicial i final del fragment difereixen" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: cridat amb un argument de bloc no assignat" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detectat: mh_nbytes fora del domini" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: les mides inicial i final del fragment difereixen" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "register_alloc: la taula alloc està plena amb FIND_ALLOC?\n" +msgstr "register_alloc: la taula «alloc» està plena de «FIND_ALLOC»?\n" #: lib/malloc/table.c:200 #, c-format @@ -1408,22 +1414,22 @@ msgstr "%s: la ubicació remota no és vàlida" msgid "network operations not supported" msgstr "les operacions de xarxa no estan suportades" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s" @@ -1439,316 +1445,323 @@ msgstr "Teniu correu nou a $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "El correu de %s s'ha llegit\n" +msgstr "El correu a %s ha estat llegit\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxi: fa falta una expressió aritmètica" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "error de sintaxi: `;' inesperat" +msgstr "error de sintaxi: «;» inesperat" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "error de sintaxi: `((%s))'" +msgstr "error de sintaxi: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipus d'instrucció erroni %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "document literal a la línia %d delimitat per EOF (volia `%s')" +msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: instrucció de redirecció `%d' fora del domini" +msgstr "make_redirection: instrucció de redirecció «%d» fora del domini" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia " +"truncada" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "s'ha excedit el nombre màxim de documents literals" +msgstr "excedit el nombre màxim de documents literals" # "echo $(echo" en un script -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "EOF inesperat mentre es cercava un `%c'" +msgstr "EOF inesperat mentre es cercava «%c»" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" -msgstr "EOF inesperat mentre es cercava `]]'" +msgstr "EOF inesperat mentre es cercava «]]»" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "error de sintaxi a l'expressió condicional: element `%s' inesperat" +msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "error de sintaxi a l'expressió condicional" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "element `%s' inesperat, s'esperava `)'" +msgstr "element «%s» inesperat, s'esperava «)»" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" -msgstr "s'esperava `)'" +msgstr "s'esperava «)»" -#: parse.y:4529 +# [[ -d ]] +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "argument `%s' inesperat a l'operador unari condicional" +msgstr "argument «%s» inesperat a un operador unari condicional" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" -msgstr "argument inesperat a l'operador unari condicional" +msgstr "argument inesperat a un operador unari condicional" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "element `%s' inesperat, s'esperava un operador binari condicional" +msgstr "element «%s» inesperat, s'esperava un operador binari condicional" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "s'esperava un operador binari condicional" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "argument inesperat `%s' a un operador binari condicional" +msgstr "argument inesperat «%s» a un operador binari condicional" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argument inesperat a un operador binari condicional" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "element `%c' inesperat en una ordre condicional" +msgstr "element «%c» inesperat en una ordre condicional" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "element `%s' inesperat en una ordre condicional" +msgstr "element «%s» inesperat en una ordre condicional" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" -msgstr "element `%d' inesperat en una ordre condicional" +msgstr "element %d inesperat en una ordre condicional" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "error de sintaxi a prop de l'element inesperat `%s'" +msgstr "error de sintaxi a prop de l'element inesperat «%s»" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" -msgstr "error de sintaxi a prop de `%s'" +msgstr "error de sintaxi a prop de «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "error de sintaxi: final de fitxer inesperat" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "error de sintaxi" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Useu \"%s\" per a deixar l'intèrpret.\n" +msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" -msgstr "EOF inesperat mentre es buscava un `)'" +msgstr "EOF inesperat mentre es cercava un «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: la funció `%s' no s'ha trobat" +msgstr "completion: la funció «%s» no s'ha trobat" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: possible reintent cíclic" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: el paràmetre COMPSPEC és NUL" +msgstr "progcomp_insert: %s: el paràmetre «COMPSPEC» és NUL" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: el connector `%d' és erroni" +msgstr "print_command: el connector «%d» és erroni" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: el descriptor de fitxer no és vàlid" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: el punter de fitxer és NUL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: `%c': el caràcter de format no és vàlid" +msgstr "cprintf: «%c»: el caràcter de format no és vàlid" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descriptor de fitxer fora del domini" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecció ambigua" # opció noclobber -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no es pot escriure sobre un fitxer existent" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricció: no podeu redirigir la sortida" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no és possible assignar un fd a una variable" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "error de redirecció: no es pot duplicar l'fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" -msgstr "no s'ha trobat el directori /tmp, sisplau creeu-lo!" +msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp ha de ser un nom de directori vàlid" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: l'opció no és vàlida" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" +msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "no es pot iniciar el depurador; mode de depuració desactivat" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" -msgstr "%s: és un directori" +msgstr "%s: És un directori" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "No teniu nom!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versió %s-(%s)\n" # -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Sintaxi:\t%s [opció GNU llarga] [opció] ...\n" -"\t\t%s [opció GNU llarga] [opció] fitxer-script ...\n" +"Sintaxi: %s [opció GNU llarga] [opció] ...\n" +" %s [opció GNU llarga] [opció] fitxer-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opcions GNU llargues:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcions de l'intèrpret:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, o bé -o opció\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -"Feu `%s -c \"help set\"' per a informació sobre les opcions de l'intèrpret.\n" +"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Feu `%s -c help' per a obtenir informació sobre les ordres internes.\n" +msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Feu servir l'ordre `bashbug' per a comunicar `bugs'.\n" +msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "pàgina web de bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda general per a programari GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: l'operació no és vàlida" @@ -1780,11 +1793,11 @@ msgstr "Traçat/trampa BPT" #: siglist.c:75 msgid "ABORT instruction" -msgstr "Instrucció ABORT" +msgstr "Instrucció «ABORT»" #: siglist.c:79 msgid "EMT instruction" -msgstr "Instrucció EMT" +msgstr "Instrucció «EMT»" #: siglist.c:83 msgid "Floating point exception" @@ -1808,11 +1821,11 @@ msgstr "Crida de sistema errònia" #: siglist.c:103 msgid "Broken pipe" -msgstr "Canalització trencada" +msgstr "Canonada trencada" #: siglist.c:107 msgid "Alarm clock" -msgstr "Alarma de rellotge" +msgstr "Alarma" #: siglist.c:111 msgid "Terminated" @@ -1864,7 +1877,7 @@ msgstr "Alarma (perfil)" #: siglist.c:167 msgid "Window changed" -msgstr "Variació de la finestra" +msgstr "Canvi de finestra" #: siglist.c:171 msgid "Record lock" @@ -1880,7 +1893,7 @@ msgstr "Senyal d'usuari 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "Dades d'entrada HFT pendents" +msgstr "Dades HFT d'entrada pendents" #: siglist.c:187 msgid "power failure imminent" @@ -1924,105 +1937,109 @@ msgid "Unknown Signal #%d" msgstr "Senyal Desconegut #%d" # missatge similar a subst.c:75XX -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "substitució errònia: falta un `%s' a %s" +msgstr "substitució errònia: falta un «%s» a %s" # foo[1]=(1 2 3) -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no és possible assignar llistes a l'element d'un vector" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" -msgstr "no s'ha pogut crear la canalització per a la substitució de procés" +msgstr "no s'ha pogut crear la canonada per a la substitució de procés" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "no s'ha pogut crear el fill per a la substitució de procés" #: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "no s'ha pogut obrir la canalització %s amb permís de lectura" +msgstr "no s'ha pogut obrir la canonada %s per a lectura" #: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "no s'ha pogut obrir la canalització %s per a escriure-hi" +msgstr "no s'ha pogut obrir la canonada %s per a escriptura" #: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "no s'ha pogut duplicar la canalització %s com a fd %d" +msgstr "no s'ha pogut duplicar la canonada %s com a fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "subtitució errònia: no hi ha \"`\" final a %s" +msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" -msgstr "no s'ha pogut crear la canalització per a la substitució d'ordre" +msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "no s'ha pogut crear un fill per a la substitució d'ordre" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: no s'ha pogut duplicar la canalització com a fd 1" +msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1" # buscar context -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: el nom de la variable referenciada no és vàlid" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: substitució errònia" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: el nombre de línies no és vàlid" +msgstr "%s: expansió indirecta no vàlida" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': el nom de l'àlies no és valid" +msgstr "%s: nom de variable no vàlid" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: paràmetre nul o no definit" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paràmetre nul o no definit" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressió de subcadena < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitució errònia" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no és possible assignar d'aquesta manera" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "en futures versions s'evaluarà com a substitució aritmètica" +msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "subtitució errònia: no hi ha \"`\" final a %s" +msgstr "subtitució errònia: falta un caràcter «`» final a %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "cap coincidència: %s" @@ -2038,131 +2055,130 @@ msgstr "%s: s'esperava una expressió amb enters" #: test.c:265 msgid "`)' expected" -msgstr "s'esperava `)'" +msgstr "s'esperava «)»" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "s'esperava `)', trobat %s" +msgstr "s'esperava «)», s'ha trobat %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: s'esperava un operador unari" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: s'esperava un operador binari" -#: test.c:869 +#: test.c:873 msgid "missing `]'" -msgstr "falta un `]'" +msgstr "falta un «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" -msgstr "el nombre de senyal no és vàlid" +msgstr "el número de senyal no és vàlid" # internal warning -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p" # internal warning -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: senyal erroni %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" -msgstr "error en importar la definició de funció de `%s'" +msgstr "error en importar la definició de funció de «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1" # error intern -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: no és possible assignar un valor a la variable" # buscar context -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: el nom de la variable referenciada no és vàlid" +msgstr "%s: assignació numèrica a una variable referència" # error intern -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" -msgstr "%s: el paràmetre exportstr és nul" +msgstr "el paràmetre «exportstr» de la variable %s és nul" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "el caràcter %d en el paràmetre exportstr de %s no és vàlid" +msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" -msgstr "falta un `=' en el paràmetre exportstr de %s" +msgstr "falta un «=» en el paràmetre «exportstr» de %s" # error intern -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" # error intern -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" # error intern -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" # error intern -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no s'ha pogut obrir com a FITXER" # error intern -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: el valor de compatibilitat és fora del domini" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2170,7 +2186,7 @@ msgid "" "html>\n" msgstr "" "Llicència GPLv3+: GNU GPL versió 3 o posterior\n" -" \n" +" \n" #: version.c:86 version2.c:86 #, c-format @@ -2184,24 +2200,24 @@ msgstr "" #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "No hi ha CAP GARANTIA, fins a l'extrem permès per la llei." +msgstr "No té CAP GARANTIA, fins a l'extrem permès per la llei." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: no s'han pogut assignar %lu octets (%lu octets assignats)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: no s'han pogut assignar %lu octets" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: no s'han pogut assignar %lu octets (%lu octets assignats)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no s'han pogut assignar %lu octets" @@ -2258,9 +2274,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nom[=valor] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2304,11 +2319,11 @@ msgstr "fc [-e editor] [-lnr] [primer] [últim] o fc -s [pat=sub] [ordre]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [tasca]" +msgstr "fg [feina]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [tasca ...]" +msgstr "bg [feina ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2328,19 +2343,18 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [tasca ...] o jobs -x ordre [args]" +msgstr "jobs [-lnprs] [feina ...] o jobs -x ordre [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [tasca ...]" +msgstr "disown [-h] [-ar] [feina ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s senyal | -n númsenyal | -senyal] pid | tasca ... o kill -l [senyal]" +"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]" #: builtins.c:136 msgid "let arg [arg ...]" @@ -2407,16 +2421,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [límit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2437,7 +2451,7 @@ msgstr "select NOM [in PARAULES ... ;] do ORDRES; done" #: builtins.c:190 msgid "time [-p] pipeline" -msgstr "time [-p] canalització" +msgstr "time [-p] canonada" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" @@ -2472,7 +2486,7 @@ msgstr "{ ORDRES ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "tasca [&]" +msgstr "feina [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2484,7 +2498,7 @@ msgstr "[[ expressió ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - Noms i significat d'algunes variables de l'intèrpret" +msgstr "variables - Nom i significat d'algunes variables de l'intèrpret" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2516,37 +2530,35 @@ msgstr "" "llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W llista] [-F " -"funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" +"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n" +"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opció] [-DE] [nom ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " -"quàntum] [vector]" +"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quàntum] [vector]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " "quàntum] [vector]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2567,23 +2579,21 @@ msgid "" msgstr "" "Defineix o mostra àlies.\n" "\n" -" Sense arguments, `alias' mostra la llista d'àlies definits, en forma de\n" -" `alias NOM=VALOR' a la sortida estàndard.\n" +" Sense arguments «alias» mostra la llista d'àlies definits, en format\n" +" «alias NOM=VALOR», a la sortida estàndard.\n" "\n" " Altrament, defineix un àlies per a cada NOM per al qual existeix un\n" " VALOR. Un espai al final de VALOR fa que la paraula següent sigui\n" -" susceptible de ser substituïda per un àlies quan s'expandeix l'àlies.\n" +" susceptible de ser substituïda per un àlies quan s'expandeix aquest\n" +" àlies.\n" "\n" " Opcions:\n" -" -p Mostra tots els àlies definits en un format reutilitzable\n" +" -p Mostra tots els àlies definits en format reutilitzable\n" "\n" " Estat de sortida:\n" -" alias torna cert, excepte si heu proporcionat un NOM per al qual no " -"s'ha\n" -" definit cap àlies." +" alias torna cert, excepte si NOM no correspon a cap àlies definit." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2592,15 +2602,14 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Esborra cada NOM de la llista d'àlies definits.\n" +"Esborra tots els NOMs de la llista d'àlies definits.\n" "\n" " Opcions:\n" " -a esborra totes les definicions d'àlies.\n" "\n" -" Retorna èxit excepte si NOM no és un àlies existent." +" Torna cert, excepte si NOM no és un àlies existent." #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2641,16 +2650,15 @@ msgid "" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Defineix vincles de tecla i variables Readline.\n" +"Estableix vincles de tecla i variables Readline.\n" "\n" " Vincula una seqüència de tecles a una funció o macro Readline, o bé\n" -" defineix una variable Readline. La sintaxi dels arguments no-opcions " -"és\n" -" la mateixa que la del fixer ~/.inputrc, però s'ha de passar com a un\n" +" estableix una variable Readline. La sintaxi dels arguments no-opcions\n" +" és la mateixa que en el fitxer ~/.inputrc, però ha de consistir en un\n" " únic argument: per exemple, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" "\n" " Opcions:\n" -" -m mapa Usa `mapa' com a mapa de tecles mentre duri aquesta\n" +" -m mapa Usa MAPA com a mapa de tecles mentre duri aquesta\n" " ordre. Els noms de mapes acceptables són emacs, emacs-\n" " standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-" "command,\n" @@ -2660,24 +2668,22 @@ msgstr "" " -p Mostra les funcions i els vincles en un format que es pot\n" " reutilitzar com a entrada.\n" " -S Mostra les seqüències de tecles que invoquen macros i els\n" -" seus respectius valors.\n" +" seus valors respectius.\n" " -s Mostra les seqüències de tecles que invoquen macros i els\n" -" seus respectius valors en un format que es pot " +" seus valors respectius en un format que es pot " "reutilitzar\n" " com a entrada.\n" " -V Mostra els noms de les variables i els seus valors.\n" " -v Mostra els noms de les variables i els seus respectius\n" " valors en un format que es pot reutilitzar com a entrada.\n" -" -q nom Consulta quines tecles invoquen la funció especificada.\n" -" -u nom Desvincula les tecles vinculades a la funció " +" -q funció Consulta quines tecles invoquen la funció especificada.\n" +" -u funció Desvincula les tecles vinculades a la funció " "especificada.\n" -" -r tecles Elimina els vincles associats a TECLES.\n" -" -f fitxer Llegeix els vincles de tecla desats a FITXER.\n" +" -r tecles Elimina el vincle associat a TECLES.\n" +" -f fitxer Obté els vincles de tecles de FITXER.\n" " -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n" -" -X Mostra les seqüències de tecla vinculades amb l'opció -x " -"i\n" -" les ordres associades, en un format reutilitzable com a\n" -" entrada.\n" +" -X Mostra les tecles amb les respectives ordres vinculades\n" +" amb l'opció -x, en un format reutilitzable com a entrada.\n" "\n" " Estat de sortida:\n" " bind torna 0 excepte si passeu una opció no reconeguda o es produeix\n" @@ -2764,19 +2770,18 @@ msgid "" msgstr "" "Retorna el context de la subrutina actual.\n" "\n" -" Sense EXPR, torna \"$linia $nomfitxer\". Amb EXPR, torna \"$linia\n" +" Sense EXPR, torna \"$línia $nomfitxer\". Amb EXPR, torna \"$línia\n" " $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n" " per a proporcionar un traçat de la pila.\n" "\n" -" El valor de EXPR indica quants frames retrocedir des de l'actual; el\n" -" frame superior és el 0.\n" +" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n" +" «frame» superior és el 0.\n" "\n" " Estat de sortida:\n" " Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" " no és una expressió vàlida." #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2827,38 +2832,38 @@ msgstr "" "\n" " La variable CDPATH defineix els camins de cerca per al directori que\n" " conté DIR. Es poden especificar camins alternatius separats per dos\n" -" punts (:). Un nom de directori nul és el mateix que el directori\n" -" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH. Si " -"no\n" -" es troba el directori, i l'opció de l'intèrpret `cdable_vars' està\n" -" activada, llavors s'interpreta la paraula com un nom de variable. Si " -"la\n" -" variable especificada té algun valor, llavors aquest valor s'usa en " -"lloc\n" +" punts (:). Un nom de directori nul s'interpreta com al directori\n" +" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n" +"\n" +" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n" +" activada, aleshores la paraula s'interpreta com a un nom de variable.\n" +" Si la variable especificada té algun valor, aquest valor s'usa en lloc\n" " de DIR.\n" "\n" " Opcions:\n" -" -L obliga a seguir els enllaços simbòlics: resol els enllaços\n" -" simbòlics que conté DIR després de processar `..'\n" -" -P usa l'estructura de directoris física i no segueix els\n" -" possibles enllaços simbòlics: resol els enllaços simbòlics\n" -" que conté DIR abans de processar `..'\n" -" -e amb l'opció -P, si el directori de treball actual no es pot\n" -" determinar amb èxit, surt amb un estat diferent de zero\n" -" -@ en sistemes que ho suporten, presenta un fitxer amb " -"atributs\n" -" estesos com un directori que conté els atributs del fitxer\n" -"\n" -" Per defecte, se segueixen els enllaços simbòlics, com si s'especifiqués\n" -" l'opció `-L'. `..' es processa eliminant el component del camí\n" -" immediatament previ fins a la primera barra o fins al principi de DIR.\n" +" -L força el seguiment d'enllaços simbòlics: resol els enllaços\n" +" simbòlics que conté DIR després de processar «..»\n" +" -P usa l'estructura de directoris física sense seguir " +"possibles\n" +" enllaços simbòlics: resol els enllaços simbòlics que conté\n" +" DIR abans de processar «..»\n" +" -e amb l'opció -P, si no es pot determinar el directori de\n" +" treball actual amb èxit, surt amb un estat diferent de zero\n" +" -@ en sistemes que ho suporten, presenta fitxers amb atributs\n" +" estesos com a directoris que contenen els atributs del\n" +" fitxer\n" +"\n" +" Per defecte, se segueixen els enllaços simbòlics, com si " +"especifiquéssiu\n" +" l'opció «-L». El component «..» es processa eliminant el component del\n" +" camí immediatament previ fins a la primera barra o fins al principi de\n" +" DIR.\n" "\n" " Estat de sortida:\n" " Torna 0 si s'ha canviat de directori, i si $PWD s'ha establert de forma\n" " satisfactòria quan s'utilitza -P; altrament un valor diferent de zero." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2880,7 +2885,7 @@ msgstr "" " treball actual\n" " -P mostra el directori físic, sense cap enllaç simbòlic\n" "\n" -" Per defecte, `pwd' es comporta com si haguéssiu especificat `-L'.\n" +" Per defecte, «pwd» es comporta com si haguéssiu especificat «-L».\n" "\n" " Estat de sortida:\n" " Torna 0 excepte si heu especificat una opció no vàlida o no es pot\n" @@ -2927,7 +2932,6 @@ msgstr "" " Sempre falla." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2949,14 +2953,14 @@ msgstr "" "\n" " Executa ORDRE amb ARGS sense cercar funcions de l'intèrpret amb aquest\n" " nom, o bé mostra informació sobre l'ORDRE especificada. Es pot\n" -" utilitzar per a invocar ordres des del disc, quan existeix una funció\n" +" utilitzar per a invocar programes en el disc, quan existeix una funció\n" " amb el mateix nom.\n" "\n" " Opcions:\n" " -p usa el valor per defecte de la variable PATH que garanteix\n" " trobar totes les utilitats estàndards\n" " -v mostra una descripció de l'ORDRE similar a la que mostra\n" -" l'ordre `type'\n" +" l'ordre «type»\n" " -V mostra una descripció més detallada per a cada ORDRE\n" "\n" " Estat de sortida:\n" @@ -2983,11 +2987,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3012,33 +3016,35 @@ msgstr "" " -f només té en compte noms i definicions de funcions\n" " -F només mostra noms de funcions (a part del número de línia i\n" " el nom del fitxer, en mode de depuració)\n" +" -g crea variables globals quan s'utilitza dins d'una funció,\n" +" altrament s'ignora\n" " -p mostra els atributs i el valor de cada NOM\n" "\n" " Opcions que estableixen atributs:\n" " -a per a fer NOMs vectors indexats (si estan suportats)\n" " -A per a fer NOMs vectors associatius (si estan suportats)\n" -" -i per a assignar l'atribut `nombre enter' a NOMs\n" -" -l per a passar NOMs a minúscules en l'assignació\n" -" -r per a fer NOMs de només-lectura\n" -" -t per a assignar l'atribut `traça' a NOMs\n" -" -u per a passar NOMs a majúscules en l'assignació\n" +" -i per a assignar l'atribut de nombre enter a NOMs\n" +" -l per a convertir NOMs a minúscules en l'assignació\n" +" -n per a fer NOM una referència a la variable que té per nom\n" +" el seu valor\n" +" -r per a fer NOMs variables de només lectura\n" +" -t per a assignar l'atribut «traça» a NOMs\n" +" -u per a convertir NOMs a majúscules en l'assignació\n" " -x per a exportar NOMs\n" "\n" -" Si feu servir `+' en lloc de `-', elimina l'atribut.\n" +" Si feu servir «+» en lloc de «-», elimina l'atribut.\n" "\n" -" Les variables que tenen l'atribut `nombre enter' s'avaluen\n" -" aritmèticament (vegeu l'ordre `let') quan s'assigna un valor a la\n" +" Les variables que tenen l'atribut de nombre enter s'avaluen\n" +" aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n" " variable.\n" "\n" -" Quan s'usa en una funció, `declare' converteix NOMs en variables " -"locals,\n" -" igual que l'ordre `local'.\n" +" Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n" +" igual que l'ordre «local». L'opció «-g» inhabilita aquest comportament.\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si rep una opció invàlida o es produeix un error." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3046,7 +3052,7 @@ msgid "" msgstr "" "Assigna valors i atributs a variables.\n" "\n" -" Obsolet. Vegeu `help declare'." +" Sinònim de «declare». Vegeu «help declare»." # help local #: builtins.c:538 @@ -3067,7 +3073,7 @@ msgstr "" "\n" " Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot " "ser\n" -" qualsevol opció que `declare' admeti.\n" +" qualsevol opció que «declare» admeti.\n" "\n" " Les variables locals només es poden utilitzar dins d'una funció; només\n" " són visibles a dins de la funció on són definides i dins de les " @@ -3079,7 +3085,6 @@ msgstr "" " un error, o l'intèrpret no està executant una funció." #: builtins.c:555 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3122,8 +3127,7 @@ msgstr "" " -e activa la interpretació de seqüències d'escapada\n" " -E desactiva la interpretació de seqüències d'escapada\n" "\n" -" `echo' interpreta els següents caràcters escapats per una barra " -"inversa:\n" +" «echo» interpreta els següents caràcters escapats amb una barra inversa:\n" " \\a alerta (campana)\n" " \\b retrocés\n" " \\c suprimeix tota sortida ulterior\n" @@ -3207,7 +3211,7 @@ msgstr "" "internes\n" " que es troben inhabilitades\n" " -p mostra la llista en format reutilitzable\n" -" -s mostra només les ordres internes `especials' Posix\n" +" -s mostra només les ordres internes «especials» Posix\n" "\n" " Opcions per a controlar l'enllaçat dinàmic:\n" " -f carrega l'ordre interna NOM, de l'objecte compartit FITXER\n" @@ -3215,8 +3219,8 @@ msgstr "" "\n" " Sense opcions, habilita cada un dels NOMs.\n" "\n" -" Per a utilitzar el `test' que es troba al $PATH en lloc de la versió\n" -" interna de l'intèrpret, feu `enable -n test'.\n" +" Per a utilitzar el «test» que es troba al $PATH en lloc de la versió\n" +" interna de l'intèrpret, feu «enable -n test».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si NOM no és una ordre interna o té lloc un error." @@ -3234,8 +3238,9 @@ msgid "" msgstr "" "Executa els arguments com una ordre.\n" "\n" -" Combina els ARGs en una única cadena, utilitza el resultat com a input\n" -" per a l'intèrpret, i executa les ordres resultants.\n" +" Combina ARGs en una única cadena, utilitza el resultat com a entrada " +"per\n" +" a l'intèrpret i executa les ordres resultants.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la." @@ -3280,10 +3285,10 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" -"Interpreta arguments d'opcions.\n" +"Interpreta arguments que representen opcions.\n" "\n" -" getopts l'utilitzen els procediments de l'intèrpret per a interpretar\n" -" els paràmetres posicionals com a opcions.\n" +" getopts és utilitzat per les utilitats de bash per a interpretar els\n" +" paràmetres posicionals com a opcions.\n" "\n" " CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n" " seguida de dos punts, l'opció requereix un argument, que s'ha de " @@ -3323,7 +3328,6 @@ msgstr "" " opcions o si es produeix un error." #: builtins.c:688 -#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3345,7 +3349,7 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" -"Substitueix l'intèrpret per l'ordre especificada.\n" +"Substitueix el procés de l'intèrpret per l'ordre especificada.\n" "\n" " Executa ORDRE, substituint aquest intèrpret pel programa especificat.\n" " Es passen ARGUMENTS a l'ORDRE com a arguments. Si no especifiqueu cap\n" @@ -3354,11 +3358,11 @@ msgstr "" " Opcions:\n" " -a nom passa NOM a ORDRE com a argument número zero\n" " -c executa ORDRE en un entorn buit\n" -" -t passa un guionet (-) a ORDRE com a argument número zero\n" +" -t passa un guionet a ORDRE com a argument número zero\n" "\n" " Si l'ordre no es pot executar i la sessió és no-interactiva, " "l'intèrpret\n" -" surt, excepte si l'opció `execfail' està habilitada.\n" +" surt, excepte si l'opció «execfail» està habilitada.\n" "\n" " Estat de sortida:\n" " Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n" @@ -3386,8 +3390,9 @@ msgid "" msgstr "" "Abandona una sessió d'entrada.\n" "\n" -" Abandona una sessió d'entrada amb estat de sortida N. Torna un error si\n" -" no s'està executant en una sessió d'entrada." +" Abandona una sessió d'entrada amb estat de sortida N. Torna un error " +"si\n" +" no s'està executant en una sessió d'entrada." # help fc (hi ha un bug a la cadena original) #: builtins.c:728 @@ -3421,27 +3426,24 @@ msgid "" msgstr "" "Mostra o executa ordres de l'historial.\n" "\n" -" fc s'utilitza per a mostrar o editar i reexecutar ordres de " -"l'historial.\n" -" PRIMER i ÚLTIM poden ser números que defineixen un interval, o PRIMER\n" -" pot ser una cadena, que significa l'ordre més recent que comença amb\n" -" aquesta cadena.\n" +" fc s'utilitza per a mostrar o editar i re-executar ordres de\n" +" l'historial. PRIMER i ÚLTIM poden ser números que defineixen un\n" +" interval, o PRIMER pot ser una cadena, que significa l'ordre més recent\n" +" que comença amb aquesta cadena.\n" "\n" " Opcions:\n" " -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n" " de la variable FCEDIT, després el valor de EDITOR, i\n" " finalment vi\n" " -l\tmostra les línies en lloc d'editar-les\n" -" -n\tomet els nombres de línia a l'hora de mostrar la llista\n" +" -n\tomet els números de línia a l'hora de mostrar la llista\n" " -r\tinverteix l'ordre de les línies (més recents primer)\n" "\n" -" Amb el format `fc -s [pat=sub ...] [ordre]', ORDRE es reexecuta després\n" +" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n" " d'haver fet la substitució PAT=SUB.\n" "\n" -" Un àlies útil és r='fc -s', de manera que en escriure `r cc' s'executa\n" -" l'última ordre que comença amb `cc' i en escriure `r' reexecuta " -"l'última\n" -" ordre.\n" +" Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n" +" que comença per «cc» i «r» re-executa l'última ordre.\n" "\n" " Estat de sortida:\n" " Torna èxit o l'estat de l'última ordre executada; diferent de zero si " @@ -3459,11 +3461,10 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Porta una tasca al primer pla.\n" +"Porta una feina al primer pla.\n" "\n" -" Mou la tasca identificada per TASCA al primer pla, convertint-la en la\n" -" tasca corrent. Si TASCA no es dóna, s'utilitza la tasca que " -"l'intèrpret\n" +" Mou la feina identificada per FEINA al primer pla, convertint-la en la\n" +" feina corrent. Si ometeu FEINA, s'utilitza la feina que l'intèrpret\n" " considera com a corrent.\n" "\n" " Estat de sortida:\n" @@ -3484,19 +3485,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Mou tasques al segon pla.\n" +"Mou feines al segon pla.\n" "\n" -" Mou la tasca identificada per TASCA al segon pla, com si s'haguessin\n" -" iniciat amb un `&'. Si TASCA no es dóna, s'utilitza la tasca que\n" -" l'intèrpret considera com a tasca corrent.\n" +" Mou la feina identificada per FEINA al segon pla, com si s'hagués\n" +" iniciat amb un «&». Si ometeu FEINA, s'utilitza la feina que\n" +" l'intèrpret considera com a feina corrent.\n" "\n" -" Estat de sortida:\n" -" Torna èxit, excepte si el control de tasques no està habilitat o es\n" -" produeix un error." +" Estat de sortida:\n" +" Torna èxit, excepte si el control de feines no està habilitat o es\n" +" produeix un error." # help hash #: builtins.c:787 -#, fuzzy msgid "" "Remember or display program locations.\n" " \n" @@ -3522,23 +3522,23 @@ msgstr "" "Recorda o mostra la ubicació de programes.\n" "\n" " Determina i recorda la ubicació completa de cada NOM d'ordre. Sense\n" -" arguments, es mostra informació sobre les ordres que s'han recordat.\n" +" arguments, mostra informació sobre les ordres que s'han recordat.\n" "\n" " Opcions:\n" -" -d oblida la ubicació recordada de cada NOM\n" +" -d oblida la ubicació recordada per a cada NOM\n" " -l utilitza un format que es pot reciclar com a " "entrada\n" -" -p ubicació utilitza UBICACIÓ com a ubicació sencera de NOM\n" +" -p ubicació utilitza UBICACIÓ com a ubicació completa per a NOM\n" " -r oblida totes les ubicacions recordades\n" -" -t mostra la ubicació recordada de cada NOM, precedint\n" -" cada ubicació pel corresponent NOM, si hi ha\n" -" múltiples NOMs.\n" +" -t mostra la ubicació recordada per a cada NOM,\n" +" precedint cada ubicació amb el corresponent NOM, si\n" +" hi ha múltiples NOMs.\n" " Arguments:\n" " NOM Es busca NOM en el $PATH i s'afegeix a la llista\n" " d'ordres recordades.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si NOM no es troba o es passa una opció invàlida." +" Torna èxit, excepte si NOM no es troba o passeu una opció invàlida." # help help #: builtins.c:812 @@ -3557,7 +3557,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3570,15 +3570,15 @@ msgstr "" " mostra una llista amb temes d'ajuda.\n" "\n" " Opcions:\n" -" -d mostra una desprició curta de cada tema\n" -" -m mostra la forma d'ús en format de pseudopàgina de manual\n" +" -d mostra una descripció curta de cada tema\n" +" -m mostra la forma d'ús en format de pseudo-pàgina de manual\n" " -s mostra una sinopsi de cada tema corresponent a PATRÓ\n" "\n" " Arguments:\n" -" PATRÓ patró que especifica un tema d'ajuda\n" +" PATRÓ Patró que especifica un tema d'ajuda\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si PATRÓ no es troba o es passa una opció invàlida." +" Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida." #: builtins.c:836 #, fuzzy @@ -3590,7 +3590,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3616,40 +3617,38 @@ msgid "" msgstr "" "Mostra o manipula l'historial.\n" "\n" -" Mostra l'historial amb números de línia, prefixant cada entrada\n" -" modificada amb un `*'. Amb l'argument N, només mostra les N últimes\n" +" Mostra l'historial amb números de línia, indicant les entrades\n" +" modificades amb «*». Amb l'argument N, només mostra les N últimes\n" " entrades.\n" "\n" " Opcions:\n" -" -c esboora totes les entrades de la llista de l'historial\n" +" -c esborra la llista d'entrades\n" " -d offset esborra l'entrada de l'historial a la posició OFFSET\n" -" -a afegeix les línies de la sessió actual al fitxer de\n" -" l'historial\n" -" -n llegeix el fitxer de l'historial\n" +" -a afegeix la sessió actual al fitxer de l'historial\n" +" -n llegeix el fitxer de l'historial i afegeix les línies\n" +" prèviament no llegides a la llista\n" " -r llegeix el fitxer de l'historial i n'afegeix el contingut\n" -" a la llista\n" -" -w escriu l'historial actual al fitxer de l'historial i\n" -" l'afegeix a la llista\n" +" sencer a la llista\n" +" -w escriu l'historial actual al fitxer de l'historial\n" " -p expandeix cada ARG i mostra el resultat, sense desar-lo\n" " a la llista\n" " -s afegeix ARGs a la llista com una única entrada\n" "\n" -" Si s'indica un nom de FITXER, s'utilitza com a fitxer d'historial. En\n" -" cas contrar, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" -" ~/.bash_history.\n" +" Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial. En " +"cas\n" +" contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" +" s'utilitza ~/.bash_history.\n" "\n" " Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n" " valor s'utilitza com a cadena de format strftime(3) per a mostrar " "l'hora\n" " associada a cada entrada de l'historial. En cas contrari no es mostra\n" -" cap hora.\n" +" informació horària.\n" "\n" " Estat de sortida: \n" -" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:872 -#, fuzzy +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3672,31 +3671,32 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" -"Mostra l'estat de tasques.\n" +"Mostra l'estat de feines.\n" "\n" -" Mostra les tasques actives. Si s'especifica TASCA, es restringeix la\n" -" sortida a la tasca especificada. Sense opcions, es mostra l'estat de\n" -" totes les tasques actives.\n" +" Mostra les feines actives. Si especifiqueu FEINA, es restringeix la\n" +" sortida a la feina especificada. Sense opcions, mostra l'estat de " +"totes\n" +" les feines actives.\n" "\n" " Opcions:\n" " -l mostra els IDs de procés a més de la informació normal\n" -" -n mostra només les tasques l'estat de les quals ha\n" +" -n mostra només les feines l'estat de les quals ha\n" " canviat des de l'última notificació\n" " -p mostra només els IDs de procés\n" -" -r restringeix la sortida a les tasques en execució\n" -" -s restringeix la sortida a les tasques aturades\n" +" -r restringeix la sortida a les feines en execució\n" +" -s restringeix la sortida a les feines aturades\n" "\n" " Amb l'opció -x, s'executa ORDRE, després de substituir totes les\n" -" especificacions de tasca per l'ID del procés del líder del grup de\n" -" processos d'aquella tasca, a ARGS.\n" +" especificacions de feina per l'ID del procés del líder del grup de\n" +" processos d'aquella feina, a ARGS.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" -" error. Si s'utilitza -x, torna l'estat de sortida d'ORDRE." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un " +"error.\n" +" Si utilitzeu -x, torna l'estat de sortida d'ORDRE." # help disown -#: builtins.c:899 -#, fuzzy +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3712,23 +3712,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Suprimeix tasques de l'intèrpret en funcionament.\n" +"Deslliga feines vinculades a l'intèrpret actual.\n" "\n" -" Suprimeix TASCA de la taula de tasques actives. Sense TASCA,\n" -" s'interpreta que es refereix a la tasca corrent.\n" +" Suprimeix FEINA de la taula de feines actives. Si no especifiqueu\n" +" FEINA, s'interpreta que us referiu a la feina corrent.\n" "\n" " Opcions:\n" -" -q suprimeix totes les tasques si no s'especifica TASCA\n" -" -h\tmarca TASCA per a no enviar-li un senyal SIGHUP si\n" +" -a suprimeix totes les feines si no especifiqueu FEINA\n" +" -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n" " l'intèrpret rep un SIGHUP\n" -" -r suprimeix totes les tasques en execució\n" +" -r suprimeix totes les feines en execució\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció o TASCA invàlida." +" Torna èxit, excepte si passeu una opció o FEINA invàlida." # help kill -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3750,30 +3749,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Envia un senyal a una tasca.\n" +"Envia un senyal a una feina.\n" "\n" " Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o " -"TASCA.\n" -" Si no s'especifica cap senyal, s'envia un SIGTERM.\n" +"FEINA.\n" +" Si no especifiqueu cap senyal, s'envia un SIGTERM.\n" "\n" " Opcions:\n" " -s senyal SENYAL és el nom d'un senyal\n" " -n númsenyal\tNÚMSENYAL és el número d'un senyal\n" " -l mostra els noms dels senyals; si hi ha arguments \n" -" després de `-l' s'interpreten com a números de\n" +" després de «-l» s'interpreten com a números de\n" " senyals, els noms dels quals s'han de mostrar\n" +" -L sinònim de -l\n" "\n" " kill és una ordre interna per dues raons: perquè això permet usar IDs " "de\n" -" tasca en lloc de IDs de procés, i perquè permet matar processos encara\n" +" feina en lloc de IDs de procés, i perquè permet matar processos encara\n" " que arribeu al límit de processos que se us permet crear.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció no vàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." # help let -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3819,27 +3818,27 @@ msgid "" msgstr "" "Avalua expressions aritmètiques.\n" "\n" -" Avalua ARG com a expressió aritmètica. Les operacions es fan amb " -"enters\n" -" de llargada fixa sense comprovacions de desbordament, tot i que les\n" +" Avalua cada ARG com a expressió aritmètica. Les operacions es fan amb\n" +" enters d'amplada fixa sense comprovacions de desbordament, tot i que " +"les\n" " divisions per 0 es detecten i es marquen com a error. La següent " "llista\n" -" mostra els operadors, agrupats per nivells d'igual precedència. Els\n" -" nivells estan llistats en ordre descendent de precedència.\n" +" mostra els operadors, agrupats en nivells d'igual precedència. Els\n" +" nivells apareixen en ordre descendent de precedència.\n" "\n" " \tid++, id--\tpostincrement, postdecrement\n" " \t++id, --id\tpreincrement, predecrement\n" " \t-, +\t\tnegatiu, positiu unaris\n" -" \t!, ~\t\tnegació lògica i binària\n" +" \t!, ~\t\tnegació lògica i a nivell de bits\n" " \t**\t\texponenciació\n" " \t*, /, %\t\tmultiplicació, divisió, residu\n" " \t+, -\t\taddició, subtracció\n" -" \t<<, >>\t\tdesplaçament binari a l'esquerra i a la dreta\n" +" \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n" " \t<=, >=, <, >\tcomparació\n" " \t==, !=\t\tigualtat, desigualtat\n" -" \t&\t\tAND binari\n" -" \t^\t\tXOR binari\n" -" \t|\t\tOR binari\n" +" \t&\t\tAND a nivell de bits\n" +" \t^\t\tXOR a nivell de bits\n" +" \t|\t\tOR a nivell de bits\n" " \t&&\t\tAND lògic\n" " \t||\t\tOR lògic\n" " \texpr ? expr : expr\n" @@ -3848,19 +3847,19 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tassignació\n" "\n" -" S'admeten variables com a operands. El nom de la variable se\n" -" substitueix pel seu valor (convertit en enter d'amplada fixa). La\n" -" variable no cal que tingui l'atribut d'enter perquè pugui aparèixer en\n" -" una expressió aritmètica.\n" +" S'admeten variables de l'intèrpret com a operands. El nom de la\n" +" variable se substitueix pel seu valor (convertit en enter d'amplada\n" +" fixa). No cal que la variable tingui l'atribut d'enter perquè pugui\n" +" aparèixer en una expressió aritmètica.\n" "\n" -" Els operadors s'avaluen per ordre de precedència. Les subexpressions\n" +" Els operadors s'avaluen en ordre de precedència. Les subexpressions\n" " entre parèntesis s'avaluen primer, independentment de les regles de\n" " precedència anteriors.\n" "\n" " Estat de sortida:\n" -" Si l'últim ARG s'avalua en 0, let torna 1; altrament torna 0." +" Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3882,7 +3881,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3912,34 +3911,34 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"Llegeix una línia a l'entrada estàndard i la separa en camps.\n" +"Llegeix una línia a l'entrada estàndard i la divideix en camps.\n" "\n" -" Llegeix una sola línia a l'entrada estàndard, o al descriptor de\n" -" fitxer FD si s'especifica l'opció -u. La línia se separa en camps,\n" -" segons les mateixes regles que en la separació de paraules, i la " -"primera\n" +" Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n" +" FD si especifiqueu l'opció -u. La línia es divideix en camps, segons\n" +" les mateixes regles que en la separació de paraules, i la primera\n" " paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n" " que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n" " es reconeixen com a delimitadors de paraula els caràcters que conté la\n" " variable $IFS.\n" "\n" -" Si no s'especifica cap NOM, llavors la línia llegida es desa a la\n" +" Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n" " variable REPLY.\n" "\n" " Opcions:\n" " -a vector\tassigna les paraules llegides a VECTOR, de forma " "seqüencial\n" " començant des de l'índex número 0.\n" -" -d delim\tsegueix llegint fins a trobar el caràcter DELIM, en lloc de\n" +" -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc " +"de\n" " fins a trobar un salt de línia\n" " -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n" " la línia\n" " -i text\tUtilitza TEXT com a text inicial per a Readline\n" -" -n núm\ttorna després de llegir exactament NÚM caràcters en lloc\n" -" d'esperar fins a trobar un salt de línia, però tenint en\n" -" compte el delimitador si s'han llegit menys de NÚM " -"caràcters\n" -" abans del delimitador\n" +" -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n" +" trobi el delimitador si apareix abans de NÚM caràcters\n" +" -N núm torna només després de llegir exactament NÚM caràcters,\n" +" excepte si es troba EOF o s'esgota el temps d'espera,\n" +" i ignora qualsevol delimitador\n" " -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n" " afegit, abans d'intentar llegir res\n" " -r prohibeix escapar caràcters amb una barra invertida\n" @@ -3949,24 +3948,23 @@ msgstr "" " aconseguit llegir una línia sencera. Per defecte, el límit\n" " de temps és el valor de la variable TMOUT. TEMPS pot ser " "un\n" -" número decimal. Si TEMPS és 0, read torna immediatament,\n" -" sense intentar llegir cap dada, i torna èxit només si hi ha\n" -" dades disponibles en el descriptor de fitxer FD " -"especificat.\n" -" L'estat de sortida és més gran que 128 si s'arriba al temps\n" -" límit\n" -" -u fd llegeix dades al descriptor de fitxer FD, en lloc de\n" +" número amb decimals. Si TEMPS és 0, read torna\n" +" immediatament, sense intentar llegir cap dada, i torna èxit\n" +" només si hi ha dades disponibles en el descriptor de fitxer\n" +" FD especificat. Un estat de sortida més gran que 128 " +"indica\n" +" que s'ha esgotat el temps d'espera.\n" +" -u fd llegeix dades al descriptor de fitxer FD, en lloc de a\n" " l'entrada estàndard.\n" "\n" " Estat de sortida:\n" -" El codi de retorn és zero, excepte si es troba final-de-fitxer, " -"s'arriba\n" -" al límit de temps (en aquest cas, és major que 128), es produeix un\n" -" error d'assignació de variable, o s'especifica un descriptor de fitxer\n" -" invàlid amb l'opció -u." +" El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n" +" s'arriba al límit de temps (en aquest cas, és major que 128), es\n" +" produeix un error d'assignació de variable, o si heu especificat un\n" +" descriptor de fitxer invàlid amb l'opció -u." # help return -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3979,16 +3977,14 @@ msgid "" msgstr "" "Torna des d'una funció de l'intèrpret.\n" "\n" -" Provoca que una funció o script executat amb `source' torni amb el " -"valor\n" +" Provoca que una funció o script executat amb «source» torni amb el valor\n" " de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n" " de l'última ordre executada dins la funció o script.\n" "\n" " Estat de sortida:\n" " Torna N, o fallada si l'intèrpret no està executant cap funció o script." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4073,26 +4069,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Activa o desactiva opcions de l'intèrpret i estableix paràmetres\n" -"posicionals.\n" +"Estableix opcions de l'intèrpret i paràmetres posicionals.\n" "\n" -" Modifica el valor dels atributs de l'intèrpret i dels paràmetres\n" -" posicionals, o mostra els noms i valors de les variables de " -"l'intèrpret.\n" +" Modifica el valor d'atributs de l'intèrpret i de paràmetres " +"posicionals,\n" +" o mostra els noms i valors de les variables de l'intèrpret.\n" "\n" " Opcions:\n" " -a Exporta les variables que es creïn o es modifiquin.\n" -" -b Notifica la finalització de tasques de forma immediata.\n" +" -b Notifica immediatament la finalització de feines.\n" " -e Surt immediatament si una ordre acaba amb estat diferent de zero.\n" -" -f Deshabilita la generació de noms de fitxers (globbing).\n" -" -h Recorda la ubicació de les ordres a mesura que s'utilitzen.\n" -" -k Col·loca tots els arguments que són assignacions a l'entorn de\n" -" l'ordre que s'executa, i no només aquells que precedeixen el nom\n" -" de l'ordre.\n" -" -m Activa el control de tasques.\n" +" -f Deshabilita la generació de noms de fitxers («globbing»).\n" +" -h Recorda la ubicació de les ordres que s'executen.\n" +" -k Afegeix tots els arguments en forma d'assignació a l'entorn de\n" +" l'ordre, no només aquells que precedeixen el nom de l'ordre.\n" +" -m Activa la gestió de feines.\n" " -n Llegeix ordres, però sense executar-les.\n" -" -o nom-opció\n" -" Defineix la variable corresponent a nom-opció:\n" +" -o opció\n" +" Estableix la variable corresponent a OPCIÓ:\n" " allexport igual que -a\n" " braceexpand igual que -B\n" " emacs utilitza una interfície d'edició estil emacs\n" @@ -4104,7 +4098,7 @@ msgstr "" " history activa l'historial\n" " ignoreeof l'intèrpret no surt en cas de trobar EOF\n" " interactive-comments\n" -" permet comentaris a les ordres interactives\n" +" permet comentaris en ordres interactives\n" " keyword igual que -k\n" " monitor igual que -m\n" " noclobber igual que -C\n" @@ -4115,21 +4109,20 @@ msgstr "" " nounset igual que -u\n" " onecmd igual que -t\n" " physical igual que -P\n" -" pipefail el valor retornat per una canalització és " -"l'estat\n" -" de l'última ordre que ha acabat amb estat\n" -" no-zero, o zero si cap ordre ha acabat amb estat\n" -" diferent de zero\n" -" posix ajusta el comportament de bash al dictaminat per\n" -" l'estàndard Posix\n" +" pipefail el valor retornat per una canonada és l'estat de\n" +" l'última ordre que ha acabat amb estat no-zero,\n" +" o zero si cap ordre ha acabat amb estat diferent\n" +" de zero\n" +" posix ajusta el comportament de bash a l'estàndard " +"Posix\n" " privileged igual que -p\n" " verbose igual que -v\n" " vi usa una interfície d'edició estil vi\n" " xtrace igual que -x\n" -" -p S'activa automàticament sempre que les ids efectiva i real de\n" -" l'usuari no coincideixin. Omet processar el fitxer $ENV i\n" -" la importació de funcions. Si desactiveu aquesta opció, els\n" -" valors de l'uid i gid reals s'assignen a l'uid i gid efectius.\n" +" -p S'activa automàticament sempre que els ids efectiu i real de\n" +" l'usuari no coincideixin. No processa el fitxer $ENV ni importa\n" +" funcions. Si desactiveu aquesta opció, els valors de l'uid i gid\n" +" reals s'assignen a l'uid i gid efectius.\n" " -t Surt després de llegir i executar una única ordre.\n" " -u Tracta les variables no definides com a error, en substitucions.\n" " -v Escriu les línies de l'entrada a la sortida.\n" @@ -4138,32 +4131,30 @@ msgstr "" " -C Prohibeix la sobrescriptura de fitxers ordinaris mitjançant\n" " redireccions.\n" " -E Intercepta senyals ERR també durant l'execució de funcions.\n" -" -H Habilita l'expansió d'exclamacions (!). Aquesta opció està " -"activa\n" -" per defecte si la sessió és interactiva.\n" +" -H Activa la substitució d'elements de l'historial. Aquesta opció\n" +" està activa per defecte si la sessió és interactiva.\n" " -P Omet la resolució d'enllaços simbòlics a l'hora d'executar ordres\n" -" que canvien el directori corrent tals com cd.\n" -" -T Intercepta senyals DEBUG també durant l'execució de funcions.\n" -" -- Assigna els arguments restants als respectius paràmetres\n" -" posicionals. Si no queda cap argument restant, suprimeix els\n" -" paràmetres posicionals.\n" -" - Assigna els arguments restants als respectius paràmetres\n" -" posicionals. Desactiva les opcions -x i -v.\n" -"\n" -" Un signe + en lloc de - serveix per a desactivar l'opció. Els " -"arguments\n" -" que controlen les opcions també es poden utilitzar a l'hora d'invocar\n" -" l'intèrpret. El conjunt d'opcions actives es pot trobar a $-. La " -"resta\n" -" d'arguments són paràmetres posicionals i s'assignen per ordre a $1, $2,\n" -" ... $n. Si no s'especifica cap ARG, es mostren totes les variables\n" -" definides.\n" +" que canvien el directori corrent, tals com cd.\n" +" -T Intercepta senyals DEBUG i RETURN també durant l'execució de\n" +" funcions.\n" +"\n" +" -- Assigna els arguments restants a paràmetres posicionals. Si no\n" +" queda cap argument, suprimeix els paràmetres posicionals.\n" +" \n" +" - Assigna els arguments restants a paràmetres posicionals.\n" +" Desactiva les opcions -x i -v.\n" +"\n" +" Un signe + en lloc de - desactiva l'opció corresponent. Els arguments\n" +" que controlen les opcions es poden utilitzar a l'hora d'invocar\n" +" l'intèrpret. El conjunt d'opcions actives en aquest intèrpret es pot\n" +" trobar a $-. La resta d'arguments són paràmetres posicionals i\n" +" s'assignen per ordre a $1, $2, ... $n. Si no especifiqueu cap ARG, es\n" +" mostren totes les variables definides.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida." +" Torna èxit, excepte si especifiqueu una opció no vàlida." -#: builtins.c:1132 -#, fuzzy +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4184,26 +4175,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -"Suprimeix el valor i els atributs de variables i funcions.\n" +"Suprimeix el valor i atributs de variables i funcions.\n" "\n" " Per a cada NOM, suprimeix la corresponent variable o funció.\n" "\n" " Opcions:\n" -" -f tracta NOM com una funció\n" -" -v tracta NOM com una variable\n" -" -n tracta NOM com una variable referència i suprimeix la\n" -" pròpia variable, en lloc de la variable a què es refereix\n" +" -f interpreta NOM com a funció\n" +" -v interpreta NOM com a variable\n" +" -n interpreta NOM com a referència a una altra variable, i\n" +" suprimeix aquesta variable, en lloc de la variable a què\n" +" es refereix\n" "\n" " Sense opcions, primer intenta suprimir una variable, i si això falla\n" " intenta suprimir una funció.\n" "\n" -" Algunes variables no poden ser suprimides; per ex., vegeu `readonly'.\n" +" Algunes variables no poden ser suprimides; per ex., vegeu «readonly».\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM és una\n" -" variable o funció de només-lectura." +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n" +" variable o funció de només lectura." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4229,18 +4221,17 @@ msgstr "" "\n" " Opcions:\n" " -f tracta NOM com a funció\n" -" -n suprimeix la propietat d'exportació de NOM\n" +" -n suprimeix la propietat d'exportació per a NOM\n" " -p mostra una llista amb totes les variables i funcions\n" " exportades\n" " \n" -" L'argument `--' atura el processament de més opcions.\n" +" L'argument «--» atura el processament de més opcions.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1173 -#, fuzzy +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4260,28 +4251,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -"Marca variables com no modificables.\n" +"Marca variables com a no modificables.\n" "\n" -" Marca cada NOM com a variable o funció de només-lectura; els valors\n" -" d'aquests NOMs no podran ser modificats en assignacions subseqüents. " -"Si\n" +" Marca cada NOM com a variable o funció de només lectura; els valors\n" +" d'aquests NOMs es poden modificar en assignacions subseqüents. Si\n" " especifiqueu VALOR, s'assigna VALOR a la variable o funció abans de\n" -" marcar-la com a només-lectura.\n" +" marcar-la com a només lectura.\n" "\n" " Opcions:\n" -" -a opera sobre vectors indexats\n" -" -A opera sobre vectors associatius\n" -" -f opera sobre funcions\n" -" -p mostra una llista amb totes les variables i funcions\n" -" \t\tde només-lectura\n" +" -a limita la sortida a vectors indexats\n" +" -A limita la sortida a vectors associatius\n" +" -f limita la sortida a funcions\n" +" -p mostra una llista amb totes les variables o funcions,\n" +" depenent de si heu especificat l'opció -f, de només lectura\n" "\n" -" L'argument `--' atura el processament de més opcions.\n" +" L'argument «--» atura el processament de més opcions.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n" " vàlid." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4300,7 +4290,7 @@ msgstr "" " Estat de sortida:\n" " Torna èxit, excepte si N és negatiu o més gran que $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4317,14 +4307,14 @@ msgstr "" "\n" " Llegeix les ordres que hi ha a FITXER i les executa a l'intèrpret\n" " actual. Les entrades a $PATH s'utilitzen per a localitzar el directori\n" -" que conté FITXER. Si s'especifica qualsevol ARG, aquests arguments es\n" +" que conté FITXER. Si especifiqueu qualsevol ARG, aquests arguments es\n" " converteixen en paràmetres posicionals quan s'executa FITXER.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n" " es pot llegir." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4339,18 +4329,17 @@ msgid "" msgstr "" "Suspèn l'execució de l'intèrpret.\n" "\n" -" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT.\n" -" Si no es força, les sessions d'entrada no es poden suspendre.\n" +" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. " +"Si\n" +" no es força, les sessions d'entrada no es poden suspendre.\n" "\n" -" Opcions:\n" -" -f força la suspensió, encara que sigui una sessió d'entrada\n" +" Opcions:\n" +" -f força la suspensió, encara que sigui una sessió d'entrada\n" "\n" -" Estat de sortida:\n" -" Torna èxit, excepte si no hi ha control de tasques o es produeix un\n" -" error." +" Estat de sortida:\n" +" Torna èxit, excepte si no hi ha control de feines o es produeix un error." -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4437,11 +4426,11 @@ msgstr "" " Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. " "Les\n" " expressions poden ser unàries o binàries. Les expressions unàries\n" -" s'utilitzen sovint per a determinar l'estat de fitxers. També hi ha\n" -" operadors de cadenes, i operadors de comparació numèrica.\n" +" s'utilitzen sovint per a determinar l'estat de fitxers. També podeu\n" +" utilitzar operadors de cadenes, i operadors de comparació numèrica.\n" "\n" -" El comportament de test depèn del nombre d'arguments. Podeu trobar-ne\n" -" una especificació completa a la plana del manual de bash.\n" +" El comportament de test depèn del nombre d'arguments. Podeu trobar\n" +" l'especificació completa a la plana del manual de bash.\n" "\n" " Operadors de fitxer:\n" "\n" @@ -4451,27 +4440,27 @@ msgstr "" " -d FITXER Cert si el fitxer és un directori.\n" " -e FITXER Cert si el fitxer existeix.\n" " -f FITXER Cert si el fitxer existeix i és ordinari.\n" -" -g FITXER Cert si el bit set-group-id està activat.\n" +" -g FITXER Cert si el bit «set-group-id» està activat.\n" " -h FITXER Cert si el fitxer és un enllaç simbòlic.\n" " -L FITXER Cert si el fitxer és un enllaç simbòlic.\n" -" -k FITXER Cert si el bit sticky està activat.\n" -" -p FITXER Cert si el fitxer és una canalització.\n" +" -k FITXER Cert si el bit «sticky» està activat.\n" +" -p FITXER Cert si el fitxer és una canonada.\n" " -r FITXER Cert si teniu permís per a llegir el fitxer.\n" " -s FITXER Cert si el fitxer existeix i no està buit.\n" -" -S FITXER Cert si el fitxer és un socket.\n" +" -S FITXER Cert si el fitxer és un «socket».\n" " -t FD Cert si FD està obert i es refereix a un terminal.\n" -" -u FITXER Cert si el bit set-user-id està activat.\n" +" -u FITXER Cert si el bit «set-user-id» està activat.\n" " -w FITXER Cert si teniu permís per a escriure al fitxer.\n" " -x FITXER Cert si teniu permís per a executar el fitxer.\n" -" -O FITXER Cert si el fitxer és propietat vostra.\n" -" -G FITXER Cert si el fitxer és propietat del vostre grup.\n" +" -O FITXER Cert si el vostre usuari és propietari del fitxer.\n" +" -G FITXER Cert si el vostre grup és propietari del fitxer.\n" " -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n" "\n" " FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons " "la\n" " data de modificació).\n" "\n" -" FITXER1 -ot FITXER2 Cert si fitxer1 és més vell que fitxer2.\n" +" FITXER1 -ot FITXER2 Cert si fitxer1 és més antic que fitxer2.\n" "\n" " FITXER1 -ef FITXER2 Cert si fitxer1 és un enllaç dur a fitxer2.\n" "\n" @@ -4495,24 +4484,24 @@ msgstr "" " -o OPCIÓ Cert si l'opció de l'intèrpret està activada.\n" " -v VAR Cert si la variable VAR està definida.\n" " -R VAR Cert si la variable VAR està definida i és una \n" -" variable referència.\n" +" referència a una altra variable.\n" " ! EXPR Cert si expr és fals.\n" " EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n" -" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són cert.\n" +" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n" "\n" " arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -" "gt,\n" " o -ge.\n" "\n" -" Els operadors aritmètics binaris tornen cert si ARG1 és igual,\n" -" no igual, menys que, menys que o igual, més que, o més que o igual\n" -" que ARG2, respectivament.\n" +" Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n" +" igual, més petit que, més petit que o igual, més gran que, o més gran\n" +" que o igual que ARG2, respectivament.\n" "\n" " Estat de sortida:\n" " Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n" -" fals o s'especifica un argument no vàlid." +" fals o si especifiqueu un argument no vàlid." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4522,10 +4511,10 @@ msgstr "" "Avalua una expressió condicional.\n" "\n" " Aquesta ordre interna és un sinònim de \"test\", amb la diferència que\n" -" l'últim argument ha de ser un signe `]' que tanqui el `[' inicial." +" l'últim argument ha de ser un signe «]» que tanqui el «[» inicial." # help times -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4545,7 +4534,7 @@ msgstr "" " Estat de sortida:\n" " Sempre reïx." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4590,46 +4579,41 @@ msgid "" msgstr "" "Intercepta senyals i altres esdeveniments.\n" "\n" -" Defineix i activa controladors de senyal que s'executen quan\n" -" l'intèrpret rep senyals o en altres circumstàncies.\n" -"\n" -" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep el\n" -" senyal especificat per SENYAL. Si no hi ha ARG (i s'especifica un\n" -" únic SENYAL) o és `-', llavors cada senyal es restableix al seu valor\n" -" original. Si ARG és una cadena nul·la, llavors SENYAL és ignorat per\n" -" l'intèrpret i per tots els programes invocats per l'intèrpret.\n" -"\n" -" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si " -"SENYAL\n" -" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, " -"ARG\n" -" s'executa cada cop que una funció o script executat amb l'ordre `.' o\n" -" `source' finalitza l'execució. Si SENYAL és ERR, ARG s'executa en " -"els\n" -" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -" -"e\n" -" estigués activada.\n" -"\n" -" Si no s'especifica cap argument, trap mostra una llista d'ordres\n" -" associades a cada senyal.\n" -"\n" -" Opcions:\n" -" -l mostra una llista amb els noms dels senyals i els números\n" -" corresponents\n" -" -p\tmostra els controladors de senyal associats a cada SENYAL\n" -"\n" -" Cada SENYAL és o bé un nom de senyal definit al fitxer o " -"bé\n" -" un número de senyal. Els noms de senyal no són sensibles a la\n" -" capitalització i el prefix SIG és opcional. Podeu enviar un senyal a\n" -" l'intèrpret amb l'ordre \"kill -senyal $$\".\n" -"\n" -" Estat de sortida: \n" -" Torna èxit, excepte si algun SENYAL no és vàlid o s'especifica una\n" -" ordre no vàlida." - -#: builtins.c:1393 -#, fuzzy +" Defineix i activa controladors de senyal, que són executats quan\n" +" l'intèrpret rep senyals o en altres circumstàncies.\n" +"\n" +" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep " +"SENYAL.\n" +" Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n" +" és restablert al seu valor original. Si ARG és una cadena nul·la,\n" +" aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n" +" invocats per l'intèrpret.\n" +"\n" +" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si SENYAL\n" +" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, ARG\n" +" s'executa cada cop que una funció o script executat amb l'ordre «.» o\n" +" «source» finalitza l'execució. Si SENYAL és ERR, ARG s'executa en els\n" +" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -e\n" +" estigués activada.\n" +"\n" +" Si no especifiqueu cap argument, trap mostra una llista d'ordres\n" +" associades a cada senyal.\n" +"\n" +" Opcions:\n" +" -l mostra una llista amb els noms dels senyals i els números\n" +" corresponents\n" +" -p mostra els controladors de senyal associats a cada SENYAL\n" +"\n" +" Cada SENYAL és o bé un nom de senyal definit al fitxer o bé\n" +" un número de senyal. Els noms de senyal no són sensibles a les\n" +" majúscules i el prefix SIG és opcional. Podeu enviar un senyal a\n" +" l'intèrpret amb l'ordre «kill -senyal $$».\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n" +" ordre no vàlida." + +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4660,37 +4644,32 @@ msgid "" msgstr "" "Mostra informació sobre el tipus d'ordre.\n" "\n" -" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" -"\n" -" Opcions:\n" -" -a mostra totes les ubicacions que contenen un executable\n" -" anomenat NOM; inclou àlies, ordres internes i funcions, si,\n" -" i només si, no s'usa conjuntament amb l'opció `-p'\n" -" -f omet cercar de funcions\n" -" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" -" àlies, ordre interna o funció, i torna el nom del fitxer " -"que\n" -" s'executaria\n" -" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" -" `type -t NOM' no hauria indicat `fitxer'.\n" -" -t torna només una paraula, que és o `àlies', o `paraula " -"clau',\n" -" o `funció', o `ordre interna', o `fitxer', o bé `', " -"depenent\n" -" de si NOM és un àlies, una paraula reservada de " -"l'intèrpret,\n" -" una funció, una ordre interna, un fitxer, o no es pot\n" -" trobar, respectivament.\n" -"\n" -" Arguments:\n" -" NOM El nom de l'ordre que s'ha d'interpretar.\n" +" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" "\n" -" Estat de sortida:\n" -" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no\n" -" es pot trobar." +" Opcions:\n" +" -a mostra totes les ubicacions que contenen un executable\n" +" anomenat NOM, incloent àlies, ordres internes i funcions si i\n" +" només si no s'usa conjuntament amb l'opció «-p»\n" +" -f omet la cerca de funcions\n" +" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" +" àlies, ordre interna o funció, i torna el nom del fitxer que\n" +" s'executaria\n" +" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" +" «type -t NOM» no indica «fitxer».\n" +" -t torna només una paraula, que és «àlies», «paraula clau»,\n" +" «funció», «ordre interna», «fitxer», o bé «», depenent de si\n" +" NOM és un àlies, una paraula reservada de l'intèrpret, una\n" +" funció, una ordre interna, un fitxer, o no es pot trobar,\n" +" respectivament.\n" +"\n" +" Arguments:\n" +" NOM El nom de l'ordre a interpretar.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n" +" pot trobar." -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4741,22 +4720,24 @@ msgstr "" "Canvia els límits d'utilització de recursos per part de l'intèrpret.\n" "\n" " Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n" -" i per als processos que crea, en els sistemes que admeten tal control.\n" +" d'ordres i per als processos que aquest crea, en els sistemes que\n" +" admeten tal control.\n" "\n" " Opcions:\n" -" -S estableix límits `tous'\n" -" -H estableix límits `durs'\n" +" -S estableix una limitació «tova»\n" +" -H estableix una limitació «dura»\n" " -a\tmostra tots els límits establerts\n" -" -b\tmida màxima dels buffers per a sockets\n" -" -c\tmida màxima dels fitxers `core'\n" +" -b\tmida màxima de la memòria intermèdia per a «sockets»\n" +" -c\tmida màxima dels fitxers de bolcat de memòria\n" " -d\tmida màxima del segment de dades d'un procés\n" -" -e\tprioritat màxima d'un procés (`nice')\n" +" -e\tprioritat màxima d'un procés («nice»)\n" " -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n" " -i\tnombre màxim de senyals pendents\n" +" -k nombre màxim de cues («kqueue») obertes per a aquest procés\n" " -l\tquantitat màxima de memòria que un procés pot blocar\n" " -m\tmida màxima del conjunt resident (RSS)\n" " -n\tnombre màxim de descriptors de fitxers oberts\n" -" -p\tmida màxima dels buffers per a canalitzacions\n" +" -p\tmida màxima de la memòria intermèdia per a canonades\n" " -q\tnombre màxim d'octets a les cues de missatges POSIX\n" " -r\tprioritat màxima de temps-real\n" " -s\tmida màxima de la pila\n" @@ -4764,16 +4745,16 @@ msgstr "" " -u\tnombre màxim de processos d'usuari\n" " -v\tmida de la memòria virtual\n" " -x\tnombre màxim de fitxers de bloqueig\n" +" -P nombre màxim de pseudoterminals\n" " -T nombre màxim de fils d'execució\n" "\n" " Algunes opcions poden no estar disponibles en algunes plataformes.\n" "\n" -" Si s'especifica un LÍMIT, s'utilitza com a nou valor per al recurs en\n" -" qüestió; els valors especials de LÍMIT són `soft', `hard' i " -"`unlimited',\n" -" que signifiquen límit tou actual, límit dur actual, i sense límit,\n" -" respectivament. En cas contrari, es mostra el valor actual per al\n" -" recurs especificat. Si no s'especifica cap opció, se suposa -f.\n" +" Si especifiqueu un LÍMIT, aquest s'utilitza com a nou valor per al\n" +" recurs indicat; els valors especials de LÍMIT són «soft», «hard» i\n" +" «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n" +" límit, respectivament. En cas contrari, es mostra el valor actual per\n" +" al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n" "\n" " Els valors s'indiquen en increments de 1024 octets, excepte en el cas " "de\n" @@ -4781,11 +4762,10 @@ msgstr "" " -u, que és en nombre de processos.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si s'especifica una opció no vàlida o es produeix " -"un\n" +" Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n" " error." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4808,7 +4788,7 @@ msgstr "" " mostra el valor actual de la màscara.\n" "\n" " Si MODE comença amb un dígit, s'interpreta com a número octal; en cas\n" -" contrari és una cadena de mode simbòlic com les que accepta chmod(1).\n" +" contrari és una cadena de mode simbòlica com les que accepta chmod(1).\n" "\n" " Opcions:\n" " -p sense MODE, mostra la sortida en un format que es pot\n" @@ -4817,9 +4797,10 @@ msgstr "" " número octal\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si MODE no és vàlid o es passa una opció no vàlida." +" Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4827,31 +4808,34 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -"Espera la finalització de tasques i en retorna l'estat de sortida.\n" +"Espera la finalització de feines i en retorna l'estat de sortida.\n" "\n" " Espera que cada procés identificat per un ID, que pot ser l'ID del\n" -" procés o una especificació de tasca, acabi d'executar-se, i en torna\n" -" l'estat de sortida. Si no s'especifica ID, espera que acabin\n" -" d'executar-se tots els processos inferiors, i surt amb estat zero. Si\n" -" ID és una especificació de tasca, espera cada un dels processos a la\n" -" canalització d'aquella tasca.\n" +" procés o una especificació de feina, acabi d'executar-se, i en torna\n" +" l'estat de sortida. Si ometeu ID, espera que acabin d'executar-se tots\n" +" els processos inferiors, i surt amb estat zero. Si ID és una\n" +" especificació de feina, espera cada un dels processos a la canonada\n" +" d'aquella feina.\n" "\n" " Estat de sortida:\n" -" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o es\n" -" passa una opció no vàlida." +" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o " +"passeu\n" +" una opció no vàlida." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4868,7 +4852,7 @@ msgstr "" "Espera la finalització de processos i en retorna l'estat de sortida.\n" "\n" " Espera que cada procés, identificat per PID, acabi d'executar-se, i en\n" -" mostra l'estat de sortida. Si no s'especifica PID, espera que acabin\n" +" mostra l'estat de sortida. Si no especifiqueu PID, espera que acabin\n" " d'executar-se tots els processos inferiors, i surt amb estat zero. PID\n" " ha de ser un ID de procés.\n" "\n" @@ -4876,7 +4860,7 @@ msgstr "" " Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n" " passa una opció no vàlida." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4890,16 +4874,15 @@ msgid "" msgstr "" "Executa ordres per a cada element d'una llista.\n" "\n" -" Els bucles `for' executen una seqüència d'ordres per a cada un dels\n" -" elements d'una llista. Si `in PARAULES ...;' s'omet, aleshores se\n" -" suposa `in \"$@\"'. Per a cada element de la llista PARAULES, " -"l'element\n" +" Els bucles «for» executen una seqüència d'ordres per a cada un dels\n" +" elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n" +" suposa «in \"$@\"». Per a cada element de la llista PARAULES, l'element\n" " s'assigna a NOM, i les ORDRES s'executen.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4915,7 +4898,7 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Bucle `for' aritmètic.\n" +"Bucle «for» aritmètic.\n" "\n" " Equivalent a\n" " \t(( EXP1 ))\n" @@ -4931,7 +4914,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4954,8 +4937,7 @@ msgstr "" "\n" " Les PARAULES s'expandeixen i generen una llista de paraules. Les\n" " paraules expandides s'envien a la sortida d'errors estàndard, cada una\n" -" precedida per un número. Si `in PARAULES' s'omet, se suposa `in \"$@" -"\"'.\n" +" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n" " Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n" " estàndard. Si la línia correspon amb el número d'alguna de les " "paraules\n" @@ -4964,13 +4946,13 @@ msgstr "" " EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n" " el valor nul a NOM. La línia llegida s'assigna a la variable REPLY.\n" " Les ORDRES s'executen després de cada selecció fins a trobar una ordre\n" -" `break'.\n" +" «break».\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." # help time -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4985,11 +4967,12 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" -"Informa del temps consumit durant l'execució d'una canalització.\n" +"Informa del temps transcorregut durant l'execució d'una canonada.\n" "\n" -" Executa CANALITZACIÓ i mostra un resum del temps real, el temps de CPU\n" -" d'usuari i el temps de CPU de sistema consumit durant l'execució de\n" -" CANALITZACIÓ.\n" +" Executa CANONADA i mostra un resum del temps real, el temps de CPU\n" +" d'usuari i el temps de CPU de sistema transcorregut durant l'execució " +"de\n" +" CANONADA.\n" "\n" " Opcions:\n" " -p mostra el resum de temps en format POSIX portable\n" @@ -4997,9 +4980,9 @@ msgstr "" " El valor de la variable TIMEFORMAT s'utilitza per formatar la sortida.\n" "\n" " Estat de sortida:\n" -" L'estat de sortida és l'estat de sortida de la CANALITZACIÓ." +" L'estat de sortida és l'estat de sortida de la CANONADA." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5013,12 +4996,12 @@ msgstr "" "\n" " Executa ORDRES de forma selectiva en funció de si PARAULA coincideix " "amb\n" -" PATRÓ. El signe `|' serveix per a separar múltiples patrons.\n" +" PATRÓ. El signe «|» serveix per a separar múltiples patrons.\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5040,11 +5023,11 @@ msgid "" msgstr "" "Executa ordres en funció d'una condició.\n" "\n" -" Executa la llista `if ORDRES'. Si l'estat de sortida és zero, llavors\n" -" també executa la llista `then ORDRES'. En cas contrari cada una de les\n" -" llistes `elif ORDRES' és executada i en cas d'acabar amb estat de\n" -" sortida zero, també s'executa la corresponent llista `then ORDRES', i\n" -" l'ordre if finalitza. En cas contrari, la llista `else ORDRES'\n" +" Executa la llista «if ORDRES». Si l'estat de sortida és zero, llavors\n" +" també executa la llista «then ORDRES». En cas contrari cada una de les\n" +" llistes «elif ORDRES» és executada i en cas d'acabar amb estat de\n" +" sortida zero, també s'executa la corresponent llista «then ORDRES», i\n" +" l'ordre if finalitza. En cas contrari, la llista «else ORDRES»\n" " s'executa, si és que existeix. L'estat de sortida la construcció\n" " sencera és l'estat de sortida de l'última ordre executada, o zero si " "cap\n" @@ -5053,7 +5036,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5066,12 +5049,12 @@ msgstr "" "Executa ordres repetidament mentre es compleixi una condició.\n" "\n" " Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" ORDRES `while' tingui estat de sortida igual a zero.\n" +" «ORDRES while» tingui estat de sortida igual a zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5084,14 +5067,13 @@ msgstr "" "Executa ordres repetidament mentre no es compleixi una condició.\n" "\n" " Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" -" ORDRES `until' tingui estat de sortida diferent de zero.\n" +" ORDRES «until» tingui estat de sortida diferent de zero.\n" "\n" " Estat de sortida:\n" " Torna l'estat de l'última ordre executada." # help coproc -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5107,14 +5089,14 @@ msgstr "" "\n" " Executa ORDRE de forma asincrònica, amb la sortida estàndard i " "l'entrada\n" -" estàndard de l'ordre connectades via canalització als descriptors de\n" -" fitxer assignats als índexs 0 i 1 del vector NOM a l'intèrpret en\n" -" execució. Per defecte NOM és \"COPROC\".\n" +" estàndard de l'ordre connectades via canonada als descriptors de fitxer\n" +" assignats als índexs 0 i 1 de la variable vector NOM. Per defecte NOM\n" +" és \"COPROC\".\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida d'ORDRE." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5136,9 +5118,9 @@ msgstr "" " $1...$n, i el nom de la funció es troba a $FUNCNAME.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si NOM és de només-lectura." +" Torna èxit, excepte si NOM és de només lectura." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5156,7 +5138,7 @@ msgstr "" " Estat de sortida:\n" " Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5169,20 +5151,19 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"Reprèn una tasca i la porta al primer pla.\n" +"Reprèn una feina i la porta al primer pla.\n" "\n" -" Equivalent a utilitzar TASCA com a argument en l'ordre `fg'. Reprèn " -"una\n" -" tasca aturada o en segon pla. TASCA pot ser el nom d'una tasca, o el\n" -" número d'una tasca. Si es troba un `&' després de TASCA, llavors la\n" -" tasca s'envia en un segon pla, com si l'especificació de tasca\n" -" s'utilitzés com a argument en l'ordre `bg'.\n" +" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn una\n" +" feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n" +" número d'una feina. Si es troba un «&» després de FEINA, llavors la\n" +" feina s'envia en un segon pla, com si l'especificació de feina\n" +" s'utilitzés com a argument en l'ordre «bg».\n" "\n" " Estat de sortida:\n" " Torna l'estat de sortida de la feina represa." # help '((' -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5201,7 +5182,7 @@ msgstr "" " Si el resultat de l'avaluació és 0, torna 1; altrament torna 0." # help '[[' -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5232,7 +5213,7 @@ msgstr "" "\n" " Torna un estat 0 o 1, depenent del resultat de l'avaluació de\n" " l'expressió condicional EXPRESSIÓ. Les expressions es componen dels\n" -" mateixos elements que en l'ordre interna `test', i es poden combinar\n" +" mateixos elements que en l'ordre interna «test», i es poden combinar\n" " usant els següents operadors.\n" "\n" " ( EXPRESSIÓ ) Torna el valor d'EXPRESSIÓ\n" @@ -5240,11 +5221,10 @@ msgstr "" " EXPR1 && EXPR2 Cert si tant EXPR1 com EXPR2 són cert; si no, fals.\n" " EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n" "\n" -" Quan s'utilitzen els operadors `==' o `!=', el component de la dreta\n" +" Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n" " s'interpreta com a un patró i es comprova si coincideix amb la cadena " "de\n" -" l'esquerra de l'operador. Quan s'utilitza l'operador `=~', el " -"component\n" +" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el component\n" " de la dreta de l'operador s'interpreta com a expressió regular i es\n" " comprova si coincideix amb la cadena de l'esquerra de l'operador.\n" "\n" @@ -5254,7 +5234,7 @@ msgstr "" " Estat de sortida:\n" " 0 o 1, depenent del valor d'EXPRESSIÓ." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5307,12 +5287,12 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" -"Nom i ús de les variables de l'intèrpret habituals.\n" +"Nom i ús de variables de l'intèrpret habituals.\n" "\n" " BASH_VERSION Informació de la versió de Bash.\n" -" CDPATH\t\tLlista de directoris separats per `:' on buscar\n" -" directoris passats com a arguments a `cd'.\n" -" GLOBIGNORE\t\tLlista de patrons separats per `:' que indiquen noms\n" +" CDPATH\t\tLlista de directoris separats per «:» on buscar\n" +" directoris passats com a arguments a «cd».\n" +" GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n" " que s'ignoren en fer expansions de noms de fitxer.\n" " HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n" " HISTFILESIZE\tNombre màxim de línies que pot contenir el\n" @@ -5332,41 +5312,42 @@ msgstr "" " MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n" " MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n" " ha correu nou.\n" -" MAILPATH\t\tLlista de fitxers separats per `:' que Bash comprova\n" +" MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n" " si tenen correu nou.\n" " OSTYPE\t\tLa versió de Unix en què corre Bash.\n" -" PATH\t\tLlista de directoris separats per `:' on buscar quan\n" +" PATH\t\tLlista de directoris separats per «:» on buscar quan\n" " \t\t\tse cerquen ordres.\n" " PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n" " \t\t\tl'introductor de l'intèrpret.\n" " PS1\t\t\tCadena de l'introductor principal.\n" " PS2\t\t\tCadena de l'introductor secundari.\n" " PWD\t\t\tCamí complet cap al directori corrent.\n" -" SHELLOPTS\t\tLlista d'opcions habilitades separades per `:'.\n" +" SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n" " TERM\t\tNom del tipus de terminal actual.\n" " TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n" -" \t\t\tproduïdes per l'ordre `time'.\n" +" \t\t\tproduïdes per l'ordre «time».\n" " auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n" " \t\t\tes busca en primera instància a la llista actual de\n" -" \t\t\ttasques aturades. Si es troba, aquella tasca es\n" -" passa a primer pla. El valor `exact' significa que\n" +" \t\t\tfeines aturades. Si es troba, aquella feina es\n" +" passa a primer pla. El valor «exact» significa que\n" " l'ordre ha de coincidir exactament amb alguna ordre\n" -" de la llista de tasques aturades. El valor\n" -" `substring' significa que l'ordre ha de coincidir\n" -" amb una subcadena de la tasca. Qualsevol altre\n" +" de la llista de feines aturades. El valor\n" +" «substring» significa que l'ordre ha de coincidir\n" +" amb una subcadena de la feina. Qualsevol altre\n" " valor significa que l'ordre ha de ser el prefix\n" -" d'una tasca aturada.\n" +" d'una feina aturada.\n" " histchars\t\tCaràcters que controlen l'expansió de l'historial i\n" " \t\t\tles substitucions ràpides. El primer caràcter és el\n" " \t\t\tcaràcter de substitució de l'historial, habitualment\n" -" \t\t\t`!'. El segon és el caràcter de `substitució\n" -" ràpida', normalment `^'. El tercer és el caràcter\n" -" de `comentari d'historial', normalment `#'.\n" -" HISTIGNORE\t\tLlista de patrons separats per `:' utilitzats per a\n" +" \t\t\t«!». El segon és el caràcter de «substitució\n" +" ràpida», normalment «^». El tercer és el caràcter\n" +" de «comentari d'historial», normalment «#».\n" +" HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n" " \t\t\tdecidir si les ordres s'han de desar a l'historial.\n" -#: builtins.c:1803 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5398,35 +5379,37 @@ msgid "" msgstr "" "Afegeix directoris a la pila.\n" "\n" -" Afegeix un directori a sobre la pila de directoris, o fa girar la\n" -" llista, de manera que a sobre la pila hi queda el directori de treball\n" -" corrent. Sense arguments, intercanvia els dos directoris de més amunt.\n" +" Afegeix un directori al capdamunt de la pila de directoris, o fa girar\n" +" la llista, de manera que al capdamunt de la pila hi queda el directori\n" +" de treball corrent. Sense arguments, intercanvia els dos directoris de\n" +" més amunt.\n" "\n" " Opcions:\n" " -n Omet el canvi de directori quan s'afegeixen directoris a la\n" -" pila, de manera que només canvia la pila.\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" "\n" " +N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" (comptant des de l'esquerra de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" " -N Gira la llista de manera tal que l'N-èssim directori\n" -" (comptant des de la dreta de la llista que mostra `dirs',\n" +" (comptant des de la dreta de la llista que mostra «dirs»,\n" " començant des de zero) queda a dalt de tot.\n" "\n" -" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" dir Afegeix DIR al capdamunt de la pila de directoris, i el\n" " converteix en el nou directori de treball corrent.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.<\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si s'ha rebut un argument invàlid, o el canvi de\n" " directori falla." -#: builtins.c:1837 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5455,32 +5438,33 @@ msgstr "" "Treu directoris de la pila.\n" "\n" " Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" -" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" -" de la pila.\n" +" directori al capdamunt de la pila, i canvia al nou directori de dalt de\n" +" la pila.\n" "\n" " Opcions:\n" -" -n Evita el canvi de directori quan s'eliminen directoris de la\n" -" pila, de manera que només es manipula la pila.\n" +" -n Omet el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només canvia el contingut de la pila.\n" "\n" " Arguments:\n" " +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista que mostra `dirs', començant des de zero. Per\n" -" exemple: `popd +0' elimina el primer directori, i `popd +1'\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd +0» elimina el primer directori, i «popd +1»\n" " el segon.\n" "\n" " -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" -" llista que mostra `dirs', començant des de zero. Per\n" -" exemple: `popd -0' elimina l'últim directori, i `popd -1' el\n" +" llista que mostra «dirs», començant des de zero. Per\n" +" exemple: «popd -0» elimina l'últim directori, i «popd -1» el\n" " penúltim.\n" "\n" -" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.\n" +" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs».\n" "\n" " Estat de sortida:\n" " Torna èxit, excepte si es rep un argument invàlid o el canvi de\n" " directori falla." -#: builtins.c:1867 -#, fuzzy +# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més +# enrere en aquest fitxer +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5510,13 +5494,13 @@ msgid "" msgstr "" "Mostra la pila de directoris.\n" "\n" -" Mostra la llista actual de directoris recordats. Els directoris entren\n" -" a la llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" -" directoris enrere amb l'ordre `popd'.\n" +" Mostra la llista actual de directoris recordats. Els directoris són\n" +" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n" +" de directoris cap enrere amb l'ordre «popd».\n" "\n" " Opcions:\n" " -c neteja la pila, esborrant-ne tots els elements\n" -" -l no mostra les versions abreviades (prefix ~) en els\n" +" -l no mostra les versions abreviades (amb el prefix ~) dels\n" " directoris relatius al vostre directori personal\n" " -p mostra la pila, una entrada per línia\n" " -v mostra la pila, una entrada per línia indicant la posició a\n" @@ -5524,25 +5508,25 @@ msgstr "" "\n" " Arguments:\n" " +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" llista mostrada per «dirs» quan s'invoca sense opcions, \n" " començant des de zero.\n" "\n" " -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" -" llista mostrada per `dirs' quan s'invoca sense opcions,\n" -" començant des de zero.<\n" +" llista mostrada per «dirs» quan s'invoca sense opcions,\n" +" començant des de zero.\n" "\n" " Estat de sortida:\n" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5557,22 +5541,21 @@ msgid "" msgstr "" "Activa i desactiva opcions de l'intèrpret.\n" "\n" -" Canvia l'estat de cada OPCIÓ. Si no s'especifica cap OPCIÓ, mostra una\n" +" Canvia l'estat de cada OPCIÓ. Si no especifiqueu cap OPCIÓ, mostra una\n" " llista de totes les opcions indicant si estan activades o no.\n" "\n" " Opcions:\n" -" -o limita les opcions a les que es poden canviar amb `set -o'\n" +" -o limita les opcions a les que es poden canviar amb «set -o»\n" " -p\tmostra totes les opcions indicant-ne l'estat\n" " -q\tsuprimeix la sortida\n" " -s\tactiva OPCIÓ\n" " -u\tdesactiva OPCIÓ\n" "\n" " Estat de sortida:\n" -" Torna èxit si OPCIÓ està activada; falla si s'especifica una opció\n" +" Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n" " invàlida o OPCIÓ està desactivada." -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5640,8 +5623,7 @@ msgstr "" " Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" " error d'assignació o d'escriptura." -#: builtins.c:1953 -#, fuzzy +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5671,11 +5653,10 @@ msgstr "" "\n" " Per a cada NOM, especifica com s'han de completar els arguments. Si no\n" " s'indica cap opció, les especificacions de compleció existents es\n" -" mostren en un format que permet la reutilització com a entrada.\n" +" mostren en un format que permet reutilitzar-les com a entrada.\n" "\n" " Opcions:\n" -" -p mostra les especificacions existents en un format " -"reciclable\n" +" -p mostra les especificacions existents en format reciclable\n" " -r suprimeix l'especificació de compleció per a NOM, o, si no\n" " \t\ts'indica cap NOM, totes les especificacions de compleció\n" " -D assigna les accions o complecions a totes les ordres que no\n" @@ -5685,13 +5666,12 @@ msgstr "" "\n" " Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n" " les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n" -" preferència sobre la -E.\n" +" preferència sobre l'opció -E.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5707,14 +5687,13 @@ msgstr "" "\n" " Aquesta ordre està pensada per a ser utilitzada en una funció que " "generi\n" -" possibles complecions. Si s'especifica l'argument opcional PARAULA, es\n" +" possibles complecions. Si especifiqueu l'argument opcional PARAULA, es\n" " limiten les complecions a aquelles que coincideixen amb PARAULA.\n" "\n" " Estat de sortida:\n" -" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" -" error." +" Torna èxit, excepte si passeu una opció invàlida o es produeix un error." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5746,7 +5725,7 @@ msgid "" msgstr "" "Modifica o mostra opcions de compleció.\n" "\n" -" Modifica les opcions de compleció de NOM, o, si no s'especifica cap " +" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap " "NOM,\n" " la compleció que s'està executant en el moment. Si no s'indica cap\n" " OPCIÓ, mostra les opcions de compleció per a cada NOM o\n" @@ -5758,23 +5737,23 @@ msgstr "" "defecte\n" " -E Canvia les opcions de compleció d'ordres \"buides\"\n" "\n" -" Si utilitzeu `+o' en lloc de `-o', desactiva l'opció especificada.\n" +" Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n" "\n" " Arguments:\n" "\n" " Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n" -" especificació de compleció amb l'ordre interna `complete'. Si no\n" -" s'especifica cap NOM, compopt s'ha de cridar des d'una funció " +" especificació de compleció amb l'ordre interna «complete». Si no\n" +" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció " "generadora\n" " de complecions, i les opcions que es modifiquen afecten la generació de\n" " complecions que s'està executant en aquell moment.\n" "\n" " Estat de sortida: \n" -" Torna èxit, excepte si es passa alguna opció no vàlida o NOM no té\n" +" Torna èxit, excepte si passeu alguna opció no vàlida o NOM no té\n" " definida cap especificació de compleció." -#: builtins.c:2026 -#, fuzzy +# help readarray +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5818,38 +5797,41 @@ msgstr "" "Llegeix línies d'un fitxer cap a una variable vector.\n" "\n" " Llegeix línies de l'entrada estàndard cap a la variable VECTOR, o del\n" -" descriptor de fitxer FD i s'especifica l'opció -u. El vector per\n" -" defecte és la variable MAPFILE.\n" +" descriptor de fitxer FD si especifiqueu l'opció -u. La variable vector\n" +" per defecte és MAPFILE.\n" "\n" " Opcions:\n" +" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter " +"de\n" +" salt de línia\n" " -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n" " \t\ttotes les línies.\n" -" -0 origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" -" -s nombre Descarta les primeres NOMBRE línies llegides.\n" +" -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" +" -s nombre Descarta les primeres NOMBRE línies.\n" " -t Estripa el caràcter de salt de línia de cada línia llegida.\n" " -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n" " estàndard.\n" " -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n" -" -c quàntum Especifica el nombre de línies llegides abans de\n" -" cridar CALLBACK\n" +" -c quàntum Nombre de línies llegides abans de cridar " +"CALLBACK\n" "\n" " Arguments:\n" " VECTOR Nom de la variable vector per a les dades.\n" "\n" -" Si s'especifica l'opció -C sense -c, el quàntum per defecte és 5000.\n" +" Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n" " Quan s'avalua la funció CALLBACK, se li passa l'índex del proper " "element\n" " del vector i la línia que s'assigna a aquest element, com a arguments\n" " addicionals.\n" "\n" -" Si no s'especifica un origen explícit, se suprimeix qualsevol valor\n" +" Si no especifiqueu un origen explícit, se suprimeix qualsevol valor\n" " assignat a VECTOR abans d'assignar cap valor.\n" "\n" " Estat de sortida:\n" -" Torna èxit, excepte si es passa una opció no vàlida o VECTOR és de\n" -" només-lectura." +" Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n" +" lectura o no és una variable vector." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5857,7 +5839,7 @@ msgid "" msgstr "" "Llegeix línies d'un fitxer cap a una variable vector.\n" "\n" -" Un sinònim de `mapfile'." +" Un sinònim de «mapfile»." #, fuzzy #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." diff --git a/po/cs.gmo b/po/cs.gmo index 5d6ad4d4b..7b7bd192f 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index a3686c983..26bbdaa15 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,142 +2,143 @@ # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. -# Petr Pisar , 2015. +# Petr Pisar , 2015, 2016. # # alias → alias # subscript → podskript # subroutine → podprogram # completion options → možnosti doplňování # shell option → přepínač shellu (shopt) -# Názvy signálu a stavů procesu by měly souhlasit se signal(7). +# Názvy signálů a stavů procesu by měly souhlasit se signal(7). msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-17 12:43+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-16 20:56+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "chybný podskript pole" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: odstraňuje se atribut odkazu na název" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: číslované pole nezle převést na pole asociativní" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný klíč asociativního pole" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: přes nečíselný indexu nelze dosadit" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskript" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nelze vytvořit: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu " -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: první nebílý znak není „\"“" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "ne zavírající „%c“ v %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: chybí dvojtečkový oddělovač" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "závorková expanze: nelze alokovat paměť pro %s" # TODO: pluralize -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "závorková expanze: alokace paměti pro %d prvků selhala" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "závorková expanze: alokace paměti pro „%s“ selhala" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: chybný název aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "upravování řádku není povoleno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: chybný název klávesové mapy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nelze číst: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nelze zruÅ¡it vazbu" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámé jméno funkce" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s není svázán s žádnou klávesou.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s lze vyvolat přes " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nelze zruÅ¡it vazbu" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "počet smyček" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "má smysl jen ve smyčkách „for“, „while“ nebo „until“" @@ -151,163 +152,162 @@ msgstr "" " \n" " Bez VÝRAZU vrátí " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "není nestavena HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "příliÅ¡ mnoho argumentů" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "vrcholového adresáře." +msgstr "adresář s prázdným názvem" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "není nastaveno OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "řádek %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varování: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: užití: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: přepínač vyžaduje argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžadován číselný argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nenalezeno" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: chybný přepínač" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: chybný název přepínače" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: není platným identifikátorem" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neplatné osmičkové číslo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "chybné Å¡estnáctkové číslo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "chybné číslo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: chybné určení signálu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: není PID ani platným označením úlohy" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: proměnná pouze pro čtení" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s mimo rozsah" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s mimo rozsah" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: žádná taková úloha" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: žádné řízení úloh" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "žádné řízení úloh" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: omezeno" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "omezeno" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: není vestavěným příkazem shellu" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "chyba zápisu: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba při nastavování vlastností terminálu: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba při získávání vlastností terminálu: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba při zjišťování současného adresáře: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určení úlohy" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "k této verzi není dostupná nápověda" @@ -316,69 +316,69 @@ msgstr "k této verzi není dostupná nápověda" msgid "%s: invalid action name" msgstr "%s: neplatný název akce" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: žádné doplňování neurčeno" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "varování: přepínač -F možná nebude dělat, co jste čekali" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "varování: přepínač -C možná nebude dělat, co jste čekali" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "doplňovací funkce se právě nevykonává" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "může být použito jen ve funkci" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: proměnná s odkazem nemůže být polem" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: proměnná s odkazem na název nemůže odkazovat sama na sebe" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: kruhový odkaz na název" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: neplatný název proměnné pro odkaz na název" +msgstr "„%s“: neplatný název proměnné pro odkaz na název" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "„-f“ nezle použít na výrobu funkce" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkce jen pro čtení" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: takto nelze likvidovat pole" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: asociativní pole nelze převést na číslované pole" @@ -412,70 +412,70 @@ msgstr "%s: není dynamicky nahráno" msgid "%s: cannot delete: %s" msgstr "%s: nelze smazat: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: je adresářem" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: není obyčejný soubor" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: soubor je příliÅ¡ velký" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binární soubor nelze spustit" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nelze provést: %s" # XXX: Toto je zpráva interaktivního shellu při příkazu exit informující # o odhlášení -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odhlášení\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "toto není login shell: použijte „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Jsou zde pozastavené úlohy.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Jsou zde běžící úlohy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "žádný příkaz nenalezen" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "určení historie" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: dočasný soubor nelze otevřít: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "současný" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "úloha %d spuÅ¡těna bez správy úloh" @@ -490,29 +490,28 @@ msgstr "%s: chybný přepínač – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: přepínač vyžaduje argument – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashování zakázáno" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabulka hashů je prázdná\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "zásahů\tpříkaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Příkazy shellu shodující se s klíčovým slovem „" msgstr[1] "Příkazy shellu shodující se s klíčovými slovy „" msgstr[2] "Příkazy shellu shodující se s klíčovými slovy „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "žádné téma nápovědy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ " "nebo „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nelze otevřít: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -545,20 +544,21 @@ msgstr "" "Hvězdička (*) vedle jména znamená, že příkaz je zakázán.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nelze použít více jak jeden z -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "místo v historii" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: chybný argument" +msgstr "%s: neplatný časový údaj" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expanze historie selhala" @@ -572,16 +572,16 @@ msgstr "%s: inlib selhala" msgid "no other options allowed with `-x'" msgstr "s „-x“ nejsou dovoleny další přepínače" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenty musí být proces nebo identifikátor úlohy" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznámá chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "očekáván výraz" @@ -590,69 +590,69 @@ msgstr "očekáván výraz" msgid "%s: not an indexed array" msgstr "%s: není (proměnnou typu) indexované pole" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: chybné určení deskriptoru souboru" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný deskriptor souboru: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: chybný počet řádků" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: chybný počátek pole" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné množství mezi voláními" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prázdný název proměnné typu pole" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "je vyžadována podpora proměnných typu pole" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s“: postrádám formátovací znak" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: chybné určení časového limitu" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "varování: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "potíže s rozebráním formátovacího řetězce: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "u \\x chybí Å¡estnáctková číslovka" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "u \\%c chybí unikódová číslovka" @@ -666,19 +666,19 @@ msgstr "žádný další adresář" msgid "%s: invalid argument" msgstr "%s: chybný argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<žádný aktuální adresář>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "prázdný zásobník adresářů" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "pořadí v zásobníku adresářů" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -720,7 +720,7 @@ msgstr "" " -N\tZobrazí N. položku počítáno zprava na seznamu, který zobrazuje\n" " \tdirs, když je vyvolán bez přepínačů, počínaje nulou." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -765,7 +765,7 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -804,45 +804,45 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: chybné určení časového limitu" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "chyba čtení: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "„return“ lze provést jen z funkce nebo skriptu načteného přes „source“" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "funkci i proměnnou nelze ruÅ¡it současně" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: nelze zruÅ¡it" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nelze zruÅ¡it: %s jen pro čtení" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: není (proměnnou typu) pole" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: není funkcí" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nelze exportovat" @@ -851,20 +851,20 @@ msgstr "%s: nelze exportovat" msgid "shift count" msgstr "počet shiftů" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "přepínač shellu nelze zároveň nastavit a zruÅ¡it" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: chybný název přepínače shellu" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vyžadován argument s názvem souboru" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: soubor nenalezen" @@ -877,61 +877,61 @@ msgstr "nelze pozastavit" msgid "cannot suspend a login shell" msgstr "login shell nelze pozastavit" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je alias na „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je klíčové slovo shellu\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkce\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s je zvláštní součást shellu\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je součást shellu\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je zahashován (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: chybný argument s limitou" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný příkaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit nelze zjistit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit nelze změnit: %s" @@ -950,202 +950,207 @@ msgstr "„%c“: chybný operátor symbolických práv" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: chybný znak symbolický práv " -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " řádek " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "poslední příkaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ukončuji…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMACE: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "chyba neznámého příkazu" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "chybný druh příkazu" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "chybný konektor" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "chybný skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nevázaná proměnná" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačasový limit pro čekání na vstup vyprÅ¡el: automatické odhlášení\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "standardní vstup nelze přesměrovat z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: koproces [%d:%s] stále existuje" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "chyba v rouře" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximální úroveň zanoření funkce eval byla překročena (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkce source byla překročena (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoření funkcí byla překročena (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpretr" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binární soubor nelze spustit: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: je zvláštní vestavěný příkaz shellu" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "úroveň rekurze výrazu byla překročena" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "zásobník rekurze podtekl" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntaktická chyba ve výrazu" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "pokus o přiřazení do ne-proměnné" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaktická chyba ve výrazu" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "dělení nulou" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "chyba: chybný expassing token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "v podmíněném výrazu očekávána „:“" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "mocnitel menší než 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po přednostním zvýšení nebo snížení očekáván identifikátor" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "postrádám „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntaktická chyba: očekáván operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntaktická chyba: chybný aritmetický operátor" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s“)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "chybný aritmetický základ" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "hodnot je pro základ příliÅ¡ velká" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: rodičovské adresáře nejsou přístupné" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "na deskriptoru %d nelze resetovat režim nodelay" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nový deskriptor souboru pro vstup bashe z deskr. %d nelze alokovat" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" @@ -1154,155 +1159,160 @@ msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp roury" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forknutý PID %d se objevil v běžící úloze %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) do the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: PID %5ld (%s) označen za stále živého" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: žádný takový PID" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signál %d" # XXX: (úloha) dokončna. Používat ženský rod i unásledujících. Jedná se # o výpis úloh. -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Dokončena" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Pozastavena" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Pozastavena (%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Běží" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Dokončena (%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Ukončena %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Stav neznámý" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped [obraz paměti uložen]) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (cwd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid na potomku (z %ld na %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld není potomkem tohoto shellu" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Žádný záznam o procesu %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je pozastavena" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d je již na pozadí" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurčitému zablokování" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: řádek %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped [obraz paměti uložen])" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(cwd nyní: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp selhalo" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplína linky" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplína linky" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nelze nastavit skupinu procesů terminálu (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "žádná správa úloh v tomto shellu" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: předpoklad nesplněn: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1311,39 +1321,39 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný předpoklad\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "není známo" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blok v seznamu uvolněných zbit" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: zavoláno s argumentem již uvolněného bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: velikosti počátečního a koncového kusu se liší" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: velikosti počátečního a koncového kusu se liší" @@ -1385,22 +1395,22 @@ msgstr "%s: chybné určení síťové cesty" msgid "network operations not supported" msgstr "síťové operace nejsou podporovány" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: národní prostředí nelze změnit (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s" @@ -1418,263 +1428,269 @@ msgstr "V $_ máte novou poÅ¡tu" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je přečtená\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžadován aritmetický výraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočekávaný „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný druh instrukce %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "„here“ dokument na řádku %d ukončen koncem souboru (požadováno „%s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek " +"zkrácen" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "maximální počet here dokumentů překročen" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekávaný konec souboru při hledání znaku odpovídajícímu „%c“" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "neočekávaný konec souboru při hledání „]]“" # XXX: Condional means condition (adj.) probably. Can English distinguish # between the condition (podmínkový) and the code branch (podmíněný)? Check # for all "conditional" string occurences. -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe ve výrazu podmínky: neočekávaný token „%s“" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "chyba syntaxe ve výrazu podmínky" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekávaný token „%s“, očekávána „)“" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "očekávána „)“" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekávaný argument „%s“ u podmínkového unárního operátoru" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "neočekávaný argument u podmínkového unárního operátoru" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekávaný token „%s“, očekáván podmínkový binární operátor" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "očekáván podmínkový binární operátor" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekávaný argument „%s„ u podmínkového binárního operátoru" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "neočekávaný argument u podmínkového binárního operátoru" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekávaný token „%c“ v podmínkovém příkazu" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekávaný token „%s“ v podmínkovém příkazu" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekávaný token %d v podmínkovém příkazu" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe poblíž neočekávaného tokenu „%s“" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe poblíž „%s“" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: nenadálý konec souboru" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Shell lze ukončit příkazem „%s“.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "nenadálý konec souboru při hledání odpovídající „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "doplňování: funkce „%s“ nenalezena" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: možná smyčka opakování" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULLOVÝ COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: chybná propojka „%d“" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neplatný deskriptor souboru" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: nullový ukazatel na souboru" # fd, fp a fileno jsou identifikátory v kódu -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace: fd (%d) != fileno fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: chybný formátovací znak" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "deskriptor souboru mimo rozsah" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné přesměrování" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: existující soubor nelze přepsat" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omezeno: výstup nelze přesměrovat" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "pro „here“ dokument nelze vytvořit dočasný soubor: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: deskriptor souboru nelze přiřadit do proměnné" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nelze nalézt /tmp, vytvořte jej, prosím!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musí být platným názvem pro adresář" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: chybný přepínač" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "UID nelze nastavit na %d: efektivní UID je %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "GID nelze nastavit na %d: efektivní GID je %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "debuger nelze spustit, ladicí režim zakázán" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Je adresářem" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemám žádné jméno!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verze %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,53 +1699,53 @@ msgstr "" "Použití:\t%s [Dlouhý GNU přepínač] [přepínač]…\n" "\t%s [Dlouhý GNU přepínač] [přepínač] skriptový_soubor…\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Dlouhé GNU přepínače:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Přepínače shellu:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_přepínač\t(pouze při vyvolání)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nebo -o přepínač\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Podrobnosti o přepínačích shellu získáte tím, že napíšete „%s -c \"help set" "\"“.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Podrobnosti o příkazech vestavěných do shellu získáte tím, že\n" "napiÅ¡te „%s -c help“.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Chyby nahlásíte příkazem „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Domovská stránka bashe: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Obecný návod na použití softwaru GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operace" @@ -1907,21 +1923,21 @@ msgstr "Neznámé číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámý signál č. %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: seznam nelze přiřadit do prvku pole" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "nelze vyrobit rouru za účelem substituce procesu" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "nelze vytvořit potomka za účelem substituce procesu" @@ -1940,59 +1956,63 @@ msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" msgid "cannot duplicate named pipe %s as fd %d" msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "chybná substituce: v %s chybí uzavírací „`“" +msgstr "substituce příkazu: nulový bajt ve vstupu ignorován" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "nelze vytvořit rouru pro substituci příkazu" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "nelze vytvořit potomka pro substituci příkazu" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: neplatný název proměnné pro odkaz na název" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: chybná substituce" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: chybná nepřímá expanze" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: chybný název proměnné" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr null nebo nenastaven" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr null nebo nenastaven" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podřetězce < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substituce" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: takto nelze přiřazovat" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2000,12 +2020,12 @@ msgstr "" "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou " "substituci" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substituce: v %s chybí uzavírací „`“" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "žádná shoda: %s" @@ -2028,114 +2048,113 @@ msgstr "očekávána „)“" msgid "`)' expected, found %s" msgstr "očekávána „)“, nalezeno %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekáván unární operátor" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekáván binární operátor" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "postrádám „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: obsluha signálu je SIG_DFL, přeposílám %d (%s) sobě" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba při importu definice „%s“" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: hodnotu nelze do proměnné přiřadit" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: neplatný název proměnné pro odkaz na název" +msgstr "%s: přiřazení čísla odkazu na název" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s: má nullový exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr pro %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "v exportstr pro %s chybí „=“" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlava shell_variables není kontextem funkce" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chybí kontext global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlava shell_variables není dočasným rozsahem prostředí" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nelze otevřít jako SOUBOR" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: hodnota kompatibility je mimo rozsah" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgstr "Copyright © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2158,22 +2177,22 @@ msgstr "Toto je svobodné programové vybavení: máte právo jej měnit a ší msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "VEÅ KERÉ ZÁRUKY chybí, jak jen zákon dovoluje." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nezle alokovat %'lu bajtů" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nelze alokovat %'lu bajtů" @@ -2301,9 +2320,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [úloha…]" +msgstr "disown [-h] [-ar] [úloha… | PID…]" #: builtins.c:134 msgid "" @@ -2385,7 +2403,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id…]" #: builtins.c:181 @@ -2430,7 +2449,7 @@ msgstr "until PŘÍKAZY; do PŘÍKAZY; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "command [NÁZEV] příkaz [přesměrování]" +msgstr "coproc [NÁZEV] příkaz [přesměrování]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" @@ -2509,9 +2528,10 @@ msgstr "" "volání] [-c množství] [pole]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n počet] [-O počátek] [-s počet] [-t] [-u FD] [-C volání] [-c " "množství] [pole]" @@ -2927,6 +2947,7 @@ msgstr "" " Vrací návratový kód PŘÍKAZU, nebo selže, nebyl–li příkaz nalezen." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2945,11 +2966,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3003,15 +3024,14 @@ msgstr "" " přiřazování do proměnné." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Nastaví hodnoty a atributy proměnných\n" +"Nastaví hodnoty a atributy proměnných.\n" " \n" -" Příkaz je zastaralý. Vizte „help declare“." +" Synonymum pro „declare“. Vizte „help declare“." #: builtins.c:538 msgid "" @@ -3490,6 +3510,7 @@ msgstr "" " Vrátí úspěch, pokud byl NÁZEV nalezen a nebyl-li zadán neplatný přepínač." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3504,7 +3525,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3529,7 +3550,6 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud byl nalezen VZOREK a nebyl zadán neplatný přepínač." -# FIXME: bash-4.0-pre1: Orphaned line between -w and -p option. It belongs to -n. #: builtins.c:836 #, fuzzy msgid "" @@ -3540,7 +3560,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3571,7 +3592,7 @@ msgstr "" " \n" " Přepínače:\n" " -c vyprázdní seznam historie smazáním vÅ¡ech položek\n" -" -d pozice smaže ze seznamu historie položku na pozici POZICE\n" +" -d pozice smaže položku ze seznamu historie na pozici POZICE\n" " \n" " -a připojí řádky historie z této relace do souboru historie\n" " -n načte vÅ¡echny řádky historie, které jeÅ¡tě nebyly načteny,\n" @@ -3596,7 +3617,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3641,7 +3662,7 @@ msgstr "" "chyba.\n" " Byl-ly použit přepínač -x, vrátí návratový kód PŘÍKAZU." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3671,8 +3692,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo ÚLOHA." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3707,6 +3727,7 @@ msgstr "" " se za to, že se jedná o čísla signálů, pro které se mají " "vyspat\n" " jejich názvy.\n" +" -L synonymum pro -l\n" " \n" " Kill je vestavěný příkaz shellu ze dvou důvodů: umožňuje použít\n" " identifikátory úloh namísto ID procesů a umožní zabíjet procesy i poté,\n" @@ -3715,7 +3736,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3802,7 +3823,8 @@ msgstr "" " Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n" " navrácena 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3823,7 +3845,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3907,7 +3929,7 @@ msgstr "" "souboru\n" " jako argument -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3929,8 +3951,7 @@ msgstr "" " Návratová hodnota:\n" " Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4084,8 +4105,8 @@ msgstr "" " zapnut při interaktivním shellu.\n" " -P Je-li nastaveno, nebudou vyhodnocovány symbolické odkazy při\n" " provádění příkazů jako změna pracovního adresáře pomocí „cd“.\n" -" -T Je-li nastaveno, trap DEBUG (obsluha ladění) bude děděna do\n" -" funkcí shellu.\n" +" -T Je-li nastaveno, trap DEBUG (obsluha ladění) a RETURN (návrat\n" +" z podprogramu) bude děděn do funkcí shellu.\n" " -- Přiřadí jakékoliv zbývající argumenty do pozičních parametrů.\n" " Neexistují-li žádné zbývající argumenty, poziční parametry budou\n" " odstraněny.\n" @@ -4103,7 +4124,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný argument." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4144,7 +4165,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a JMÉNO není jen pro\n" " čtení." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4179,7 +4200,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4219,7 +4240,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4237,7 +4258,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud N není záporný a není větší než $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4261,7 +4282,7 @@ msgstr "" " Vrací návratový kód posledního provedeného příkazu z NÁZVU_SOUBORU.\n" " Selže, pokud NÁZEV_SOUBORU nelze načíst." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4285,7 +4306,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4455,7 +4476,7 @@ msgstr "" " Vrací úspěch, je-li VÝRAZ vyhodnocen jako pravdivý. Selže, je-li VÝRAZ\n" " vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4467,7 +4488,7 @@ msgstr "" " Toto je synonymum pro vestavěný příkaz „test“, až na to, že poslední\n" " argument musí být doslovně „]“, aby se shodoval s otevírající „[“." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4487,7 +4508,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspěje." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4571,7 +4592,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud SIGSPEC a zadané přepínače jsou platné." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4627,7 +4648,7 @@ msgstr "" " Vrátí úspěch, pokud vÅ¡echny NÁZVY byly nalezeny. Selže, pokud některé\n" " nalezeny nebyly." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4722,7 +4743,7 @@ msgstr "" " Návratová hodnota:\n" " Vrací úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4755,7 +4776,8 @@ msgstr "" " Návratový kód\n" " Vrátí úspěch, pokud nebyl zadán neplatný MÓD nebo přepínač." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4763,13 +4785,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4790,7 +4814,7 @@ msgstr "" " Vrátí kód posledního ID. Selže, pokud ID není platný nebo byl zadán\n" " neplatný přepínač." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4814,7 +4838,7 @@ msgstr "" " Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n" " neplatný přepínač." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4838,7 +4862,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4867,7 +4891,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy vykonaného příkazu." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4909,7 +4933,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy prováděného příkazu." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4940,7 +4964,7 @@ msgstr "" " Návratový kód:\n" " Návratová hodnota je návratová hodnota KOLONY." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4958,7 +4982,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4993,7 +5017,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5012,7 +5036,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5030,8 +5054,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5051,9 +5074,9 @@ msgstr "" " tohoto shellu pod indexem 0 a 1. Implicitní NÁZEV je „COPROC“.\n" " \n" " Návratový kód:\n" -" Vrátí návratový kód PŘÍKAZU." +" Příkaz coproc vrací návratový kód 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5078,7 +5101,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud NÁZEV není jen pro čtení." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5095,7 +5118,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy spuÅ¡těného příkazu." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5120,7 +5143,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód obnovené úlohy." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5142,7 +5165,7 @@ msgstr "" # příkaz, který by byl vykonán na základě splnění jiné podmínky. Tj. překlad # „podmíněný příkaz“ je chybný. # Toto je nápověda k vestavěnému příkazu „[“. -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5194,7 +5217,7 @@ msgstr "" " Návratový kód:\n" " 0 nebo 1 podle hodnoty VÝRAZU." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5299,7 +5322,7 @@ msgstr "" " \t\trozliÅ¡ení, které příkazy by měly být uloženy do seznamu\n" " \t\thistorie.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5356,7 +5379,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n" " neselhala." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5406,7 +5429,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n" " adresáře." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5457,14 +5480,14 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5495,7 +5518,7 @@ msgstr "" " Vrátí úspěch, je-li NÁZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n" " přepínač nebo je-li NÁZEV_VOLBY vypnut." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5568,7 +5591,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:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5617,7 +5640,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:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5638,7 +5661,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5696,7 +5719,7 @@ msgstr "" "definováno\n" " pravidlo doplňování." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5774,7 +5797,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač, POLE nebylo jen pro\n" " čtení a bylo indexovaným polem." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/da.gmo b/po/da.gmo index 6aa94c4e2..4edab866e 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 3bda8e514..d295775e5 100644 --- a/po/da.po +++ b/po/da.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2011-03-18 01:36+0100\n" "Last-Translator: Kenneth Nielsen \n" "Language-Team: Danish \n" @@ -20,125 +20,126 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: da\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" # Den er jeg altsÃ¥ ikke helt sikker pÃ¥ -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "ugyldigt arrayindeks" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan ikke konvertere indekseret til associativt array" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøgle til associativt array" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildele til ikkenumerisk indeks" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan ikke oprette %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blank-tegn er ikke '\"'" # Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det # FEJLRAPPORT -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "ingen afsluttende \"%c\" i %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: manglende kolonseparator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "linjeredigering ikke slÃ¥et til" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: kan ikke læse: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": kan ikke løsne" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\": ukendt funktionsnavn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s er ikke bundet til nogen taster.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan kaldes via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": kan ikke løsne" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "løkketæller" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke" @@ -152,163 +153,163 @@ msgstr "" " \n" " NÃ¥r UDTRYK udelades returneres " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME ikke indstillet" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "for mange argumenter" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "ingen anden mappe" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD ikke indstillet" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linje %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "advarsel: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: brug: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tilvalg kræver et argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numerisk argument pÃ¥krævet" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ikke fundet" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldigt tilvalg" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": ikke et gyldigt identificeringsnavn" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ugyldigt oktaltal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ugyldigt heksadecimalt tal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "ugyldigt tal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ugyldig signalspecifikation" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": ikke en pid eller gyldig job-spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s udenfor rækkevidde" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s udenfor rækkevidde" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: intet sÃ¥dant job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobkontrol" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobkontrol" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begrænset" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begrænset" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke indbygget i skallen" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivefejl: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fejl ved indstilling af terminalattribut: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fejl ved indhentning af terminalattribut: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig job-spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -317,69 +318,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: ugyldigt handlingsnavn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen fuldførselsspecifikation" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "advarsel: tilvalget -F vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan kun bruges i en funktion" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "kan ikke bruge \"-f\" til at lave funktioner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funktion" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan ikke konvertere associativt til indekseret array" @@ -413,68 +414,68 @@ msgstr "%s: ikke dynamisk indlæst" msgid "%s: cannot delete: %s" msgstr "%s: kan ikke slette: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en regulær fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fil er for stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan ikke eksekvere binær fil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan ikke eksekvere: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "log ud\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ikke en logind-skal: brug \"exit\"" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Der er stoppede job.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Der er kørende job.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "ingen kommando fundet" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historikspecifikation" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan ikke Ã¥bne midl. fil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "nuværende" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d startet uden jobkontrol" @@ -489,30 +490,29 @@ msgstr "%s: ugyldigt tilvalg -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: et argument er pÃ¥krævet til tilvalget -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing slÃ¥et fra" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash-tabel tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tkommando\n" # Jeg antager at det sidste ` er det første af et sæt af anførselstegn og # det er derfor oversat til " -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandoer som matcher nøgleordet \"" msgstr[1] "Skal-kommandoer som matcher nøgleordene \"" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +520,12 @@ msgstr "" "ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" " "eller \"info %s\"." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: kan ikke Ã¥bne: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -547,20 +547,21 @@ msgstr "" "En stjerne (*) ved siden af et navn betyder at kommandoen er slÃ¥et fra.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "kan ikke bruge mere end en af -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historikposition" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: ugyldigt grænseargument" +msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikudvidelse fejlede" @@ -574,16 +575,16 @@ msgstr "%s: inlib fejlede" msgid "no other options allowed with `-x'" msgstr "ingen andre tilvalg er tilladt sammen med \"-x\"" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenter skal være processer eller job-id'er" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Ukendt fejl" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "forventede et udtryk" @@ -592,70 +593,70 @@ msgstr "forventede et udtryk" msgid "%s: not an indexed array" msgstr "%s: ikke en arrayvariabel" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig filbeskrivelsesspecifikation" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig filbeskrivelse: %s" # -c Specify the number of lines read between each call to callback. -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldigt antal linjer" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig array-startindeks" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldigt tilbagekaldskvantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt arrayvariabelnavn" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "understøttelse af arrayvariabel pÃ¥krævet" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manglende formattegn" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ugyldigt formattegn" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "manglende heksciffer for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "manglende heksciffer for \\x" @@ -669,19 +670,19 @@ msgstr "ingen anden mappe" msgid "%s: invalid argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappestak tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappestakindeks" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -724,7 +725,7 @@ msgstr "" " nÃ¥r der ikke angives nogle valgmuligheder, startende fra 0." # Jeg tror der er en fejl i den engelske, fejlrapport -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -771,7 +772,7 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -809,45 +810,45 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "læsefejl: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "kan ikke fjerne en funktion og en variabel samtidig" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: kan ikke fjerne" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en arrayvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funktion" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: kan ikke fjerne" @@ -856,20 +857,20 @@ msgstr "%s: kan ikke fjerne" msgid "shift count" msgstr "skifttæller" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldigt navn for skaltilvalg" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnavnsargument pÃ¥krævet" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: fil ikke fundet" @@ -882,61 +883,61 @@ msgstr "kan ikke sætte i hvile" msgid "cannot suspend a login shell" msgstr "kan ikke sætte en logindskal i hvile" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s er aliasset til \"%s\"\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s er et skalnøgleord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s er en funktion\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s er indbygget i skallen\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s er indbygget i skallen\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s er %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s er hashet (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "\"%c\": ugyldig kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan ikke indhente grænse: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "grænse" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan ikke modificere grænse: %s" @@ -955,112 +956,112 @@ msgstr "\"%c\": ugyldig symbolsk tilstandsoperator" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": ugyldigt symbolsk tilstandstegn" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linje " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "sidste kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Afbryder..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "ukendt kommandofejl" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "dÃ¥rligt mellemled" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "dÃ¥rligt hop" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: ubundet variabel" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsudløb mens der ventedes pÃ¥ input: auto-logud\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan ikke videresende standardinput fra /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "datakanalfejl (pipe error)" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: kommando ikke fundet" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: dÃ¥rlig fortolker" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan ikke eksekvere binær fil" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s er indbygget i skallen\n" @@ -1074,94 +1075,99 @@ msgstr "%s er indbygget i skallen\n" # expansion. If the >(list) form is used, writing to the file will pro‐ # vide input for list. If the <(list) form is used, the file passed as # an argument should be read to obtain the output of list. -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan ikke duplikere fd %d til fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "grænse for rekursion af udtryk overskredet" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underløb i rekursionsstak" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntaksfejl i udtryk" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "forsøgte tildeling til ikke-variabel" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaksfejl i udtryk" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "division med 0" # denne her streng er dÃ¥rlig pÃ¥ sÃ¥ mange mÃ¥der at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: dÃ¥rligt expassign-udtryk" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "\":\" forventet for betingede udtryk" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponent mindre end 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifikator forventet efter præforøgelse eller -formindskelse" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "manglende \")\"" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntaksfejl: operand forventet" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfejl: ugyldig aritmetisk operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (fejlelement er \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grundtal" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "værdi for stor til grundtal" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: fejl i udtryk\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "kan ikke allokere ny fildeskriptor til bash-input fra fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" @@ -1171,154 +1177,159 @@ msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datakanal (pipe)" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forgrenet pid %d figurerer i kørende job %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter stoppet job %d med procesgruppe %ld" # ?? -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) i the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markeret som stadig i live" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen process med det pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Færdig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stoppet" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stoppet(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Kører" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Færdig(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Afslut %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Ukendt status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(smed kerne) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underproces setpgid (%ld til %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underproces af denne skal" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen optegnelse af proces %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d er stoppet" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: job er afbrudt" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d er allerede i baggrunden" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (smed kerne)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fejlede" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan ikke indstille terminal-procesgruppe (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "ingen jobkontrol i denne skal" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: forfejlet hævdelse: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1327,39 +1338,39 @@ msgstr "" "\r\n" "malloc: %s:%d: hævdelse forkludret\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "ukendt" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blok i fri liste tværet ud" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: kaldt med blokargument som allerede er fri" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" @@ -1401,22 +1412,22 @@ msgstr "%s: dÃ¥rlig specifikation for netværkssti" msgid "network operations not supported" msgstr "netværksoperation ikke understøttet" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" @@ -1434,153 +1445,153 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er blevet læst\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaksfejl: aritmetisk udtryk pÃ¥krævet" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaksfejl: \";\" uventet" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfejl: \"((%s))\"" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: dÃ¥rlig instruktionstype %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document ved linje %d er adskilt af slut-pÃ¥-linje (ønskede \"%s\")" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "uventet EOF mens der ledtes efter \"]]\"" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. # Jeg har valgt udtryk -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntaksfejl i betingelsesudtryk" # word A sequence of characters considered as a single unit by the # shell. Also known as a token. -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "uventet element \"%s\", forventede \")\"" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "forventede \")\"" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "uventet argument \"%s\" til unær betingelsesoperator" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "uventet argument til unær betingelsesoperator" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "ventedet binær betingelsesoperator" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "uventet argument \"%s\" til binær betingelsesoperator" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "uventet argument til binær betingelsesoperator" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "uventet udtryk \"%c\" i betingelseskommando" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "uventet udtryk \"%s\" i betingelseskommando" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "uventet udtryk \"%d\" i betingelseskommando" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfejl nær uventet udtryk \"%s\"" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfejl nær \"%s\"" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntaksfejl: uventet slutning pÃ¥ fil" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntaksfejl" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Brug \"%s\" for at forlade skallen.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "uventet EOF mens der ledtes efter samhørende \")\"" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funktion \"%s\" ikke fundet" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1590,111 +1601,115 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: dÃ¥rligt mellemled \"%d\"" -#: print_cmd.c:375 +#: print_cmd.c:373 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ugyldigt formateringstegn" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fil-deskriptor uden for interval" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig videresendelse" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan ikke overskrive eksisterende fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begrænset: kan ikke videresende output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan ikke danne midlertidig fil til here-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "videresendelsesfejl: kan ikke duplikere fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "kan ikke finde /tmp, opret venligst mappen!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp skal være et gyldigt mappenavn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldigt tilvalg" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jeg har ikke noget navn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1703,53 +1718,53 @@ msgstr "" "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU-tilvalg:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skal-tilvalg:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\tTilvalg -%s eller -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Skriv \"%s -c \"help set\"\" for at fÃ¥ mere information om skaltilvalg.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Skriv \"%s -c help\" for at fÃ¥ mere information om indbyggede " "skalkommandoer.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1925,21 +1940,21 @@ msgstr "Ukendt signal #" msgid "Unknown Signal #%d" msgstr "Ukendt signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "kan ikke danne underproces til procesudskiftning" @@ -1958,71 +1973,76 @@ msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "kan ikke danne underproces til kommandoudskiftning" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: ugyldig filbeskrivelse: %s" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: dÃ¥rlig udskiftning" - # -c Specify the number of lines read between each call to callback. -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldigt antal linjer" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter null eller ikke indstillet" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null eller ikke indstillet" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-udtryk < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: dÃ¥rlig udskiftning" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "intet match: %s" @@ -2045,30 +2065,30 @@ msgstr "\")\" forventet" msgid "`)' expected, found %s" msgstr "\")\" forventet, fandt %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: unær operator forventet" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: binær operator forventet" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "manglende \"]\"" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ugyldigt signalnummer" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: dÃ¥rlig værdi i trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2076,78 +2096,78 @@ msgstr "" "run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " "selv" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: ugyldigt signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "fejl under importering af funktionsdefinition for \"%s\"" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalniveau (%d) for højt, genindstiller til 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:4218 +#: variables.c:4437 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameter null eller ikke indstillet" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ugyldigt tegn %d i exportstr for %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "intet \"=\" i exportstr for %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen global_variables-kontekst" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum" -#: variables.c:5619 +#: variables.c:5862 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan ikke Ã¥bne: %s" -#: variables.c:5624 +#: variables.c:5867 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s udenfor rækkevidde" @@ -2180,22 +2200,22 @@ msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: kan ikke allokere %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes (%lu bytes allokeret)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes" @@ -2420,13 +2440,13 @@ msgstr "umask [-p] [-S] [tilstand]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2548,9 +2568,10 @@ msgstr "" "[-c kvantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C " "tilbagekald] [-c kvantum] [array]" @@ -2985,11 +3006,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3565,7 +3586,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3601,7 +3622,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3660,7 +3682,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3710,7 +3732,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3742,7 +3764,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3790,7 +3812,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:942 +#: builtins.c:943 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3877,7 +3899,7 @@ msgstr "" " Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n" " returneres 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3899,7 +3921,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3974,7 +3996,7 @@ msgstr "" "indtræffer,\n" " eller hvis en ugyldig fildeskriptor gives som argument til -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3999,7 +4021,7 @@ msgstr "" "en\n" " funktion eller et skript." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4184,7 +4206,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der angives et ugyldigt tilvalg." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4226,7 +4248,7 @@ msgstr "" "et\n" " givent navn er skrivebeskyttet." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4262,7 +4284,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldig." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4302,7 +4324,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldigt." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4321,7 +4343,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre N er negativ eller større end $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4347,7 +4369,7 @@ msgstr "" "hvis\n" " FILNAVN ikke kan læses." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4374,7 +4396,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4536,7 +4558,7 @@ msgstr "" " Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n" " evalueres til falsk eller hvis der gives et ugyldigt argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4549,7 +4571,7 @@ msgstr "" "sidste\n" " argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4569,7 +4591,7 @@ msgstr "" " Afslutningsstatus:\n" " Lykkes altid." -#: builtins.c:1357 +#: builtins.c:1358 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4650,7 +4672,7 @@ msgstr "" "angivet\n" " et ugyldigt tilvalg." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4713,7 +4735,7 @@ msgstr "" "enkelt\n" " ikke findes." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4809,7 +4831,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4847,7 +4869,7 @@ msgstr "" "ugyldigt\n" " tilvalg angives." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4856,13 +4878,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4882,7 +4906,7 @@ msgstr "" "angives\n" " et ugyldigt tilvalg." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4908,7 +4932,7 @@ msgstr "" " Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4933,7 +4957,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen for den sidst eksekverede kommando." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4963,7 +4987,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for den sidst eksekverede kommando." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5001,7 +5025,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5030,7 +5054,7 @@ msgstr "" " Afslutningsstatus:\n" " Afslutningsstatus er afslutningsstatus for DATAKANAL." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5049,7 +5073,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5088,7 +5112,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5106,7 +5130,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5124,7 +5148,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5148,7 +5172,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for KOMMANDO." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5172,7 +5196,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre NAVN er skrivebeskyttet." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5190,7 +5214,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5217,7 +5241,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen af det genoptagede job." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5236,7 +5260,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5291,7 +5315,7 @@ msgstr "" " Afslutningsstatus:\n" " 0 eller 1 afhængigt af udtrykkets værdi." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5404,7 +5428,7 @@ msgstr "" " HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n" " \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5464,7 +5488,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5519,7 +5543,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5574,14 +5598,14 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5615,7 +5639,7 @@ msgstr "" "et\n" " ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5682,7 +5706,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en skrive- eller tildelingsfejl." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5730,7 +5754,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5755,7 +5779,7 @@ msgstr "" " der opstÃ¥r en fejl." # Fejlrapport -#: builtins.c:1996 +#: builtins.c:2000 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5817,7 +5841,7 @@ msgstr "" "hvis\n" " der ikke er defineret en fuldførselsspecifikation for NAVN." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5896,7 +5920,7 @@ msgstr "" "hvis\n" " ARRAY er skrivebeskyttet." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5907,9 +5931,17 @@ msgstr "" " Et synonym for \"mapfile\"." #, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." +#, fuzzy +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licens GPLv3+: GNU GPL version 3 eller senere \n" + #~ msgid ":" #~ msgstr ":" @@ -5922,25 +5954,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licens GPLv3+: GNU GPL version 3 eller senere \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "xrealloc: kan ikke allokere %lu bytes (%lu bytes allokeret)" diff --git a/po/de.gmo b/po/de.gmo index 887bdc7b1..44e52bbc8 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 689eba6eb..b99200276 100644 --- a/po/de.po +++ b/po/de.po @@ -1,138 +1,139 @@ -# German language file for GNU Bash 4.4-beta1 +# German language file for GNU Bash 4.4 # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Nils Naumann , 1996-2016. +# Nils Naumann , 1996-2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-08-27 15:19+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-06-11 12:12+0200\n" "Last-Translator: Nils Naumann \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Language: de\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Falscher Feldbezeichner." -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: Entferne das Nameref Attribut." -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Ungültiger Schlüssel für das assoziative Array." -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays " "benötigt." -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " "finden." -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen." -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "Klammererweiterung: Konnte für %d Elemente keinen Speicher zuweisen." -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen." -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': Ungültiger Alias Name." -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "Zeileneditierung ist nicht aktiviert." -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': Ungültiger KEYMAP Name." +msgstr "`%s': Ungültiger KEYMAP-Name." -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Nicht lesbar: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': Bindung kann nicht gelöst werden." - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Unbekannter Funktionsname." -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ist keiner Taste zugeordnet.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kann aufgerufen werden durch " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': Bindung kann nicht gelöst werden." + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "Schleifen Zähler" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll." @@ -144,164 +145,163 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "Zu viele Argumente." -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "kein anderes Verzeichnis" +msgstr "NULL Verzeichnis" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD ist nicht zugewiesen." # Debug Ausgabe -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "Zeile %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "Warnung: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Aufruf: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: Die Option erfordert ein Argument." -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: Ein numerischer Parameter ist erforderlich." -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': Ist kein gültiger Bezeichner." -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "Ungültige Oktalzahl." -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "Ungültige Zahl." -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Ungültige Signalbezeichnung." -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "Argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: Kein solcher Job." -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: Keine Job Steuerung in dieser Shell." -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "Keine Job Steuerung in dieser Shell." -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: gesperrt" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "gesperrt" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: Ist kein Shell Kommando." -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "Schreibfehler: %s." -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "Fehler beim Setzen der Terminalattribute: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "Fehler beim Ermitteln der Terminalattribute: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Job Bezeichnung." -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "In dieser Version ist keine Hilfe verfügbar." @@ -310,69 +310,69 @@ msgstr "In dieser Version ist keine Hilfe verfügbar." msgid "%s: invalid action name" msgstr "%s: Ungültige Methode." -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: Zirkularbezug auf indirekte Variable." -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "`%s': Ungültiger Variablenname." +msgstr "`%s': Ungültiger Name für indirekte Variablenreferenz." -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "Mit `-f' können keine Funktionen erzeugt werden." -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: Schreibgeschützte Funktion." -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -395,7 +395,7 @@ msgstr "Kann %s nicht in der dynamischen Bibiliothek finden %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "Laden der Funktion %s lieferte ein Fehler (%d): Nicht geladen." #: builtins/enable.def:512 #, c-format @@ -407,68 +407,68 @@ msgstr "%s: Ist nicht dynamisch geladen." msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: Ist keine normale Datei." -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Kann nicht ausführen: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "Abgemeldet\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "Keine Login Shell: Mit `exit' abmelden!" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Es gibt noch angehaltene Prozesse.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Es gibt noch laufende Prozesse.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Kein Kommando gefunden." -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Kann die tempräre Datei nicht öffnen: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "gegenwärtig" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "Job %d wurde ohne Jobsteuerung gestartet." @@ -483,28 +483,27 @@ msgstr "%s: Ungültige Option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: Diese Option erfordert ein Argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Hashing deaktiviert." -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Die Hashtabelle ist leer.\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "Treffer\tBefehl\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell Kommandos auf die das Schlüsselwort zutrifft `" msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -512,12 +511,12 @@ msgstr "" "Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' " "oder `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +536,21 @@ msgstr "" "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Es darf nur eine Option aus -anrw angegeben werden." -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: Ungültiges Argument." +msgstr "%s: Ungültiger Zeitstempel." -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -564,16 +564,16 @@ msgstr "%s: inlib gescheitert." msgid "no other options allowed with `-x'" msgstr "Keine weiteren Optionen mit `-x' erlaubt." -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein." -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "Ausdruck erwartet." @@ -582,69 +582,69 @@ msgstr "Ausdruck erwartet." msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Datei-Deskriptor Angabe." -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Datei-Deskriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Zeilenindex für den Array Beginn." -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "Fehlender Name für die Array Variable." -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': Fehlendes Formatierungszeichen." -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': Ungültige Zeitformatangabe." -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': Ungültiges Formatierungszeichen." -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "Formatleseproblem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlendes Unicode Zeichen für \\%c." @@ -658,19 +658,19 @@ msgstr "kein anderes Verzeichnis" msgid "%s: invalid argument" msgstr "%s: Ungültiges Argument." -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "Der Verzeichnisstapel ist leer." -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "Verzeichnisstapelindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +712,7 @@ msgstr "" "\t-N\tZeigt den N'ten Eintrag von rechts an, der von »dirs« ausgegeben\n" "\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +758,7 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verueichnisstapel an." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -799,48 +799,48 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verzeichnisstapel an." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten Skript " -"möglich." +"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten " +"Skript möglich." -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: `unset' nicht möglich." -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: Ist keine Funktion." -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: exportieren nicht möglich." @@ -849,20 +849,20 @@ msgstr "%s: exportieren nicht möglich." msgid "shift count" msgstr "Verschiebezähler" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Shell Optionen Name." -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "Ein Dateiname wird as Argument benötigt." -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: Datei nicht gefunden." @@ -876,61 +876,61 @@ msgstr "Kann die Shell nicht unterbrechen." msgid "cannot suspend a login shell" msgstr "Kann die Loginshell nicht unterbrechen." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ist ein Alias von `%s'.\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s ist eine Funktion.\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s ist eine spezielle eingebaute Funktion.\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s ist %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: Ungültiges Grenzwertargument." -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" @@ -949,205 +949,210 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus." msgid "`%c': invalid symbolic mode character" msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " Zeile " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "Letztes Kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abbruch..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFO: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" # Programmierfehler -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Kann die Binärdatei nicht ausführen: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' ist eine spezielle eingebaute Funktion." -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "Zu viele Rekursionen in Ausdruck." -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "Rekursionsstapel leer." -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "Syntaxfehler im Ausdruck." -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "Versuchte Zuweisung zu keiner Variablen." -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Syntaxfehler im Ausdruck." + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "Division durch 0." -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "Fehler: Falscher Zuweisungsoperator." -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "`:' für ein bedingten Ausdruck erwaret." -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "Der Exponent ist kleiner als 0." -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "Fehlende `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "Syntax Fehler: Operator erwartet." -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")." -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen." -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen." -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen." # Debug Ausgabe -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." @@ -1156,159 +1161,165 @@ 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:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: %ld: Prozeßnummer existiert nicht." +msgstr "describe_pid: %ld: Prozessnummer existiert nicht." -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Fertig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Läuft" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" # interner Fehler -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: Prozeß %ld wurde nicht von dieser Shell gestartet." +msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet." -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: Der Job %d ist gestoppt." -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: Der Job ist beendet." -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: Der Job %d läuft bereits im Hintergrund." -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +# interner Fehler +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "Keine Job Steuerung in dieser Shell." -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Speicherzusicherung gescheitert: %s.\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1317,41 +1328,41 @@ msgstr "" "\\r\n" "malloc: %s:%d: Speicherzusicherung verpfuscht\\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "Unbekannt" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" "Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" @@ -1398,22 +1409,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe." msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)." -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)." -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s" @@ -1432,151 +1443,151 @@ msgstr "Sie haben neue Post in $_." msgid "The mail in %s has been read\n" msgstr "Die Post in %s wurde bereits gelesen.\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "Syntax Fehler: unerwartetes `;'." -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "Syntax Fehler: `((%s))'." # interner Fehler -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " "(erwartet wird `%s')." -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach `%c' erreicht." -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach `]]' erreicht." -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'." -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingen Ausdruck." -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "`)' erwartet." -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "Syntax Fehler: Unerwartetes Dateiende." -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "Syntax Fehler" # Du oder Sie? -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach passender `)' erreicht." -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1586,109 +1597,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: Falsches Verbindungszeichen `%d'." -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: Ungültige Dateibeschreibung." -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "Kann die temporäre Datei für das Hier Dokument nicht anlegen: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" -msgstr "/tmp muß ein gültiger Verzeichnisname sein." +msgstr "/tmp muss ein gültiger Verzeichnisname sein." -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "Konnte nicht die uid in %d ändern: Die geltende uid ist %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "Konnte nicht die gid in %d ändern: Die geltende gid ist %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt." -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Ist ein Verzeichnis." -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1697,50 +1712,50 @@ msgstr "" "Aufruf:\t%s [Lange GNU Option] [Option] ...\n" "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU Optionen:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD oder -c Kommando\toder -O shopt_option (Nur Aufruf)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "`%s -c \"help set\"' für mehr Informationen über Shell-Optionen.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "`%s -c help' für mehr Information über Shell-Kommandos.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Bash Homepage: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Allgemeine Hilfe für GNU Software: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" @@ -1819,11 +1834,11 @@ msgstr "Angehalten (Signal)" #: siglist.c:127 msgid "Continue" -msgstr "Prozeßbearbeitung wieder aufgenommen." +msgstr "Prozessbearbeitung wieder aufgenommen." #: siglist.c:135 msgid "Child death or stop" -msgstr "Kindprozeß abgebrochen oder gestoppt." +msgstr "Kindprozess abgebrochen oder gestoppt." #: siglist.c:139 msgid "Stopped (tty input)" @@ -1883,7 +1898,7 @@ msgstr "Systemausfall steht bevor." #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "Verlege den Prozeß auf einen anderen Prozessor." +msgstr "Verlege den Prozess auf einen anderen Prozessor." #: siglist.c:199 msgid "programming error" @@ -1914,23 +1929,23 @@ msgstr "Unbekannte Signalnummer." msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" -msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen." +msgstr "Kann keine Pipe für die Prozessersetzung erzeugen." -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" -msgstr "Kann den Kindsprozess für die Prozeßersetzung nicht erzeugen." +msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen." #: subst.c:5848 #, c-format @@ -1947,61 +1962,65 @@ msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d." -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." +msgstr "Kommansosubstitution: NULL byte in der Eingabe ignoriert." -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren." +msgstr "Kommandosubstitution: Kann Pipe nicht als fd 1 duplizieren." -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Falsche Variablenersetzung." - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Ungültige indirekte Expansion" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "`%s': Ungültiger Variablenname." -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: Parameter ist Null oder nicht gesetzt." + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist Null oder nicht gesetzt." # interner Fehler -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Substitution." + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2009,12 +2028,12 @@ msgstr "" "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " "Ersetzungen erzwingen." -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" @@ -2037,115 +2056,114 @@ msgstr "`)' erwartet." msgid "`)' expected, found %s" msgstr "`)' erwartet, %s gefunden." -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "Fehlende `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "Der Shell Level (%d) ist zu hoch und wird auf 1 zurückgesetzt." -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Der Variable könnte kein Wert zugewiesen sein." -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Kann nicht als Datei geöffnet werden." -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches." #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2168,22 +2186,22 @@ msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: Konnte nicht %lu Bytes reservieren." -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren." @@ -2202,8 +2220,8 @@ msgid "" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" "bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u\n" -"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline " -"Funktion oder Kommando]" +"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline-" +"Funktion oder -Kommando]" #: builtins.c:56 msgid "break [n]" @@ -2235,7 +2253,7 @@ msgstr "command [-pVv] Kommando [Argument ...]" #: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrntux] [-p] Name[=Wert] ..." +msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]" # #: builtins.c:80 @@ -2313,16 +2331,15 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [Jobbezeichnung ...]" +msgstr "disown [-h] [-ar] [Jobbezeichnung ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder " +"kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder " "kill -l [Signalname]" #: builtins.c:136 @@ -2398,7 +2415,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2521,9 +2539,10 @@ msgstr "" "Callback] [-c Menge] [Feldvariable]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c " "Menge] [Feldvariable]" @@ -2626,8 +2645,8 @@ msgid "" msgstr "" "Bestimmt Readline Tastenzuordnungen und Variablen.\n" " \n" -" Weist eine Tastensequenz einer Readline Funktion oder einem Makro\n" -" zu oder setzt eine Readline Variable. Der Argument syntax ist zu\n" +" Weist eine Tastensequenz einer Readlinefunktion oder -makro zu\n" +" oder setzt eine Readlinevariable. Die Argumentsyntax ist zu\n" " den Einträgen in ~/.inputrc äquivalent, aber sie müssen als\n" " einzelnes Argument übergeben werden. Z.B: bind '\"\\C-x\\C-r\":\n" " re-read-init-file'.\n" @@ -2635,7 +2654,7 @@ msgstr "" " Optionen:\n" " -m Keymap Benutzt KEYMAP as Tastaturbelegung für die " "Laufzeit\n" -" dieses Kommandos. Gültige Keymap Namen sind: " +" dieses Kommandos. Gültige Keymapnamen sind: " "emacs,\n" " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" "move,\n" @@ -2692,11 +2711,11 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" "Beendet for, while oder until Schleifen.\n" -" \n" -" Break beendet eine »for«, »while« oder »until« Schleife. Wenn »n«\n" -" angegeben ist, werden entsprechend viele geschachtelte Schleifen\n" -" beendet.\n" -" \n" +"\n" +" Break beendet eine »for«, »while« oder »until« Schleife. Wenn\n" +" »n« angegeben ist, werden entsprechend viele geschachtelte\n" +" Schleifen beendet.\n" +"\n" " Rückgabewert:\n" " Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1." @@ -2734,13 +2753,13 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" -"Führt eine in der Shell definierts Kommando aus.\n" -" \n" -" Führt eine in der Shell definertes Kommando aus. Dies ist dann\n" +"Führt ein in der Shell definiertes Kommando aus.\n" +"\n" +" Führt ein in der Shell definiertes Kommando aus. Dies ist dann\n" " nützlich, wenn es mit gleichem Namen als Funktion reimplementiert\n" " werden soll, aber die Funktionalität des eingebauten Kommandos\n" " innerhalb der neuen Funktion benötigt wird.\n" -" \n" +"\n" " Rückgabewert: \n" " Der Rückgabewert des aufgerufenen Kommandos oder »falsch«, wenn\n" " dieses nicht existiert." @@ -2761,6 +2780,20 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Gibt Informationen zum aktuellen Subrutinenaufruf aus.\n" +" \n" +" Ohne Argument wird die Zeilennummer und der Dateeiname angezeigt. Mit\n" +" Argument werden Zeilennummer, Subroutinnenname und Dateiname " +"ausgegeben.\n" +" Mit diesen Informationen kann ein Stack Trace erzeugt werden.\n" +" \n" +" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n" +" wobei 0 der aktuelle Funktionsaufruf ist.\n" +" \n" +" Rückgabewert:\n" +" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das " +"Argument\n" +" ungültig ist, sonst 0." # cd #: builtins.c:387 @@ -2808,44 +2841,44 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" "Wechselt das Arbeitsverzeichnis.\n" -" \n" +"\n" " Wechselt in das angegebene Abeitsverzeichnis. Ohne Angabe eines\n" " Verzeichnisses wird in das in der HOME Variable definierte\n" " Verzeichnis gewechselt.\n" -" \n" +"\n" " Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n" " angegebeben Verzeichnisnamen gesucht wird. Mehrere Pfade werden\n" " durch Doppelpunkte »:« getrennt. Ein leerer Pfadname entspricht\n" " dem aktuellen Verzeichnis. Mit einem vollständigen Pfadnamen wird\n" " CDPATH nicht benutzt.\n" -" \n" -" Wird kein entsprechendes Verzeichnis gefunden und die Shell Option\n" +"\n" +" Wird kein entsprechendes Verzeichnis gefunden und die Shelloption\n" " `cdable_vars' ist gesetzt, dann wird der `Wert' als Variable\n" " interpretiert. Dessen Inhalt wird dann als Verzeichnisname\n" " verwendet.\n" -" \n" +"\n" " Optionen:\n" -" -L\tErzwingt das symbolischen Verweisen gefolgt wird.\n" +" -L\tErzwingt, dass symbolischen Verweisen gefolgt wird.\n" " Symbolische Links im aktuellen Verzeichnis werden nach\n" " dem übergeordneten Verzeichnis aufgelöst.\n" " -P\tSymbolische Verweise werden ignoriert. Symbolische\n" " Links im aktuellen Verzeichnis werden vor dem\n" " übergeordneten Verzeichnis aufgelöst.\n" -" -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichns nicht\n" -" ermittelt werden kann, wird mit einem Rückgabwert\n" -" ungleich 0 abgebrochen.\n" -" -@ Wenn es das System unterstützt wird eine Datei mit \n" +" -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichnis\n" +" nicht ermittelt werden kann, wird mit einem\n" +" Rückgabwert ungleich 0 abgebrochen.\n" +" -@ Wenn es das System unterstützt, wird eine Datei mit\n" " erweiterten Attributen als ein Verzeichnis angezeigt,\n" " welches die erweiterten Attribute enthält.\n" -" \n" +"\n" " Standardmäßig wird symbolischen Verweisen gefolgt (Option -L).\n" " Das übergeordnete Verzeichnis wird ermittelt, indem der\n" " Dateiname am letzten Schrägstrich gekürzt wird oder es wird der\n" " Anfang von DIR verwendet.\n" -" \n" +"\n" " Rückgabewert:\n" "\n" -" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreiche\n" +" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreich\n" " gewechselt wurde, oder wenn die -P Option angegeben und $PWD\n" " erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0." @@ -2963,6 +2996,7 @@ msgstr "" # declare #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2981,11 +3015,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3043,7 +3077,6 @@ msgstr "" " oder ein Fehler trat auf." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3051,7 +3084,7 @@ msgid "" msgstr "" "Setzt Variablen Werte und Eigenschaften\n" "\n" -" Veraltet. Siehe `help declare'." +" Synonym für `declare'. Siehe `help declare'." #: builtins.c:538 msgid "" @@ -3069,7 +3102,7 @@ msgid "" msgstr "" "Definiert lokale Variablen.\n" " \n" -" Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu.\n" +" Erzeugt eine lokale Variable NAME und weist ihr den Wert VALUE zu.\n" " OPTION kann eine beliebige von `declare' akzeptierte Option sein.\n" "\n" " Lokale Variablen können nur innerhalb einer Funktion benutzt\n" @@ -3157,6 +3190,16 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Ausgabe der Argumente auf die Standardausgabe.\n" +" \n" +" Zeigt die Argumente auf der Standardausgabe von einem\n" +" Zeilenumbruch gefolgt an.\n" +" \n" +" Option:\n" +" -n\tkeinen Zeilenumbruch anfügen.\n" +" \n" +" Rückgabewert:\n" +" Gibt »Erfolg« zurück, außer nach einem Schreibfehler." # enable #: builtins.c:606 @@ -3368,7 +3411,7 @@ msgid "" msgstr "" "Beendet die aktuelle Shell.\n" "\n" -" Beendt die die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " +" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " "angegeben ist,\n" " wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." @@ -3486,6 +3529,7 @@ msgstr "" # help #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3500,7 +3544,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3535,7 +3579,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3560,7 +3605,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3584,7 +3629,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3601,7 +3646,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3624,7 +3669,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3669,7 +3714,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3690,7 +3735,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3721,7 +3766,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3733,7 +3778,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3819,7 +3864,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3841,7 +3886,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3860,7 +3905,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3881,7 +3926,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3892,7 +3937,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3906,7 +3951,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3920,7 +3965,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4004,7 +4049,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4018,7 +4063,7 @@ msgstr "" " schließt." # times -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4037,7 +4082,7 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4081,7 +4126,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4111,7 +4156,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4160,7 +4205,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4178,7 +4223,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4186,19 +4231,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4213,7 +4260,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4226,7 +4273,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4243,7 +4290,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4263,7 +4310,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4279,7 +4326,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4290,7 +4337,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4311,7 +4358,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4322,7 +4369,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4333,7 +4380,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4346,7 +4393,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4360,7 +4407,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4371,7 +4418,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4386,7 +4433,7 @@ msgid "" msgstr "" # (( )) -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4406,7 +4453,7 @@ msgstr "" " Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" " ergibt, sonst »0«." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -4435,7 +4482,7 @@ msgid "" msgstr "" # variable_help -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4526,13 +4573,13 @@ msgstr "" " SHELLOPTS Durch Doppelpunkt getrennte Liste der aktiven\n" " Shell Optionen.\n" " TERM\tName des aktuellen Terminaltyps.\n" -" auto_resume Ein Wert ungleich Null bewirkt, daß ein einzelnes\n" +" auto_resume Ein Wert ungleich Null bewirkt, dass ein einzelnes\n" " Kommando auf einer Zeile zunächst in der Liste\n" " gegenwärtig gestoppter Jobs gesucht und dieser in den\n" -" Vordergrund geholt wird. `exact' bewirkt, daß das\n" +" Vordergrund geholt wird. `exact' bewirkt, dass das\n" " Kommando genau dem Kommando in der Liste der\n" -" gestoppten Jobs entsprechen muß. Wenn die Variable den\n" -" Wert `substring' enthält, muß das Kommando einem\n" +" gestoppten Jobs entsprechen muss. Wenn die Variable den\n" +" Wert `substring' enthält, muss das Kommando einem\n" " Substring der Jobbezeichnung entsprechen. Bei einem\n" " anderen Wert müssen die ersten Zeichen übereinstimmen.\n" " histchars Zeichen, die die Befehlswiederholung und die\n" @@ -4547,7 +4594,7 @@ msgstr "" " Kommandos angibt.\n" # pushd -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -4579,22 +4626,22 @@ msgid "" msgstr "" "Fügt ein Verzeichnis dem Stapel hinzu.\n" "\n" -" Legt ein Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" +" Legt einen Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" " diesen so, dass das aktuelle Arbeitsverzeichnis oben liegt. Ohne\n" " Argumente werden die obersten zwei Verzeichnisse auf dem Stapel\n" " vertauscht.\n" "\n" " Optionen: -n Es wird nur das angebene Verzeichnis dem Stapel\n" -" \thinzugefügt aber nicht in das Verzeichnis gewechselt.\n" +" \thinzugefügt, aber nicht in das Verzeichnis gewechselt.\n" "\n" " Argumente: \n" -" +N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" -" \t`dirs',gezählt von links) oben auf dem Stapels liegt.\n" +" +N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von links) oben auf dem Stapels liegt.\n" +"\n" +" -N\tRotiert den Stapel so, dass das N'te Verzeichnis (angezeigt\n" +" von `dirs', gezählt von rechts) sich an der Spitze des Stapels\n" +" \tbefindet.\n" "\n" -" -N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" -" \t-`dirs',gezählt von rechts) sich an der Spitze des Stapels\n" -" \t-befindet.\n" -" \n" " Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt\n" " werden.\n" "\n" @@ -4603,7 +4650,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # popd -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4657,7 +4704,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4711,14 +4758,14 @@ msgstr "" " Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" " ein Fehler auftritt." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4751,7 +4798,7 @@ msgstr "" " worden ist, wird Fehler zurückgegeben." # printf -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4792,7 +4839,7 @@ msgstr "" "Returns success unless an invalid option is given or a write or\n" " assignment error occurs.<" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4819,7 +4866,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4832,7 +4879,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4863,7 +4910,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4906,7 +4953,7 @@ msgid "" msgstr "" # readarray -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/el.gmo b/po/el.gmo index f7c64e50c..274d13262 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index d57d327cc..a157614b0 100644 --- a/po/el.po +++ b/po/el.po @@ -2,135 +2,136 @@ # Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Lefteris Dimitroulakis , 2013, 2016. +# Lefteris Dimitroulakis , 2013, 2016, 2017. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-06-02 01:32+0300\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-06-21 17:08+0300\n" "Last-Translator: Lefteris Dimitroulakis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: el\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" -msgstr "" +msgstr "κακός δείκτης πίνακα" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: αφαίρεση του χαρακτηριστικού nameref " -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: αδυναμία μετατροπής indexed πίνακα σε associative πίνακα " -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" -msgstr "" +msgstr "%s: μη έγκυρο κλειδί associative πίνακα " -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "" +msgstr "%s: αδυναμία εκχώρησης σε μη αριθμητικό δείκτη " -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: αδυναμία δημιουργίας: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: δεν μπορώ να βρω keymap για εντολή" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"»" +msgstr "%s: ο πρώτος μη-λευκό διάστημα χαρακτήρας δεν είναι «\"» " -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "όχι «%c» κλεισήματος σε %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" -msgstr "" +msgstr "%s: απουσιάζει διαχωριστής δίστιγμο " -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %s " -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για %d στοιχεία " -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "brace expansion: αδυναμία εκχώρησης μνήμης για «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: μη έγκυρο ψευδώνημο" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "μη ενεργοποιημένο line editing" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: μη έγκυρο όνομα keymap" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: αδυναμία ανάγνωσης: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: αδυναμία αποσύνδεσης" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: άγνωστο όνομα συνάρτησης" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτρο.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s μπορεί να κληθεί μέσω " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: αδυναμία αποσύνδεσης" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "αριθμός βρόχων" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "έχει μόνο νόημα σε ένα βρόχο «for», «while», ή «until»" @@ -140,239 +141,241 @@ msgid "" " \n" " Without EXPR, returns " msgstr "" +"Επιστρέφει το context της κλήσης της τρέχουσας υπορουτίνας.\n" +" \n" +" Χωρίς EXPR, επιστρέφει " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME δεν έχει οριστεί" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "πάρα πολλά ορίσματα" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "όχι άλλος κατάλογος" +msgstr "κατάλογος nul" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD δεν έχει οριστεί" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "γραμμή %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "προειδοποίηση: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: χρήση: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: η επιλογή απαιτεί όρισμα" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: απαιτείται αριθμητικό όρισμα" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: δεν βρέθηκε" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: μη έγκυρη επιλογή" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: μη έγκυρο όνομα επιλογής" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" -msgstr "" +msgstr "«%s»: μή έγκυρο αναγνωριστικό " -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "μη έγκυρος οκταδικός αριθμός" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "μη έγκυρος εξαδικός αριθμός" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "μη έγκυρος αριθμός" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: μη έγκυρη προδιαγραφή σήματος" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: όχι pid ή έγκυρο job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: μεταβλητή μόνο για ανάγνωση" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s εκτός ορίων" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "όρισμα" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s εκτός ορίων" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: δεν υπάρχει τέτοια εργασία" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "" +msgstr "%s: όχι έλεγχος εγασιών " -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "" +msgstr "όχι έλεγχος εργασιών" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" -msgstr "" +msgstr "%s: περιορισμένο " -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" -msgstr "" +msgstr "περιορισμένο" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "" +msgstr "%s: όχι ένα builtin κελύφους " -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "σφάλμα εγγραφής: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" -msgstr "" +msgstr "σφάλμα κατά τον ορισμό των χαρακτηριστικών τερματικού: %s " -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "σφάλμα κατά την λήψη των χαρακτηριστικών τερματικού: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "" +msgstr "%s: σφάλμα κατά την ανάκτηση τρέχοντος καταλόγου: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ασαφείς προδιαγραφές εργασίας" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση " #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: μη έγκυρο όνομα ενέργειας" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: δεν υπάρχει προδιαγραφή συμπλήρωσης" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -F μπορεί να μη δουλέψει όπως περιμένεις" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "προειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" -msgstr "" +msgstr "η λειτουργία συμπλήρωσης δεν εκτελείται επί του παρόντος " -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "μπορεί να χρησιμοποιηθεί μόνο μέσα σε συνάρτηση" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: η μεταβλητή αναφοράς δεν μπορεί να είναι πίνακας " -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: nameref αυτοαναφορά μεταβλητής δεν επιτρέπεται " -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: κυκλική αναφορά ονόματος " -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: μη έγκυρο όνομα μεταβλητής" +msgstr "«%s»: μη έγκυρο όνομα μεταβλητής για όνομα αναφοράς " -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "" "η επιλογή «-f» δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία συναρτήσεων" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: συνάρτηση μόνο για ανάγνωση" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: η σύνθετη εκχώρηση πίνακα απορρίφθηκε" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "" +msgstr "%s: αδυναμία καταστροφής μεταβλητής πίνακα κατ' αυτόν τον τρόπο " -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: αδυναμία μετατροπής associative πίνακα σε indexed πίνακα " #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -391,7 +394,7 @@ msgstr "αδυναμία εύρεσης %s στο κοινόχρηστο αντ #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "Η συνάρτηση φορτώματος του %s επιστρέφει λάθος (%d): δεν φορτώθηκε " #: builtins/enable.def:512 #, c-format @@ -403,71 +406,71 @@ msgstr "%s: δεν φορτώθηκε δυναμικά" msgid "%s: cannot delete: %s" msgstr "%s: αδυναμία διαγραφής: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: είναι κατάλογος" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: όχι κανονικό αρχείο" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: αρχείο πολύ μεγάλο" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: αδυναμία εκτέλεσης: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "όχι login shell: χρησιμοποίησε «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Υπάρχουν σταματημένες εργασίες.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Υπάρχουν εργασίες που τρέχουν.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "δεν βρέθηκε εντολή" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: αδυναμία ανοίγματος προσωρινού αρχείου: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "τρέχων" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "η εργασία %d ξεκίνησε χωρίς έλεγχο εργασιών " #: builtins/getopt.c:110 #, c-format @@ -479,28 +482,27 @@ msgstr "%s: μη επιτρεπόμενη επιλογή -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: η επιλογή απαιτεί ένα όρισμα -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" -msgstr "" +msgstr "hashing απενεργοποιημένο " -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: πίνακας hash κενός\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Εντολές κελύφους που ταιριάζουν στη λέξη-κλειδί `" msgstr[1] "Εντολές κελύφους που ταιριάζουν στις λέξεις-κλειδί" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -508,12 +510,12 @@ msgstr "" "ουδεμία βοήθεια ταιριάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή «info %" "s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: αδυναμία ανοίγματος: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -524,21 +526,31 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Αυτές οι εντολές ορίζονται εσωτερικά. Δώσε «help» για να δεις την λίστα.\n" +"Δώσε «help name» για να δεις περισσότερα για την συνάρτηση «name».\n" +"Χρησιμοποίησε «info bash» για να βρεις περισσότερα σχετικά με το κέλυφος.\n" +"Χρησιμοποίησε «man -k» ή «info» για να βρεις περισσότερα για εντολές από την " +"λίστα.\n" +"\n" +"Αστερίσκος (*) δίπλα στο όνομα σημαίνει ότι η εντολή είναι " +"απενεργοποιημένη.\n" +"\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "δεν μπορώ να χρησιμοποιήσω περισσότερες της μιας από τις -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "θέση στο ιστορικό" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: μη έγκυρο όρισμα" +msgstr "%s: μη έγκυρη χρονοσήμανση" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -552,16 +564,16 @@ msgstr "%s: αποτυχία inlib" msgid "no other options allowed with `-x'" msgstr "δεν επιτρέπονται άλλες επιλογές με την «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: ορίσματα πρέπει να είναι ID διεργασιών ή εργασιών" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Άγνωστο σφάλμα" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "αναμενόταν έκφραση" @@ -570,69 +582,69 @@ msgstr "αναμενόταν έκφραση" msgid "%s: not an indexed array" msgstr "%s: μη δικτοδοτημένος πίνακας" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: μη έγκυρη προδιαγραφή περιγραφέα αρχείου" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: μη έγκυρος περιγραφέας αρχείου: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: μη έγκυρος αριθμός γραμμής" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "" +msgstr "%s: μη έγκυρη αρχή πίνακα " -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" -msgstr "" +msgstr "%s: μη έγκυρο κβάντο του callback " -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "" +msgstr "όνομα μεταβλητής πίνακα κενό " -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "απαιτείται υποστήριξη μεταβλητής πίνακος" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "«%s»: απουσία χαρακτήρα φορμαρίσματος " -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: μη έγκυρη προδιαγραφή για φορμά χρόνου" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: μη έγκυρος χαρακτήρας φορμαρίσματος" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "προειδοποίηση: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "πρόβλημα ανάλυσης του format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "απουσία hex ψηφίου για \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "απουσία ψηφίου unicode για \\%c" @@ -646,19 +658,19 @@ msgstr "όχι άλλος κατάλογος" msgid "%s: invalid argument" msgstr "%s: μη έγκυρο όρισμα" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<όχι τρέχων κατάλογος>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "κενή στίβα καταλόγου" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "δείκτης στοίβας καταλόγου" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -682,7 +694,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -707,7 +719,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -728,136 +740,136 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: μη έγκυρη προδιαγραφή timeout " -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "σφάλμα ανάγνωσης: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "«επιστροφή» είναι μόνο δυνατή από συνάρτηση ή sourced script " -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "«unset» δεν μπορεί να εφαρμοστεί συγχρόνως σε συνάρτηση και μεταβλητή" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: αδυναμία «unset»" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: δεν είναι μεταβλητή πίνακα" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: δεν είναι συνάρτηση" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: αδυναμία εξαγωγής" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "" +msgstr "αριθμός του « shift »" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "οι επιλογές κελύφους δεν είναι δυνατόν συγχρόνως να ενεργοποιηθούν και " "απενεργοποιηθούν" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: μη έγκυρο όνομα επιλογής" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "απαιτείται όνομα αρχείου για όρισμα" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: αρχείο δεν βρέθηκε" #: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "αναστολή αδύνατη " #: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "" +msgstr "ένα κέλυφος σύνδεσης δεν μπορεί ν' ανασταλεί " -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s είναι ψευδώνημο του «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s αποτελεί δεσμευμένη λέξη του κελύφους\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s είναι συνάρτηση\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s είναι ένα ειδικό builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s είναι ένα builtin κελύφους\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s είναι %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: μη έγκυρο όρισμα ορίου" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: λάθος διαταγή" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" -msgstr "" +msgstr "%s: αδύνατον να πάρω το όριο: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "όριο" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: αδυναμία μεταβολής ορίου: %s" @@ -869,416 +881,427 @@ msgstr "οκταδικός αριθμός" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "`%c': μη έγκυρος τελεστής συμβολικού mode" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "`%c': μη έγκυρος χαρακτήρας συμβολικού mode " -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " γραμμή " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "τελευταία εντολή: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." -msgstr "" +msgstr "Ακύρωση..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" -msgstr "άγνωστο σφάλμα εντολής" +msgstr "σφάλμα άγνωστης εντολής" -#: error.c:464 +#: error.c:463 msgid "bad command type" -msgstr "" +msgstr "λάθος τύπος εντολής" -#: error.c:465 +#: error.c:464 msgid "bad connector" -msgstr "" +msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" -msgstr "" +msgstr "κακό άλμα" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" -msgstr "" +msgstr "%s: μεταβλητή χωρίς σύνδεση " -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσύνδεση\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "αδυναμία ανακατεύθυνσης τυπικής εισόδου από /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: μη έγκυρος χαρακτήρας μορφοποίησης" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη " -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεράστηκε (%d) " -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεράστηκε (%d) " -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάρτησης ξεπεράστηκε (%d) " -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: περιορισμός: δεν μπορεί να περιέχεται «/» σε όνομα εντολής" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: εντολή δεν βρέθηκε" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" -msgstr "" +msgstr "%s: %s: κακός interpreter " -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: αδυναμία εκτέλεσης δυαδικού αρχείου: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: είναι ειδικό builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "αδυναμία αντιγραφής του fd %d στον fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "συντακτικό σφάλμα στην έκφραση" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "απόπειρα ανάθεσης σε μη-μεταβλητή" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "συντακτικό σφάλμα στην έκφραση" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "διαίρεση διά 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" -msgstr "" +msgstr "bug: κακό σύμβολο για expassign " -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" -msgstr "" +msgstr "«:» αναμενόταν για μια έκφραση υπό συνθήκη" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "εκθέτης μικρότερος του 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "αναγνωριστικό αναμενόταν μετά από pre-increment ή pre-decrement " -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "λείπει «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntax error: αναμενόταν τελεστέος" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: μη έγκυρος αριθμητικός τελεστής" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (το λανθασμένο σύμβολο είναι \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "μη έγκυρη αριθμητική βάση" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "τιμή πολύ μεγάλη για βάση" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: σφάλμα έκφρασης\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: αδυναμία πρόσβασης στο γονικό κατάλογο" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "αδυναμία επανάταξης nodelay mode για fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "αδυναμία εκχώρησης νέου περιγραφέα αρχείου για είσοδο του bash από fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "" +msgstr "save_bash_input: ο buffer υπάρχει ήδη για νέο fd %d " #: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "η διεργασία κλώνος %d εμφανίζεται στην εργασία που τρέχει %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "διαγραφή σταματημένης εγασίας %d με ομάδα %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: διεργασία %5ld (%s) στη the_pipeline " -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: pid %5ld (%s) μαρκαρισμένη ως ακόμα ζωντανή " -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: δεν υπάρχει τέτοιο pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Σήμα %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "σταματημένο" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "σταματημένο(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" -msgstr "" +msgstr "υπό εκτέλεση" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Έξοδος %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Άγνωστη κατάσταση" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: διεργασία %ld δεν αποτελεί θυγατρική αυτού του κελύφους" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Δεν υπάρχουν στοιχεία για διεργασία %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: η εργασία %d είναι σταματημένη" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: η εργασία τερματίστηκε" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: εργασία %d ήδη στο παρασκήνιο" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" +"waitchld: ενεργοποίηση WNOHANG ώστε ν' αποφευχθεί οριστικό μπλοκάρισμα " -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: γραμμή %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(τώρα wd: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: αποτυχία getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "αδυναμία ρύθμισης της ομάδας της διεργασίας του τερματικού (%d) " -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "δεν υπάρχει job control σ'αυτό το κέλυφος" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: αποτυχημένη assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "άγνωστο" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: κλήθηκε με όρισμα ήδη ελευθερωμένο μπλοκ " -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου " -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: τα μεγέθη των κομματιών στην αρχή και το τέλος διαφέρουν " -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: κλήθηκε με όρισμα ένα μη εκχωρημένο μπλοκ " -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: εντοπίστηκε αρνητική υπερχείληση, mh_nbytes εκτός ορίου" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: μεγέθη κομματιών σ' αρχή και τέλος διαφέρουν " #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: πίνακας alloc γεμάτος με FIND_ALLOC;\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p ήδη στον πίνακα ως εκχωρισμένος;\n" #: lib/malloc/table.c:253 #, c-format @@ -1302,28 +1325,28 @@ msgstr "%s: μη έγκυρη υπηρεσία" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: κακιά προδιαγραφή διαδρομής δικτύου " #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "μη υποστηριζόμενες δικτιακές υπηρεσίες" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s" @@ -1341,147 +1364,150 @@ msgstr "Έχεις νέο μήνυμα στο $_" msgid "The mail in %s has been read\n" msgstr "Το μήνυμα στο %s διαβάστηκε\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: απαιτείται αριθμητική έκφραση" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "συντακτικό σφάλμα: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "" +msgstr "make_here_document: ο τύπος οδηγίας δεν είναι σωστός %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" +"here-document στη γραμμή %d με όριο το τέλος του αρχείου (αντί του «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: η οδηγία της ανακατεύθυνσης «%d» εκτός ορίων" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) υπερβαίνει το SIZE_MAX (%lu): γραμμή " +"κόπηκε " -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "ο μέγιστος αριθμός here-document ξεπεράστηκε " -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: μη αναμενόμενο σύμβολο «%s»" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" -msgstr "" +msgstr "συντακτικό σφάλμα σ' έκφραση υπό συνθήκη " -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "μη αναμενόμενο σύμβολο «%s», αναμενόταν «)»" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "αναμενόταν «)»" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα «%s» στον υπό αίρεση μοναδιαίο τελεστή " -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα για τον μοναδιαίο τελεστή " -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%s» βρέθηκε αντί για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" -msgstr "" +msgstr "αναμενόταν δυαδικός τελεστής υπό αίρεση " -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα «%s» για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "απροσδόκητο όρισμα για δυαδικό τελεστή υπό αίρεση " -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%c» σε εντολή υπό αίρεση " -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο «%s» σε εντολή υπό αίρεση " -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" -msgstr "" +msgstr "απροσδόκητο σύμβολο %d σε εντολή υπό αίρεση " -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σύμβολο «%s»" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "συντακτικό σφάλμα κοντά σε «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntax error: μη αναμενόμενο τέλος αρχείου" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "συντακτικό σφάλμα" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Χρήση «%s» για έξοδο από το κέλυφος.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: η συνάρτηση «%s» δεν βρέθηκε" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1491,109 +1517,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: μη έγκυρος περιγραφέας αρχείου" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: μη έγκυρη μορφή χαρακτήρα" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "περιγραφέας αρχείου εκτός ορίων" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ασαφής ανακατεύθυνση" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: αδυναμία εγγραφής πάνω σε υπάρχον αρχείο" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: αδυναμία ανακατεύθυνσης εξόδου" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "αδυναμία δημιουργίας προσωρινού αρχείου για here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port δεν υποστηρίζεται χωρίς δικτύωση" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "δεν μπόρεσα να βρω /tmp, παρακαλώ να τον δημιουργήσετε!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp πρέπει να είναι ένα έγκυρο όνομα αρχείου" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: μη έγκυρη επιλογή" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "" +msgstr "αδυναμία ρύθμισης uid σε %d: effective uid %d " -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "" +msgstr "αδυναμί ρύθμισης gid σε %d: effective gid %d " -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "αδυναμία εκκίνησης του debugger, debugging απενεργοποιημένο " -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: είναι κατάλογος" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Δεν έχω όνομα!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, έκδοση %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1602,60 +1632,62 @@ msgstr "" "Χρήση:\t%s [μακρά επιλογή GNU] [επιλογή] ...\n" "\t%s [μακρά επιλογή GNU] [επιλοη] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Μακρές επιλογές GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Επιλογές κελύφους:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "" +msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ή επιλογή -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Πληκτρολόγησε «%s -c \"help set\"» για πληροφορίες επί των επιλογών " "κελύφους.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Πληκτρολόγησε «%s -c help» για περισσότερες πληροφορίες σχετικά με τις " "ενσωματομένες στο κέλυφος εντολές.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Χρησιμοποίησε την εντολή «bashbug» για αναφορά σφαλμάτων.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "σελίδα του bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Γενική βοήθεια για την χρήση του λογισμικού GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: μη έγκυρη λειτουργία" #: siglist.c:48 msgid "Bogus signal" -msgstr "" +msgstr "Ψεύτικο σήματος " #: siglist.c:51 msgid "Hangup" @@ -1691,23 +1723,23 @@ msgstr "Εξαίρεση κινητής υποδιαστολής" #: siglist.c:87 msgid "Killed" -msgstr "" +msgstr "Killed" #: siglist.c:91 msgid "Bus error" -msgstr "" +msgstr "Bus error" #: siglist.c:95 msgid "Segmentation fault" -msgstr "" +msgstr "Σφάλμα κατάτμησης" #: siglist.c:99 msgid "Bad system call" -msgstr "" +msgstr "Κακή κλήση συστήματος " #: siglist.c:103 msgid "Broken pipe" -msgstr "" +msgstr "Σπασμένη σωλήνα" #: siglist.c:107 msgid "Alarm clock" @@ -1715,7 +1747,7 @@ msgstr "Ρολόι συναγερμού" #: siglist.c:111 msgid "Terminated" -msgstr "" +msgstr "τερματισμός" #: siglist.c:115 msgid "Urgent IO condition" @@ -1723,7 +1755,7 @@ msgstr "Επείγουσα κατάσταση IO" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "" +msgstr "Σταματημένο (σήμα)" #: siglist.c:127 msgid "Continue" @@ -1731,15 +1763,15 @@ msgstr "Συνέχεια" #: siglist.c:135 msgid "Child death or stop" -msgstr "" +msgstr "Child death or stop" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "" +msgstr "Σταματημένο (είσοδος tty)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "" +msgstr "Σταματημένο (έξοδος tty)" #: siglist.c:147 msgid "I/O ready" @@ -1771,11 +1803,11 @@ msgstr "" #: siglist.c:175 msgid "User signal 1" -msgstr "" +msgstr "Σήμα χρήστη 1" #: siglist.c:179 msgid "User signal 2" -msgstr "" +msgstr "Σήμα χρήστη 2 " #: siglist.c:183 msgid "HFT input data pending" @@ -1822,23 +1854,23 @@ msgstr "Άγνωστο σήμα #" msgid "Unknown Signal #%d" msgstr "Άγνωστο σήμα #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "" +msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" -msgstr "" +msgstr "%s: αδυναμία εκχώρησης λίστας σε στοιχείο του πίνακα " -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση διεργασίας " -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση διεργασίας " #: subst.c:5848 #, c-format @@ -1853,75 +1885,81 @@ msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s #: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "" +msgstr "αδυναμία αναπαραγωγής named pipe %s ως fd %d " -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s" +msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο " -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας σωλήνα για αντικατάσταση εντολής " -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" -msgstr "" +msgstr "αδυναμία δημιουργίας θυγατρικής για αντικατάσταση εντολής " -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" +msgstr "command_substitute: αδυναμία αναπαραγωγής σωλήνα ως fd 1 " -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" - -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: κακή αντικατάσταση" +msgstr "%s: μη έγκυρο όνομα μεταβλητής ως όνομα αναφοράς " -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" -msgstr "" +msgstr "%s: μη έγκυρη έμμεση επέκταση " -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: μη έγκυρο όνομα μεταβλητής" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: παράμετρος κενή ή δεν έχει οριστεί" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: έκφραση αρνητική < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: κακή αντικατάσταση" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: αδύνατη ανάθεση κατ' αυτόν τον τρόπο" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"μελλοντικές εκδόσεις του κελύφους θα επιβάλουν την αποτίμηση ως μια " +"αριθμητική αντικατάσταση" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "κακή αντικατάσταση: δεν υπάρχει «`» που κλείνει στο %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" -msgstr "" +msgstr "χωρίς ταίριασμα: %s" #: test.c:147 msgid "argument expected" @@ -1941,114 +1979,115 @@ msgstr "αναμενόταν «)»" msgid "`)' expected, found %s" msgstr "σναμενόταν «)», βρέθηκε %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" -msgstr "" +msgstr "%s: αναμενόταν μοναδιαίος τελεστής " -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: αναμενόταν δυαδικός τελεστής" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "απούσα «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "μη έγκυρος αριθμός σήματος" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p " -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" +"run_pending_traps: ο διαχειριστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) " +"σε μένα " -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: κακό σήμα %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" -msgstr "" +msgstr "σφάλμα κατά την εισαγωγή του ορισμού της συνάρτησης «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "επίπεδο κελύφους (%d) πολύ υψηλό, επαναφορά στο 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" -msgstr "" +msgstr "%s: η μεταβλητή δεν μπορεί να δεχτεί τιμή " -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" -msgstr "all_local_variables: no function context at current scope" +msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s έχει κενό exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ο χαρακτήρας %d δεν έίναι έγκυρος στην exportstr για %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "απουσία «=» στην exportstr για %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: μη έγκυρη τιμή για trace file descriptor" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "" +msgstr "%s: %s: τιμή συμβατότητας εκτός ορίου " #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2071,22 +2110,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: αδυναμία εκχώρησης %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes (%lu bytes εκχωρήθηκαν)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: αδυναμία εκχώρησης %lu bytes" @@ -2212,9 +2251,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2297,7 +2335,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2419,9 +2458,10 @@ msgstr "" "callback] [-c quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2525,6 +2565,13 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Ξαναρχίζει τους βρόχους for, while, ή until.\n" +" \n" +" Ξαναρχίζει την επόμενη επανάληψη του βρόχου FOR, WHILE ή UNTIL .\n" +" Αν N είναι ορισμένο, ξαναρχίζει το N-στο βρόχο.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Ο κωδικός εξόδου είναι 0 εκτός αν το N δεν είναι μαγαλύτερο ή ίσον του 1." #: builtins.c:354 msgid "" @@ -2652,6 +2699,10 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Επιστρέφει επιτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε επιτυχία." #: builtins.c:462 msgid "" @@ -2660,6 +2711,10 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" +"Επιστρέφει αποτυχημένο αποτέλεσμα.\n" +" \n" +" Κατάσταση Εξόδου:\n" +" Πάντοτε αποτυχία." #: builtins.c:471 msgid "" @@ -2699,11 +2754,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2726,6 +2781,9 @@ msgid "" " \n" " A synonym for `declare'. See `help declare'." msgstr "" +"Καθορίζει τιμές και χαρακτηριστκά μεταβλητής.\n" +" \n" +" Συνώνημο με «declare». Βλέπε «help declare»." #: builtins.c:538 msgid "" @@ -2775,6 +2833,36 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Γράφει ορίσματα στη κανονική έξοδο.\n" +" \n" +" Εμφανίζει τα ARG, χωρισμένα από χαρακτήρες απλού διαστήματος " +"ακολουθούμενα από\n" +" νέα γραμμή, στη τυπική έξοδο.\n" +" \n" +" Έπιλογές:\n" +" -n\tδεν επισυνάπτεται νέα γραμμή\n" +" -e\tενεργοποίηση ερμηνείας των παρακάτω backslash διαφυγής\n" +" -E\tρητή απενεργοποίηση ερμηνείας του backslash διαφυγής\n" +" \n" +" η «echo» ερμηνεύει τους επόμενους backslash-escaped χαρακτήρες:\n" +" \\a\tσυναγερμός (κουδούνι)\n" +" \\b\tbackspace\n" +" \\c\tκαταστέλλει την παραπέρα έξοδο\n" +" \\e\tχαρακτήρας διαφυγής\n" +" \\E\tχαρακτήρας διαφυγής\n" +" \\f\tνέα σελίδα\n" +" \\n\tνέα γραμμή\n" +" \\r\tcarriage return\n" +" \\t\tοριζόντιο tab\n" +" \\v\tκατακόρυφο tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tο χαρακτήρας με κωδικό ASCII NNN (οκταδικός), ο NNN μπορεί\n" +" \t\tνα είναι 0 έως 3 οκταδικά ψηφία\n" +" \\xHH\tο οκταδικός χαρακτήρας με τιμή HH (εξαδικός), ο HH\n" +" \t\tμπορεί να είναι ένα ή δύο εξαδικά ψηφία\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν συμβεί λάθος εγγραφής. " #: builtins.c:591 msgid "" @@ -2788,6 +2876,15 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Γράφει ορίσματα στην κανονική έξοδο.\n" +" \n" +" Εμφανίζει στην κανονική έξοδο τα ARG ακολουθούμενα από μια νέα γραμμή.\n" +" \n" +" Επιλογή:\n" +" -n\tδεν επισυνάπτεις μια νέα γραμμή\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν συμβεί σφάλμα. " #: builtins.c:606 msgid "" @@ -2827,6 +2924,15 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Εκτελεί ορίσματα σαν να είναι εντολή κελύφους.\n" +" \n" +" Συνδιάζει ARGs σε μια μοναδική συμβολοσειρά, χρησιμοποιεί το αποτέλεσμα " +"ως είσοδο στο κέλυφος,\n" +" και εκτελεί τις εντολές που προκύπτουν.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή " +"είναι κενή. " #: builtins.c:646 msgid "" @@ -2899,6 +3005,11 @@ 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. Αν το N παραληφθεί, η κατάσταση " +"εξόδου\n" +" είναι αυτή της τελευταίας εκτελεσμένης εντολής." #: builtins.c:718 msgid "" @@ -2908,6 +3019,11 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"Τερματισμός ενός κελύφους σύνδεσης.\n" +" \n" +" Τερματίζει ένα κέλυφος σύνδεσης με κατάσταση εξόδου N. Επιστρέφει σφάλμα " +"αν δεν εκτελείται\n" +" σ' ένα κέλυφος σύνδεσης. " #: builtins.c:728 msgid "" @@ -2950,6 +3066,16 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"Μετακίνηση της εργασίας στο προσκήνιο.\n" +" \n" +" Βάζει την εργασία που ορίζεται από JOB_SPEC στο προσκήνιο, κάνοντάς την\n" +" την τρέχουσα εργασία. Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται η " +"αντίληψη\n" +" που έχει το κέλυφος ως τρέχουσα εργασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Η κατάσταση της εργασίας που μπήκε στο προσκήνιο, ή κωδικός αποτυχίας " +"στην περίπτωση σφάλματος." #: builtins.c:773 msgid "" @@ -2964,6 +3090,16 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Μετακινεί εργασίες στο παρασκήνιο.\n" +" \n" +" Τοποθετεί τις εργασίες που ορίζονται από κάθε JOB_SPEC στο παρασκήνιο,\n" +" όπως αν άρχισαν με «&». Αν δεν δίνεται η JOB_SPEC, τότε χρησιμοποιείται " +"ή αντίληψη που έχει το κέλυφος\n" +" ως τρέχουσα εργασία.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφεται επιτυχία εκτός αν δεν έχει ενεργοποιηθεί job control ή έχει " +"συμβεί σφάλμα." #: builtins.c:787 msgid "" @@ -3004,7 +3140,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3020,7 +3156,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3045,7 +3182,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3069,7 +3206,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3085,8 +3222,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Αφαίρεση εργασιών από το τρέχον κέλυφος.\n" +" \n" +" Αφαιρεί κάθε όρισμα JOBSPEC από τον πίνακα ενεργών εργασιών. Στην " +"απουσία\n" +" JOBSPEC, τότε το κέλυφος χρησιμοποιεί την ιδέα που έχει περί της " +"τρέχουσας εργασίας.\n" +" \n" +" Επιλογές:\n" +" -a\tαφαιρεί όλες τις εργασίες αν δεν δοθεί JOBSPEC\n" +" -h\tσημαδεύει κάθε JOBSPEC έτσι ώστε το SIGHUP δεν στέλνεται στην " +"εργασία\n" +" \t\tαν το κέλυφος δεχτεί ένα σήμα SIGHUP\n" +" -r\tαφαιρεί μόνο εκτελούμενες εργασίες\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν έχει δοθεί μη έγκυρη επιλογή ή JOBSPEC." -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3109,7 +3262,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3154,7 +3307,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3175,7 +3328,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3206,7 +3359,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3218,7 +3371,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3304,7 +3457,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3326,7 +3479,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3345,7 +3498,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3366,7 +3519,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3376,8 +3529,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Ολίσθηση θεσιακών παραμέτρων.\n" +" \n" +" Μετονομασία των θεσιακών παραμέτρων $N+1,$N+2 ... to $1,$2 ... Αν N\n" +" δεν δίνεται, υποτίθεται πως είναι 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία εκτός αν N είναι αρνητικός ή μαγαλύτερο; από $#. " -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3391,7 +3551,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3405,7 +3565,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3487,16 +3647,112 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"Αποτίμηση δυνητικής έκφρασης.\n" +" \n" +" Τερματίζεται με κωδικό 0 (αληθής) ή 1 (ψευδής) ανάλογα\n" +" με την αποτίμηση της EXPR. Η έκφραση μπορεί να είναι μοναδιαία ή " +"δυαδική. Μοναδιαίες\n" +" εκφράσεις χρησιμοποιούνται συχνά για την εξέταση της κατάστασης " +"αρχείου. Υπάρχουν\n" +" τελεστές αλφαριθμητικών όπως και συγκρίσεως αριθμών.\n" +" \n" +" Η συμπεριφορά των τεστ εξαρτάται από τον αριθμό των ορισμάτων. " +"Αναφερθείτε\n" +" στη σελίδα εγχειριδίου του bash για τις ολοκληρωμένες προδιαγραφές.\n" +" \n" +" Τελεστές αρχείων:\n" +" \n" +" -a ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει.\n" +" -b ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ειδικό αρχείο μπλοκ.\n" +" -c ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ειδικό αρχείο χαρακτήρων.\n" +" -d ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι κατάλογος.\n" +" -e ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει.\n" +" -f ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και είναι κανονικό " +"αρχείο.\n" +" -g ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-group-id».\n" +" -h ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n" +" -L ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι συμβολικός σύνδεσμος.\n" +" -k ΑΡΧΕΙΟ Αληθής αν το αρχείο έχει ορισμένο το bit «sticky».\n" +" -p ΑΡΧΕΙΟ Αληθής αν το αρχείο μια named pipe.\n" +" -r ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι αναγνώσιμο από εσάς.\n" +" -s ΑΡΧΕΙΟ Αληθής αν το αρχείο υπάρχει και δεν είναι κενό.\n" +" -S ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι ένα socket.\n" +" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα " +"τερματικό.\n" +" -u ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι «set-user-id».\n" +" -w ΑΡΧΕΙΟ Αληθής αν το αρχείο εγγράψιμο από εσάς.\n" +" -x ΑΡΧΕΙΟ Αληθής αν το αρχείο είναι εκτελέσιμο από εσάς.\n" +" -O ΑΡΧΕΙΟ Αληθής αν το αρχείο is effectively owned by you.\n" +" -G ΑΡΧΕΙΟ Αληθής αν το αρχείο is effectively owned by your " +"group.\n" +" -N ΑΡΧΕΙΟ Αληθής αν το αρχείο μεταβλήθηκε από την τελευταία " +"φορά που διαβάστηκε.\n" +" \n" +" ΑΡΧΕΙΟ1 -nt ΑΡΧΕΙΟ2 Αληθής αν το αρχείο1 είναι νεότερο από το αρχείο2 " +"(σύμφωνα\n" +" με την ημερομηνία τροποποίηση).\n" +" \n" +" ΑΡΧΕΙΟ1 -ot ΑΡΧΕΙΟ2 Αληθές αν αρχείο1 είναι παλαιότερο από το " +"αρχείο2.\n" +" \n" +" ΑΡΧΕΙΟ1 -ef ΑΡΧΕΙΟ2 Αληθές αν το αρχείο1 είναι hard link στο " +"αρχείο2.\n" +" \n" +" Τελεστές συμβολοσειράς:\n" +" \n" +" -z STRING Αληθές αν η συμβολοσειρά είναι κενή.\n" +" \n" +" -n STRING\n" +" STRING Αληθές αν η συμβολοσειρά δεν είναι κενή.\n" +" \n" +" STRING1 = STRING2\n" +" Αληθές αν οι συμβολοσειρές είναι ίσες.\n" +" STRING1 != STRING2\n" +" Αληθές αν οι συμβολοσειρές δεν είναι ίσες.\n" +" STRING1 < STRING2\n" +" Αληθές αν η STRING1 προηγείται λεξικογραφικά της " +"STRING2.\n" +" STRING1 > STRING2\n" +" Αληθές αν η STRING1 έπεται λεξικογραφικά της STRING2.\n" +" \n" +" Άλλοι τελεστές:\n" +" \n" +" -o OPTION Αληθές αν η επιλογή του κελύφους OPTION έχει " +"ενεργοποιηθεί.\n" +" -v VAR Αληθές αν η μεταβλητή VAR έχει οριστεί.\n" +" -R VAR Αληθές αν η μεταβλητή VAR έχει οριστεί και είναι όνομα\n" +" αναφοράς.\n" +" ! EXPR Αληθές αν η expr είναι ψευδής.\n" +" EXPR1 -a EXPR2 Αληθές αν αμφότερες οι expr1 ΚΑΙ expr2 είναι αληθείς.\n" +" EXPR1 -o EXPR2 Αληθές αν είτε η expr1 Ή η expr2 είναι αληθής.\n" +" \n" +" arg1 OP arg2 Αρηθμιτικά τεστ. OP είναι ένα από τα -eq, -ne,\n" +" -lt, -le, -gt, ή -ge.\n" +" \n" +" Αριθμητικοί δυαδικοί τελεστές επιστρέφουν αληθές αν ARG1 είναι ίσο, μη-" +"ίσο,\n" +" μικρότερο-από, μικρότερο-από-ή-ίσο, μεγαλύτερο-από, ή μεγαλύτερο-από-ή-" +"ίσο\n" +" από το ARG2.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει επιτυχία αν EXPR αποτιμάται σε αληθές, αποτυχία αν EXPR " +"αποτιμάται σε\n" +" ψευδές ή αν δίδεται ένα μη έγκυρο όρισμα." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"Αποτιμά δυνητική έκφραση.\n" +" \n" +" Συνώνυμο με το «test» builtin, αλλά το τελευταίο όρισμα πρέπει\n" +"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3507,8 +3763,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Εμφανίζει χρόνους διεργασιών.\n" +" \n" +" Εμφανίζει το χρόνο του χρήστη και συστήματος για το κέλυφος και όλες " +"τις\n" +" θυγατρικές διεργασίες.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Πάντα επιτυχία." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3552,7 +3816,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3582,7 +3846,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3631,7 +3895,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3649,7 +3913,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3657,19 +3921,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3684,7 +3950,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3696,8 +3962,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Εκτέλεση εντολών για μέλος μιας λίστας.\n" +" \n" +" Ο βρόχος «for» εκτελεί μια αλληλουχία εντολών για κάθε μέλος\n" +" μιας λίστας. Αν «in ΛΕΞΕΙΣ ...;» δεν δίνεται, τότε υποτίθεται η «in \"$@" +"\"».\n" +" Για κάθε στοιχείο στις ΛΕΞΕΙΣ, ΟΝΟΜΑ ορίζεται σ' αυτό το στοιχείο, και\n" +" οι ΕΝΤΟΛΕΣ εκτελούνται.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3713,8 +3989,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Αριθμητική βρόχου for.\n" +" \n" +" Ισοδύναμο με\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, και EXP3 είναι αριθμητικές εκφράσεις. Αν μια έκφραση\n" +" παραληφθεί, συμπεριφέρεται σαν να είχε αποτιμηθεί ίση με 1.\n" +" \n" +" Κατάσταση εξόδου:\n" +" Επιστρέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3734,7 +4023,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3750,7 +4039,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3761,7 +4050,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3782,7 +4071,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3793,7 +4082,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3804,7 +4093,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3817,7 +4106,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3831,7 +4120,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3842,7 +4131,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3856,7 +4145,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3866,8 +4155,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Αποτίμηση αριθμητικής εκφράσεως.\n" +" \n" +" Η ΕΚΦΡΑΣΗ αποτιμάται σύμφωνα με τους αριθμητικούς κανόνες.\n" +" Ισοδύναμο με το \"let ΕΚΦΡΑΣΗ\".\n" +" \n" +" Κωδικός εξόδου:\n" +" Επιστρέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστρέφει 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3895,7 +4191,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3949,7 +4245,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -3980,7 +4276,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4007,7 +4303,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4036,14 +4332,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4057,7 +4352,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4096,7 +4391,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4123,7 +4418,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4136,7 +4431,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4167,7 +4462,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4209,27 +4504,12 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"Ανάγνωση γραμμών από αρχείο σε μεταβλητή τύπου πίνακα.\n" +"Διαβάζει γραμμές από αρχείο σε μεταβλητή τύπου πίνακα.\n" " \n" " Συνώνημο του «mapfile»." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "αληθής" - -#~ msgid "false" -#~ msgstr "ψευδής" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo index 72a1a7b37..da6482637 100644 Binary files a/po/en@boldquot.gmo and b/po/en@boldquot.gmo differ diff --git a/po/en@boldquot.po b/po/en@boldquot.po index b93c2e8b0..af3ad7a2f 100644 --- a/po/en@boldquot.po +++ b/po/en@boldquot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2016. +# Automatically generated, 2018. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -30,10 +30,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-release\n" +"Project-Id-Version: GNU bash 5.0-alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2018-04-27 14:15-0400\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n" @@ -41,119 +41,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %u elements" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "line editing not enabled" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "‘%s’: invalid keymap name" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: cannot read: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "‘%s’: cannot unbind" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "‘%s’: unknown function name" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is not bound to any keys.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s can be invoked via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "loop count" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" @@ -167,162 +167,162 @@ msgstr "" " \n" " Without EXPR, returns " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "too many arguments" -#: builtins/cd.def:336 +#: builtins/cd.def:334 msgid "null directory" msgstr "null directory" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD not set" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "line %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "warning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeric argument required" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "invalid octal number" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "invalid number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: invalid signal specification" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no job control" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restricted" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "help not available in this version" @@ -331,69 +331,69 @@ msgstr "help not available in this version" msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: quoted compound array assignment deprecated" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -427,68 +427,68 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: cannot execute: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "not login shell: use ‘exit’" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "There are stopped jobs.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "There are running jobs.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no command found" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: cannot open temp file: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "current" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d started without job control" @@ -503,28 +503,27 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option requires an argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabled" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash table empty\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell commands matching keyword `" msgstr[1] "Shell commands matching keywords `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -532,12 +531,12 @@ msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ " "or ‘info %s’." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -558,20 +557,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "history position" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -585,16 +585,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: arguments must be process or job IDs" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "expression expected" @@ -603,69 +603,69 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -679,19 +679,19 @@ msgstr "no other directory" msgid "%s: invalid argument" msgstr "%s: invalid argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -736,7 +736,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -782,7 +782,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -822,45 +822,45 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: cannot export" @@ -869,20 +869,20 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file not found" @@ -895,61 +895,61 @@ msgstr "cannot suspend" msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is a special shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -968,202 +968,206 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " line " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "last command: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Aborting..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "unknown command error" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "bad command type" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "bad jump" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:506 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "division by 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "cannot allocate new file descriptor for bash input from fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" @@ -1172,153 +1176,157 @@ msgstr "save_bash_input: buffer already exists for new fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Running" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1327,39 +1335,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1401,22 +1409,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1434,35 +1442,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1471,112 +1479,112 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possible retry loop" @@ -1586,109 +1594,113 @@ msgstr "programmable_completion: %s: possible retry loop" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bad connector ‘%d’" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: invalid file descriptor" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1697,52 +1709,52 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Type ‘%s -c “help set”’ for more information about shell " "options.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1916,21 +1928,21 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" @@ -1949,58 +1961,63 @@ msgstr "cannot open named pipe %s for writing" msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5959 +#: subst.c:5990 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: bad substitution" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:6854 +#: subst.c:6962 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2008,12 +2025,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2036,107 +2053,107 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" @@ -2166,22 +2183,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: cannot allocate %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" @@ -2391,8 +2408,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2514,11 +2531,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:256 msgid "" @@ -2951,11 +2968,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2988,11 +3005,11 @@ msgstr "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using ‘+’ instead of ‘-’ turns off the given attribute.\n" @@ -3511,7 +3528,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3530,7 +3547,7 @@ msgstr "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3545,7 +3562,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3577,7 +3595,8 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3601,7 +3620,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3645,7 +3664,7 @@ msgstr "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3675,7 +3694,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3717,7 +3736,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3803,7 +3822,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3824,7 +3843,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3873,7 +3892,7 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3903,7 +3922,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3923,7 +3942,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4091,7 +4110,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4131,7 +4150,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4165,7 +4184,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4203,7 +4222,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4221,7 +4240,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4245,7 +4264,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4269,7 +4288,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4431,7 +4450,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4444,7 +4463,7 @@ msgstr "" "must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4464,7 +4483,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4549,7 +4568,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4607,7 +4626,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4702,7 +4721,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4734,7 +4753,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4742,13 +4761,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4759,18 +4780,20 @@ msgstr "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4796,7 +4819,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4820,7 +4843,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4850,7 +4873,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4887,7 +4910,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4915,7 +4938,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4933,7 +4956,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4971,7 +4994,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4989,7 +5012,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,7 +5030,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5029,7 +5052,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5053,7 +5076,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5071,7 +5094,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5096,7 +5119,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5114,7 +5137,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5168,7 +5191,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5272,7 +5295,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5330,7 +5353,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5382,7 +5405,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5437,14 +5460,13 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5460,9 +5482,8 @@ msgstr "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" @@ -5475,7 +5496,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5549,7 +5570,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5599,7 +5620,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5621,7 +5642,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5680,7 +5701,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5760,7 +5781,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/en@quot.gmo b/po/en@quot.gmo index 54803fc37..a569b25ae 100644 Binary files a/po/en@quot.gmo and b/po/en@quot.gmo differ diff --git a/po/en@quot.po b/po/en@quot.po index 96b71c68f..01ba9b9d1 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2016 Free Software Foundation, Inc. +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2016. +# Automatically generated, 2018. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -27,10 +27,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-release\n" +"Project-Id-Version: GNU bash 5.0-alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2018-04-27 14:15-0400\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "MIME-Version: 1.0\n" @@ -38,119 +38,119 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removing nameref attribute" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "brace expansion: failed to allocate memory for %u elements" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "line editing not enabled" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "‘%s’: invalid keymap name" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: cannot read: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "‘%s’: cannot unbind" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "‘%s’: unknown function name" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is not bound to any keys.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s can be invoked via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "‘%s’: cannot unbind" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "loop count" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" @@ -164,162 +164,162 @@ msgstr "" " \n" " Without EXPR, returns " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "too many arguments" -#: builtins/cd.def:336 +#: builtins/cd.def:334 msgid "null directory" msgstr "null directory" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD not set" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "line %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "warning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeric argument required" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "invalid octal number" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "invalid number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: invalid signal specification" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no job control" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restricted" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "help not available in this version" @@ -328,69 +328,69 @@ msgstr "help not available in this version" msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "‘%s’: invalid variable name for name reference" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: quoted compound array assignment deprecated" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -424,68 +424,68 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: cannot execute: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "not login shell: use ‘exit’" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "There are stopped jobs.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "There are running jobs.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "no command found" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: cannot open temp file: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "current" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d started without job control" @@ -500,40 +500,39 @@ msgstr "%s: illegal option -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: option requires an argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabled" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash table empty\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell commands matching keyword `" msgstr[1] "Shell commands matching keywords `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -552,20 +551,21 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "history position" -#: builtins/history.def:264 +#: builtins/history.def:331 #, c-format msgid "%s: invalid timestamp" msgstr "%s: invalid timestamp" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -579,16 +579,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: arguments must be process or job IDs" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "expression expected" @@ -597,69 +597,69 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -673,19 +673,19 @@ msgstr "no other directory" msgid "%s: invalid argument" msgstr "%s: invalid argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -729,7 +729,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -775,7 +775,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -813,45 +813,45 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: cannot export" @@ -860,20 +860,20 @@ msgstr "%s: cannot export" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file not found" @@ -886,61 +886,61 @@ msgstr "cannot suspend" msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is a special shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" @@ -959,202 +959,206 @@ msgstr "‘%c’: invalid symbolic mode operator" msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " line " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "last command: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Aborting..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "unknown command error" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "bad command type" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bad connector" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "bad jump" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] still exists" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum eval nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum source nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:506 +msgid "syntax error in variable assignment" +msgstr "syntax error in variable assignment" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "division by 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "cannot allocate new file descriptor for bash input from fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" @@ -1163,153 +1167,157 @@ msgstr "save_bash_input: buffer already exists for new fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Done" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Running" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld is not a child of this shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: no job control in background" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "no job control in this shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: failed assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1318,39 +1326,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion botched\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" @@ -1392,22 +1400,22 @@ msgstr "%s: bad network path specification" msgid "network operations not supported" msgstr "network operations not supported" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: cannot change locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: cannot change locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: cannot change locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" @@ -1425,35 +1433,35 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " @@ -1462,112 +1470,112 @@ msgstr "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "maximum here-document count exceeded" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possible retry loop" @@ -1577,109 +1585,113 @@ msgstr "programmable_completion: %s: possible retry loop" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bad connector ‘%d’" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: invalid file descriptor" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "pretty-printing mode ignored in interactive shells" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "cannot set uid to %d: effective uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "cannot set gid to %d: effective gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "cannot start debugger; debugging mode disabled" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Is a directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1688,49 +1700,49 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "bash home page: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "General help using GNU software: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1904,21 +1916,21 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" @@ -1937,58 +1949,63 @@ msgstr "cannot open named pipe %s for writing" msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5959 +#: subst.c:5990 msgid "command substitution: ignored null byte in input" msgstr "command substitution: ignored null byte in input" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: bad substitution" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: invalid indirect expansion" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: invalid variable name" -#: subst.c:6854 +#: subst.c:6962 +#, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter not set" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: bad substitution" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1996,12 +2013,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -2024,107 +2041,107 @@ msgstr "‘)’ expected" msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bad value in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: assigning integer to name reference" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: head of shell_variables not a function context" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: head of shell_variables not a temporary environment scope" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" @@ -2154,22 +2171,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: cannot allocate %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" @@ -2379,8 +2396,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-fn] [id ...]" #: builtins.c:181 msgid "wait [pid ...]" @@ -2502,11 +2519,11 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:256 msgid "" @@ -2935,11 +2952,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2972,11 +2989,11 @@ msgstr "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using ‘+’ instead of ‘-’ turns off the given attribute.\n" @@ -3489,7 +3506,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3508,7 +3525,7 @@ msgstr "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3523,7 +3540,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3554,7 +3572,8 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3578,7 +3597,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3622,7 +3641,7 @@ msgstr "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3652,7 +3671,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3694,7 +3713,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3780,7 +3799,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3801,7 +3820,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3850,7 +3869,7 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3880,7 +3899,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3900,7 +3919,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4068,7 +4087,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4108,7 +4127,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4142,7 +4161,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4180,7 +4199,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4198,7 +4217,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4222,7 +4241,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4246,7 +4265,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4408,7 +4427,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4420,7 +4439,7 @@ msgstr "" " This is a synonym for the “test” builtin, but the last argument must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4440,7 +4459,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4524,7 +4543,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4580,7 +4599,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4674,7 +4693,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4706,7 +4725,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4714,13 +4733,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4731,18 +4752,20 @@ msgstr "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4768,7 +4791,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4790,7 +4813,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4820,7 +4843,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4856,7 +4879,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4884,7 +4907,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4902,7 +4925,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4940,7 +4963,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4958,7 +4981,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4976,7 +4999,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4998,7 +5021,7 @@ msgstr "" " Exit Status:\n" " The coproc command returns an exit status of 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5022,7 +5045,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5040,7 +5063,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5064,7 +5087,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5082,7 +5105,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5134,7 +5157,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5238,7 +5261,7 @@ msgstr "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5296,7 +5319,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5346,7 +5369,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5400,14 +5423,13 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5423,9 +5445,8 @@ msgstr "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n" @@ -5438,7 +5459,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5512,7 +5533,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5562,7 +5583,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5584,7 +5605,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5642,7 +5663,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5722,7 +5743,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/eo.gmo b/po/eo.gmo index 90aef6b1c..cc2f9418e 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index f0a372e35..3516dec9a 100644 --- a/po/eo.po +++ b/po/eo.po @@ -1,10 +1,10 @@ # Esperanto language file for GNU Bash. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Sergio Pokrovskij , 1998, 2006, 2009, 2011, 2014, 2015. +# Sergio Pokrovskij , 1998, ... 2016. # -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.4/bash-4.4-beta/builtins"); -*- -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4-beta"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4/builtins"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4"); -*- # Stilaj notoj: # La angulaj citiloj limigas «plurajn vortojn», # 99-66 estas la citiloj de „unuvortaĵo‟ @@ -28,135 +28,136 @@ # unset malvalorizi (variablon); malaktivigi, malŝalti (opcion, nomon) msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.4-beta1\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-21 14:06+0300\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-22 23:59+0700\n" "Last-Translator: Sergio Pokrovskij \n" "Language-Team: Esperanto \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Misa tabel-indico" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Misa asocitabela ŝlosilo" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Valorizato havu nombran indicon" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Ne prosperis krei: %s" # XXX: internal_error -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "Mankas ferma „%c‟ en %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: Mankas disiga dupunkto" # XXX: internal_error -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s" # XXX: internal_error -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %d elementoj" # XXX: internal_error -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "liniredaktado ne estas ebligita" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s‟: Misa nomo por klavartabelo" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Ne eblas legi: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: Ne eblas malligi" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Nekonata funkcinomo" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s malhavas klavligon\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s vokeblas per " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: Ne eblas malligi" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "iteracinombrilo" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "Sencas nur en iteracio „for‟, „while‟ aÅ­ „until‟" @@ -170,163 +171,162 @@ msgstr "" "\n" " Sen ESPR liveras " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME malhavas valoron" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "Tro multe da argumentoj" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "Ne estas alia dosierujo" +msgstr "NUL-dosierujo" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD malhavas valoron" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linio %dª: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "Averto: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Uzmaniero: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: La opcio bezonas argumenton" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: Necesas nombra argumento" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: Ne trovita" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: Misa opcio" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: Misa opcinomo" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s‟ ne estas taÅ­ga nomo" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "Misa okuma nombro" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "Misa 16uma nombro" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "Misa nombro" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Misa signalindiko" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: Nurlega variablo" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s estas ekster sia variejo" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s estas ekster sia variejo" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: Ne estas tia laboro" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: Ĉi tiu ŝelo ne disponigas laborregadon" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "Laborregado ne disponeblas" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: Limigita" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "limigita" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "„%s‟ ne estas primitiva komando ŝela" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "Eraro ĉe skribo: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "Eraro ĉe agordado de terminalaj atributoj: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "Eraro ĉe akiro de terminalaj atributoj: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Ambigua laborindiko" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "helpilo mankas en ĉi tiu versio" @@ -335,69 +335,69 @@ msgstr "helpilo mankas en ĉi tiu versio" msgid "%s: invalid action name" msgstr "%s: Misa nomo de ago" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: Kompletigo ne estas specifita" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "Ni ne estas en plenumado de kompletiga funkcio" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "Uzeblas nur ene de funkcio" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: Referenca variablo ne povas esti tabelo" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: Nomreferenca variablo ne referencu sin mem" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: Cikla nomreferenco" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: Misa variablonomo por nomreferenco" +msgstr "„%s“: Misa variablonomo por nomreferenco" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "„-f‟ ne estas uzebla por fari funkciojn" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: Nurlega funkcio" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" @@ -431,68 +431,68 @@ msgstr "%s: Ne ŝargita dinamike" msgid "%s: cannot delete: %s" msgstr "%s: Ne eblas forigi: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s estas dosierujo" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: Ne ordinara dosiero" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: Tro granda dosiero" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Neplenumebla duuma dosiero" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Maleblas plenumi: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "adiaÅ­\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "La ŝelo ne estas saluta; eliru per «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Restas haltigitaj laboroj.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Restas rulataj laboroj.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Komando ne trovita" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Historia indiko" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Ne malfermiĝis labordosiero: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "kuranta" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "La laboro %d estas lanĉita sen laborregado" @@ -507,29 +507,28 @@ msgstr "%s: Misa opcio -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: La opcio bezonas argumenton -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Nomkonservado (haketado, «hashing») estas malŝaltita" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Hakettabelo estas malplena\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "Trafoj\tKomando\n" # ZZZ: aĉaj citiloj (fermita en la programo) -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ŝelaj komandoj kongruaj kun la ŝlosilvorto '" msgstr[1] "Ŝelaj komandoj kongruaj kun la ŝlosilvortoj '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -537,12 +536,12 @@ msgstr "" "Helpaĵo pri „%s‟ malestas.\n" "Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Fiaskis malfermo de %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -561,20 +560,21 @@ msgstr "" "Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Ne pli ol unu el -anrw estas uzebla" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "pozicio en la historio" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: MaltaÅ­ga argumento" +msgstr "%s: MaltaÅ­ga tempomarko" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: Historia malvolvo fiaskis" @@ -588,16 +588,16 @@ msgstr "%s: inlib fiaskis" msgid "no other options allowed with `-x'" msgstr "La uzo de „-x‟ malebligas aliajn opciojn" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nekonata eraro" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "Mankas esprimo" @@ -606,71 +606,71 @@ msgstr "Mankas esprimo" msgid "%s: not an indexed array" msgstr "%s: ĝi ne estas entjerindica tabelo" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Misa indiko de dosiernumero" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Misa dosiernumero: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: Misa lininombro" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: Misa tabelbazo" # Supozeble callback => retrovoko ?? -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: Misa kvanto ĉe retrovoko" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "Mankas nomo de tabelvariablo" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "necesas subteno de tabelvariabloj" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s‟: Mankas formata signo" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "%c: Misa tempoformato" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c‟: Misa signo formata" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "Averto: %s: %s" # XXX: internal_error -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "Miso ĉe analizado de formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "Mankas 16uma cifero por \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "Post „%c‟ mankas unikoda cifero" @@ -684,20 +684,20 @@ msgstr "Ne estas alia dosierujo" msgid "%s: invalid argument" msgstr "%s: MaltaÅ­ga argumento" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "Dosierujstako malplenas" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indico de dosierujstako" # dirs [-clpv] [+N] [-N] -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -740,7 +740,7 @@ msgstr "" "\tper „dirs‟ sen opcioj, numerante ekde 0." # pushd [dir | +N | -N] [-n] -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -786,7 +786,7 @@ msgstr "" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." # popd [+N | -N] [-n] -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -825,46 +825,46 @@ msgstr "" "\n" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Misa indiko de atendotempo" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "Lega (read) eraro: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: Malaktivigo fiaskis" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: Malaktivigo fiaskis: nurlega %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: Ne tabela variablo" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: Ne funkcio" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: Ne eblas eksporti" @@ -873,20 +873,20 @@ msgstr "%s: Ne eblas eksporti" msgid "shift count" msgstr "Nombrilo de „shift‟" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "Maleblas samtempe ŝalti kaj malŝalti ŝelan opcion" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Misa nomo de ŝela opcio" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "Necesas dosiernoma argumento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: Dosiero ne trovita" @@ -899,61 +899,61 @@ msgstr "Ne eblas halteti" msgid "cannot suspend a login shell" msgstr "Ne eblas haltetigi salutan ŝelon" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "„%s‟ alinomas jenon: «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s‟ estas ŝlosilvorto de la ŝelo\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s estas funkcio\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "„%s‟ estas speciala primitiva ŝelkomando\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "„%s‟ estas primitiva komando de la ŝelo\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "„%s‟ estas „%s‟\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s‟ estas metita en hakettabelon (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: MaltaÅ­ga argumento por limo" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c‟: Misa komando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Fiaskis provo legi limon: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limo" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Malprosperis ŝanĝi limon: %s" @@ -974,205 +974,210 @@ msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" msgid "`%c': invalid symbolic mode character" msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linio " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "La ĵusa komando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ĉesigado ..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMO: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "Nekonata komand-eraro" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "Misa komandotipo" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "Misa stir-operacio" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "Misa salto" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: Neligita variablo" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n" # XXX: internal error: -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s" # XXX: internal error: -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "Eraro en dukto" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: Komando ne trovita" # XXX: internal error: -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Misa interpretilo" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Neplenumebla duuma dosiero: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "„%s‟ estas primitiva komando speciala" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "Tro profunda rekursio en esprimo" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "Rekursistako elĉerpita" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "Sintaksa eraro en esprimo" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "Provo valorizi ne-variablon" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Sintaksa eraro en esprimo" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "Divido per 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "„:‟ mankas kondiĉa esprimo" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "Negativa eksponento" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "Post antaÅ­kremento aperu nomo de variablo" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "Mankas „)‟" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "Sintaksa eraro: Mankas operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "MaltaÅ­ga bazo nombrosistema" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "Tro granda valoro por bazo de nombrosistemo" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: Misa esprimo\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd: Ne eblas atingi patrajn dosierujojn" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Ne eblas reŝalti senprokrastan reĝimon por dosiernumero %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "Maleblas disponigi novan dosiernumeron por Baŝa enigo el n-ro %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron" @@ -1182,157 +1187,162 @@ msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: procezgrupo dukto" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata" # ifdef DEBUG ... internal_warning(): -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" # ifdef DEBUG ... internal_warning(): -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signalo %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Farite" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Haltigita" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Haltigita(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Rulata" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Farite(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Eliro %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Nekonata stato" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(nekropsio elŝutita)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (labordosierujo: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: La procezo %ld ne estas ido de ĉi tiu ŝelo" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Malestas informoj pri procezo %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: La laboro %d estas haltigita" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: La laboro finiĝis" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: La laboro %d jam estas fona" # XXX: internal warning: -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG iĝas ŝaltita por eviti nedifintan pendiĝon" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: linio %dª: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "(nekropsio elŝutita)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(nun labordosierujo estas: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fiaskis" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: liniaranĝo" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: liniaranĝo" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne prosperis atribui grupon (%d) de terminala procezo" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "Ĉi tiu ŝelo ne disponigas laborregadon" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Malveras la aserto: %s\n" # XXX: debug? -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1342,47 +1352,47 @@ msgstr "" "malloc: %s:%d: aserto sufokita\r\n" # XXX: internal error -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "nekonata" # XXX: debug? -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" # XXX: debug? -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: La argumento montras blokon jam malokupitan" # XXX: debug? -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" # XXX: debug? -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo" # XXX: debug? -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" @@ -1432,25 +1442,25 @@ msgid "network operations not supported" msgstr "Reta funkciado ne disponeblas" # XXX: internal warning: -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s)" # XXX: internal warning: -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Maleblas ŝanĝi lokaĵaron (%s): %s" # XXX: fatal_error -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s)" # XXX: fatal_error -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s): %s" @@ -1468,153 +1478,157 @@ msgstr "Nova poŝto en $_" msgid "The mail in %s has been read\n" msgstr "La poŝto en %s estas jam legita\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Sintaksa eraro: Necesas aritmetika esprimo" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "Sintaksa eraro: Neatendita „;‟" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "Sintaksa eraro: „((%s))‟" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Misa ordontipo %d" # internal_warning(): -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)" # XXX: programming_error -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" -#: parse.y:2324 +# internal_warning(): +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio " +"tranĉita" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "La nombro de tuj-documentoj superis sian maksimumon" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "Neatendita dosierfino dum serĉo de „]]‟" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "Sintaksa eraro en kondiĉa esprimo" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "Mankas „)‟" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "\n" msgstr "" "La hejmpaĝo de Baŝo (anglalingva): \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Ĝenerala helpilo pri uzo de GNUa programaro: \n" # XXX: internal_error -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Misa operacio" @@ -2000,21 +2019,21 @@ msgstr "Nekonata signalnumero" msgid "Unknown Signal #%d" msgstr "Nekonata signalo n-ro %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „%s‟ en %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Maleblas valorizi tabelanon per listo" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "Ne prosperis krei idon por proceza anstataÅ­igo" @@ -2033,72 +2052,76 @@ msgstr "Ne prosperis malfermi nomitan dukton %s por skribado" msgid "cannot duplicate named pipe %s as fd %d" msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" +msgstr "Komanda anstataÅ­igo: nul-bajto en enigaĵo, ignorita" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: Misa variablonomo por nomreferenco" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Misa anstataÅ­igo" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Misa malvolvo malrekta" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: MaltaÅ­ga variablonomo" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: Parametro estas NUL aÅ­ malaktiva" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parametro estas NUL aÅ­ malaktiva" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: subĉeno-esprimo < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Misa anstataÅ­igo" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ĉi tiel ne valorizebla" # XXX: internal warning: -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataÅ­igon" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "Nenio kongrua: %s" @@ -2121,129 +2144,128 @@ msgstr "Mankas „)‟" msgid "`)' expected, found %s" msgstr "AnstataÅ­ „)‟ troviĝas %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: Tie devas esti unuloka operacisigno" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: Tie devas esti duloka operacisigno" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "Mankas „]‟" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Misa signalnumero" # XXX: internal_warning -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p" # XXX: internal_warning -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Misa signalnumero %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "Eraro ĉe importo de funkcidifino por „%s‟" # XXX: internal_warning -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "%d estas tro granda ŝelnivelo; mallevita ĝis 1" # XXX: internal_error -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Variablo ne valorizebla" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: Misa variablonomo por nomreferenco" +msgstr "%s: Nomreferenco valorizata per entjero" # XXX: internal_error -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono" # XXX: internal_error -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "«exportstr» de %s estas NUL" # XXX: internal_error -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Misa signo %d en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" # XXX: internal_error -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: Mankas kunteksto de „global_variables‟" # XXX: internal_error -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono" # XXX: internal_error -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Ne malfermeblas kiel DOSIERO" # XXX: internal_error -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)" # # XXX: internal_error -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s kongruo-nivelo estas ekster sia variejo" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 ĉe «Free Software Foundation, Inc.»" +msgstr "Copyright (C) 2016 ĉe «Free Software Foundation, Inc.»" #: version.c:47 version2.c:47 msgid "" @@ -2266,24 +2288,24 @@ msgstr "Ĉi tiu programo estas libera; vi rajtas libere ĝin ŝanĝi kaj pludoni msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NENIA GARANTIO estas donita, tiom kiom tion permesas la leĝo." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: Malsukcesis okupi %lu bajtojn" # XXX: fatal_error -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" # XXX: fatal_error -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn" @@ -2404,7 +2426,7 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d DEŜOVO] [n] aÅ­\n" +"history [-c] [-d POZICIO] [n] aÅ­\n" "history -awr [DOSIERNOMO] aÅ­\n" "history -ps ARG [ARG...]" @@ -2415,9 +2437,8 @@ msgstr "" "jobs -x KOMANDO [ARGS]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [LABORINDIKO ...]" +msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]" #: builtins.c:134 msgid "" @@ -2501,7 +2522,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [REĜIMO]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [IND ...]" #: builtins.c:181 @@ -2626,9 +2648,10 @@ msgstr "" " [-C RETROVOKO] [-c KVANTO] [TABELO]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n" " [-C RETROVOKO] [-c KVANTO] [TABELO]" @@ -3047,6 +3070,7 @@ msgstr "" # declare [-aAfFgilnrtux] [-p] [name[=value] ...] # declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...] #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3065,11 +3089,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3123,7 +3147,6 @@ msgstr "" # typeset [-aAfFgilrtux] [-p] name[=value] ... #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3131,7 +3154,7 @@ msgid "" msgstr "" "Difinu atributojn kaj valorojn de variabloj\n" "\n" -" Arkaika. Vd «help declare»." +" Sinonimo de „declare“. Vd «help declare»." # local [option] name[=value] ... # local [OPCIO] NOMO[=VALORO] ... @@ -3623,6 +3646,7 @@ msgstr "" # help [-ds] [pattern ...] # help [-ds] [ŜABLONO ...] #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3637,7 +3661,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3664,7 +3688,7 @@ msgstr "" # ZZZ history [-c] [-d offset] [n] or # history -awr [filename] or # history -ps arg [arg...] => -# history [-c] [-d DEŜOVO] [n] aÅ­ +# history [-c] [-d POZICIO] [n] aÅ­ # history -awr [DOSIERNOMO] aÅ­ # history -ps ARG [ARG...] #: builtins.c:836 @@ -3677,7 +3701,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3709,7 +3734,7 @@ msgstr "" "\n" " Opcioj:\n" " -c forviŝu la tutan historion (forigu ĉiujn erojn el la listo)\n" -" -d forviŝu la linion kies numero estas DEŜOVO\n" +" -d POZICIO forviŝu la linion kies numero estas POZICIO\n" "\n" " -a aldonu la historiliniojn de la kuranta seanco al la\n" " historidosiero\n" @@ -3741,7 +3766,7 @@ msgstr "" # jobs -x command [args] => # jobs [-lnprs] [LABORINDIKO ...] aÅ­ # jobs -x KOMANDO [ARGS] -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3787,7 +3812,7 @@ msgstr "" " Ĉe „-x‟, la elirstato de la KOMANDO." # disown [-h] [-ar] [jobspec ...] -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3823,8 +3848,7 @@ msgstr "" # kill -l [sigspec] => # kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­ # kill -l [SIGNOM] -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3857,7 +3881,8 @@ msgstr "" " -n\tSIGNUM estas numero de signalo\n" " -l listigu signalnomojn; la eventuale sekvantaj entjeraj\n" " argumentoj estas signalnumeroj, ĉeeste de kiuj nur la al\n" -" ili respondaj signalnomoj estu eligataj.\n" +" ili respondaj signalnomoj estu eligataj\n" +" -L sinonimo por -l\n" "\n" " „kill‟ estas primitiva ŝelkomando pro du kaÅ­zoj:\n" " unue, ĝi ebligas uzi laborindikojn anstataÅ­ proceznumerojn;\n" @@ -3869,7 +3894,7 @@ msgstr "" # let arg [arg ...] # let ARG [ARG ...] -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3959,7 +3984,8 @@ msgstr "" # [-p prompt] [-t timeout] [-u fd] [name ...] # read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN] # [-p INVIT] [-t TLIM] [-u DN] [NOMO ...] -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3980,7 +4006,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4054,7 +4080,7 @@ msgstr "" # return [n] # return [N] -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -4076,8 +4102,7 @@ msgstr "" # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4230,8 +4255,8 @@ msgstr "" " -P\tLa simbolaj ligiloj estu travideblaj ĉe plenumo de komandoj\n" "\tkiuj ŝanĝas la kurantan dosierujon („cd‟ ktp uzu «fizikan»\n" "\tinterpreton de vojnomo).\n" -" -T\tSe aktiva, la DEBUG-kaptilon (DEBUG trap) heredas la ŝelaj\n" -"\tfunkcioj\n" +" -T\tSe aktiva, la ŝelaj funkcioj heredas la kaptilojn (Traps)\n" +"\tDEBUG kaj RETURN \n" " --\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" "\tSe tiaj argumentoj mankas, malvalorizu la numerparametrojn.\n" " -\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n" @@ -4248,7 +4273,7 @@ msgstr "" # unset [-f] [-v] [name ...] # unset [-f] [-v] [NOMO ...] -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4289,7 +4314,7 @@ msgstr "" # export [-fn] [name[=value] ...] or export -p # export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4325,7 +4350,7 @@ msgstr "" # readonly [-aAf] [name[=value] ...] or readonly -p # readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4364,7 +4389,7 @@ msgstr "" " Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." # shift [n] -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4381,7 +4406,7 @@ msgstr "" # source filename [arguments] # source DOSIERNOMO [ARGUMENTOJ] -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4406,7 +4431,7 @@ msgstr "" " DOSIERNOMO ne legeblas." # suspend [-f] -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4432,7 +4457,7 @@ msgstr "" # test [expr] # test [ESPRIMO] -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4589,7 +4614,7 @@ msgstr "" " argumento." # [ arg... ] -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4599,7 +4624,7 @@ msgstr "" "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" " argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4620,7 +4645,7 @@ msgstr "" # trap [-lp] [[arg] signal_spec ...] # trap [-lp] [[ARG] SIGNALINDIKO ...] -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4699,7 +4724,7 @@ msgstr "" # type [-afptP] name [name ...] # type [-afptP] NOMO [NOMO ...] -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4757,7 +4782,7 @@ msgstr "" # ulimit [-SHacdefilmnpqrstuvx] [limit] # ulimit [-SHacdefilmnpqrstuvx] [LIMO] -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4853,7 +4878,7 @@ msgstr "" # umask [-p] [-S] [mode] # umask [-p] [-S] [REĜIMO] -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4888,7 +4913,8 @@ msgstr "" # wait [-n] [id ...] # wait [-n] [IND ...] -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4896,13 +4922,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4924,7 +4952,7 @@ msgstr "" # wait [pid ...] # wait [PN ...] -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4950,7 +4978,7 @@ msgstr "" # for NAME [in WORDS ... ] ; do COMMANDS; done # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4974,7 +5002,7 @@ msgstr "" # for (( exp1; exp2; exp3 )); do COMMANDS; done # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -5006,7 +5034,7 @@ msgstr "" # select NAME [in WORDS ... ;] do COMMANDS; done # select NONO [in VORTOJ ... ;] do KOMANDOJ; done -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5043,7 +5071,7 @@ msgstr "" # time [-p] PIPELINE # time [-p] DUKTO -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5074,7 +5102,7 @@ msgstr "" # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac # case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5096,7 +5124,7 @@ msgstr "" # [ else COMMANDS; ] fi # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... # [ else KOMANDOJ; ] fi -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5128,7 +5156,7 @@ msgstr "" # while COMMANDS; do COMMANDS; done # while KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5148,7 +5176,7 @@ msgstr "" # until COMMANDS; do COMMANDS; done # until KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5168,8 +5196,7 @@ msgstr "" # coproc [NAME] command [redirections] # coproc [NOMO] KOMANDO [ALIDIREKTADOJ] -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5189,11 +5216,11 @@ msgstr "" " „COPROC‟.\n" "\n" " Elirstato:\n" -" Tiu de KOMANDO." +" La komando coproc liveras la elirstaton 0." # function name { COMMANDS ; } or name () { COMMANDS ; } # function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5218,7 +5245,7 @@ msgstr "" # grouping_braces: { COMMANDS ; } # { KOMANDOJ ; } -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5238,7 +5265,7 @@ msgstr "" # job_spec [&] # LABORINDIKO [&] -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5263,7 +5290,7 @@ msgstr "" # (( expression )) # (( ESPRIMO )) -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5283,7 +5310,7 @@ msgstr "" # [[ expression ]] # [[ ESPRIMO ]] -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5334,7 +5361,7 @@ msgstr "" # help var # variables - Names and meanings of some shell variables -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5441,7 +5468,7 @@ msgstr "" # pushd [-n] [+N | -N | dir] # pushd [-n] [+N | -N | DOSIERUJO] -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5500,7 +5527,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # popd [-n] [+N | -N] -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5549,7 +5576,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # dirs [-clpv] [+N] [-N] -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5603,14 +5630,14 @@ msgstr "" # shopt [-pqsu] [-o] [optname ...] # shopt [-pqsu] [-o] [OPCINOMO ...] -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5642,7 +5669,7 @@ msgstr "" # printf [-v var] format [arguments] # printf [-v VAR] FORMATO [ARGUMENTOJ] -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5709,7 +5736,7 @@ msgstr "" # complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFIKSO] [NOMO ...] -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5762,7 +5789,7 @@ msgstr "" # compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFIKSO] [VORTO] -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5783,7 +5810,7 @@ msgstr "" " Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." # compopt [-o|+o OPCIO] [-DE] [NOMO ...] -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5842,7 +5869,7 @@ msgstr "" # [-c quantum] [array] # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] # [-c KVANTO] [TABELO] -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5919,7 +5946,7 @@ msgstr "" # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] # [-c quantum] [array] -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5928,18 +5955,3 @@ msgstr "" "Legu liniojn el dosiero en tabelvariablon.\n" "\n" " Sinonimo de „mapfile‟." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 ĉe «Free Software Foundation, Inc.»" - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/es.gmo b/po/es.gmo index 5edaa91d3..dc46b4c98 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 1988fb2b6..2f22ab2fd 100644 --- a/po/es.po +++ b/po/es.po @@ -1,139 +1,145 @@ -# Mensajes en español para GNU bash-4.2. -# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Spanish translation for GNU bash-4.4 +# Copyright (C) 2018 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Cristian Othón Martínez Vera , 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011. -# +# Cristian Othón Martínez Vera , 2000 - 2011. +# Francisco Javier Serrador msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.2\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2011-08-14 11:55-0500\n" -"Last-Translator: Cristian Othón Martínez Vera \n" -"Language-Team: Spanish \n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2018-04-24 15:37+0200\n" +"Last-Translator: Francisco Javier Serrador \n" +"Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8-bit\n" +"Content-Transfer-Encoding: 8bit\n" "Language: es\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.4\n" -#: arrayfunc.c:54 +# Vocabulario +# array: unimatriz, matríz lineal +# shift: arrastre lateral +#: arrayfunc.c:58 msgid "bad array subscript" -msgstr "subíndice de matriz incorrecto" +msgstr "subíndice de unimatriz equivocado" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: quitando atributo de referencial del nombre" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: no se puede convertir la matriz de indizada a asociativa" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: índice de matriz asociativa inválido" +msgstr "%s: índice de unimatriz asociativa inválido" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: no se puede asignar a un índice que no es numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:4091 +#: bashline.c:4111 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" +"para el mandato" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: el primer carácter que no es espacio en blanco no es `\"'" +msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" -msgstr "%s: falta un `:' separador" +msgstr "%s: falta un «:» separador" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "rama expansión: no puede reubicar memoria para %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansión de rama: fallado para asignar memoria para %d elementos" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "rama expansiva: fallada a reservar memoria para «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nombre de alias inválido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "no se activó la edición de línea" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nombre de combinación de teclas inválido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no se puede leer: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: no se puede borrar la asignación" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nombre de función desconocido" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no está asignado a ninguna tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " -msgstr "%s se puede invocar a través de " +msgstr "%s se puede invocar vía " + +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: no se puede borrar la asignación" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "cuenta de ciclo" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "sólo tiene significado en un ciclo `for', `while' o `until'" +msgstr "" +"sólo tiene significado dentro de `for', `while', o `until' como un bucle" #: builtins/caller.def:136 msgid "" @@ -145,236 +151,235 @@ msgstr "" " \n" " Sin EXPR, devuelve " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "directorio tope." +msgstr "directorio nulo" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" -msgstr "OLDPWD no está definido" +msgstr "OLDPWD no está establecido" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "línea %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " -msgstr "%s: uso: " +msgstr "%s: modo de empleo: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: se requiere un argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: no se encontró" +msgstr "%s: no encontrado" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: nombre de opción inválido" +msgstr "%s: nombre opcional inválido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': no es un identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: especificación de señal inválida" +msgstr "%s: señal especificada no válida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': no es un pid o una especificación válida de trabajo" +msgstr "`%s': no es un pid o una especificación válida de tarea" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de sólo lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuera de rango" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fuera de rango" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: no existe ese trabajo" +msgstr "%s: no existe esa tarea" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: no hay control de trabajos" +msgstr "%s: no hay control de tareas" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "no hay control de trabajos" +msgstr "no hay control de tarea" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restringido" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restringido" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: no es una orden interna del shell" +msgstr "%s: no una shell interna" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "error de escritura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error al establecer los atributos de la terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error al obtener los atributos de la terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: error al obtener el directorio actual: %s: %s\n" +msgstr "%s: error obteniendo directorio actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: especificación de trabajo ambigua" +msgstr "%s: especificación de tarea ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "ayuda no disponible dentro de esta versión" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nombre de acción inválido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: no hay completado de especificación" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "aviso: es posible que la opción -F no funcione como se espera" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "aviso: es posible que la opción -C no funcione como se espera" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "no se está ejecutando la función de completado" # sólo se puede usar. sv # De acuerdo. cfuga -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" -msgstr "sólo se puede usar dentro de una función" +msgstr "sólo se puede emplear dentro de una función" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: referencia variable no puede ser una unimatriz" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: variable nombrada referenciada a sí mismo no permitido" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: nombre circular referenciado" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "`%s': nombre variable inválido para referencia del nombre" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "no se puede usar `-f' para hacer funciones" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: función de sólo lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: asignación entrecomillado compuesto matriciado obsoleto" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: no se pueden destruir variables de matriz de esta forma" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: no se puede convertir una matriz asociativa a indizada" @@ -396,85 +401,85 @@ msgstr "no se puede encontrar %s en el objeto compartido %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "función de carga para %s devuelve fallo (%d): no cargado" #: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: no se cargó dinámicamente" +msgstr "%s: no cargado dinámicamente" #: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: no es un fichero regular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: el fichero es demasiado grande" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no se puede ejecutar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" -msgstr "logout\n" +msgstr "salida\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "no es un shell de entrada: use `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Hay trabajos detenidos.\n" +msgstr "Hay tareas detenidas.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Hay trabajos en ejecución.\n" +msgstr "Hay tareas en ejecución.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" -msgstr "no se encontró la orden" +msgstr "no se encontró el mandato" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificación de historia" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no se puede abrir el fichero temporal: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "el trabajo %d inició sin control de trabajo" +msgstr "tarea %d iniciada sin control de tarea" #: builtins/getopt.c:110 #, c-format @@ -486,28 +491,27 @@ msgstr "%s: opción ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabla de asociación vacía\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" -msgstr "coinc\torden\n" +msgstr "coinc\tmandato\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Orden del shell que coinciden con la palabra `" msgstr[1] "Órdenes del shell que coinciden con la palabra `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +519,12 @@ msgstr "" "no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %" "s' o `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -535,27 +539,28 @@ msgstr "" "ver esta lista.\n" "Teclee `help nombre' para saber más sobre la función `nombre'.\n" "Use `info bash' para saber más sobre el shell en general.\n" -"Use `man -k' o `info' para saber más sobre las órdenes que no están en\n" +"Use `man -k' o `info' para saber más sobre los mandatos que no están en\n" "esta lista.\n" "\n" "Un asterisco (*) junto a un nombre significa que el comando está " "desactivado.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "no se puede usar más de uno de -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posición en la historia" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: límite de argumento inválido" +msgstr "%s: sello inválido" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: falló la expansión de la historia" @@ -569,16 +574,16 @@ msgstr "%s: falló inlib" msgid "no other options allowed with `-x'" msgstr "no se permiten otras opciones con `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: los argumentos deben ser procesos o IDs de trabajos" +msgstr "%s: argumentos deben ser procesos o los ID de tareas" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "se esperaba una expresión" @@ -587,69 +592,69 @@ msgstr "se esperaba una expresión" msgid "%s: not an indexed array" msgstr "%s: no es una matriz indizada" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "nombre de variable de matriz vacío" +msgstr "nombre de variable unimatricional vacío" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problema interpretando formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" @@ -659,23 +664,23 @@ msgid "no other directory" msgstr "no hay otro directorio" #: builtins/pushd.def:360 -#, fuzzy, c-format +#, c-format msgid "%s: invalid argument" -msgstr "%s: límite de argumento inválido" +msgstr "%s: argumento no válido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "la pila de directorios está vacía" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "índice de la pila de directorios" +msgstr "pila indexada de directorios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -698,28 +703,28 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Muestra la lista de directorios actualmente grabados. Los directorios\n" -" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" -" la lista con la orden `popd'.\n" +"Enseña la lista de directorios actualmente grabados. Los directorios\n" +" se guardan en la lista con el mandato `pushd'; pueden ir saliendo de\n" +" la lista con el mandato `popd'.\n" " \n" " Opciones:\n" " -c\tlimpia la pila de directorios, eliminando todos los elementos\n" " -l\tno muestra las versiones con prefijo de tilde de los directorios\n" -" \trelativos a su directorio inicial\n" +" \t\trelativos a su directorio inicial\n" " -p\tmuestra la pila de directorios con una entrada por línea\n" " -v\tmuestra la pila de directorios con una entrada por línea con\n" -" \tsu posición en la pila como prefijo\n" +" \t\tsu posición en la pila como prefijo\n" " \n" " Argumentos:\n" " +N\tMuestra la N-ésima entrada contando desde la izquierda de\n" -" \tla lista mostrada por dirs cuando se llama sin opciones,\n" -" \tempezando desde cero.\n" +" \t\tla lista mostrada por dirs cuando se llama sin opciones,\n" +" \t\tempezando desde cero.\n" " \n" " -N\tMuestra la N-ésima entrada contando desde la derecha de\n" -"\tla lista mostrada por dirs cuando se llama sin opciones,\n" -"\tempezando desde cero." +"\t\tla lista mostrada por dirs cuando se llama sin opciones,\n" +"\t\tempezando desde cero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -743,25 +748,25 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Agrega un directorio al tope de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo tope de la pila sea el\n" +"Agrega un directorio al techo de la pila de directorios, o rota\n" +" la pila, haciendo que el nuevo techo de la pila sea el\n" " directorio de trabajo actual. Sin argumentos, intercambia\n" -" los dos directorios del tope.\n" +" los dos directorios del techo.\n" " \n" " Argumentos:\n" -" +N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la izquierda de la lista mostrada por `dirs',\n" -" \tcomenzando desde cero) esté en el tope.\n" -" -N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la derecha de la lista mostrada por `dirs',\n" -" \tcomenzando desde cero) esté en el tope.\n" +" +N\t Rota la pila para que el N-ésimo directorio (contando\n" +" \t de la izquierda de la lista mostrada por `dirs',\n" +" \t comenzando desde cero) esté en el techo.\n" +" -N\t Rota la pila para que el N-ésimo directorio (contando\n" +" \t de la derecha de la lista mostrada por `dirs',\n" +" \t comenzando desde cero) esté en el techo.\n" " \n" -" dir\tagrega DIR a la pila de directorios en el tope,\n" -" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" dir\t Añade DIR a la pila de directorios en el techo,\n" +" \t haciéndolo el nuevo directorio de trabajo actual.\n" " \n" -" La orden interna `dirs' muestra la pila de directorios." +" Los «dir» internos enseña la pila de directorios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -781,88 +786,88 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Borra entradas de la pila de directorios. Sin argumentos, borra\n" -" directorio del tope de la pila, y cambia al nuevo directorio tope.\n" +"Quita entradas de la pila de directorios. Sin argumentos, borra\n" +" directorio techo de la pila, y cambia al nuevo directorio techo.\n" " \n" " Opciones:\n" -" -n\tsuprime el cambio normal de directorio cuando se borran\n" -" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" -n\t suprime el cambio normal de directorio cuando se borran\n" +" \t directorios de la pila, así sólo se manipula la pila.\n" " \n" " Argumentos:\n" " +N\tBorra la N-ésima entrada contando de la izquierda de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" -" \tel segundo.\n" +" \t la lista mostrada por `dirs', comenzando desde cero.\n" +" \t Por ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" +" \t el segundo.\n" " \n" " -N\tBorra la N-ésima entrada contando de la derecha de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" -" \tel penúltimo.\n" +" \t la lista mostrada por `dirs', comenzando desde cero. Por\n" +" \t ejemplo: `popd -0' borra el último directorio, `popd -1' el\n" +" \t penúltimo.\n" " \n" -" La orden interna `dirs' muestra la pila de directorios." +" El mandato interno `dirs' muestra la pila de directorios." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: especificación de tiempo de expiración inválida" +msgstr "%s: tiempo de expiración especificado inválido" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" -msgstr "" -"sólo se puede usar `return' en una función o un guión leído con `source'" +msgstr "sólo se puede usar `return' desde una función o un guion de origen" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "no se puede borrar al mismo tiempo una función y una variable" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" -msgstr "%s: no se puede borrar" +msgstr "%s: no se puede deseleccionar" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: no se puede borrar: %s es de solo lectura" +msgstr "%s: no se puede deseleccionar: %s es de solo lectura" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" -msgstr "%s: no es una variable de matriz" +msgstr "%s: no es una variable de unimatriz" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: no es una función" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: no se puede borrar" +msgstr "%s: no se puede exportar" +# shift: arrastre #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "cuenta de shift" +msgstr "contador de arrastre" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nombre de opción del shell inválido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" -msgstr "se requiere un argumento de nombre de fichero" +msgstr "argumento de nombre de fichero requerido" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: no se encontró el fichero" @@ -875,61 +880,61 @@ msgstr "no se puede suspender" msgid "cannot suspend a login shell" msgstr "no se puede suspender un shell de entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s es un alias de `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s es una palabra clave del shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: es una función\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s es una orden interna del shell\n" +msgstr "%s: es una shell especial incorporada\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s es una orden interna del shell\n" +msgstr "%s es un mandato interna del shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento inválido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': orden errónea" +msgstr "`%c': mandato equivocado" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no se puede obtener el límite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no se puede modificar el límite: %s" @@ -941,165 +946,170 @@ msgstr "número octal" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': operador de modo simbólico inválido" +msgstr "`%c': modo simbólico de operador inválido" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': carácter de modo simbólico inválido" +msgstr "`%c': modo simbólico de carácter inválido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " línea " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" -msgstr "última orden: %s\n" +msgstr "último mandato: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "INFORME: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" -msgstr "error de orden desconocido" +msgstr "error de mandato desconocido" -#: error.c:464 +#: error.c:463 msgid "bad command type" -msgstr "tipo de orden erróneo" +msgstr "tipo de mandato equivocado" -#: error.c:465 +#: error.c:464 msgid "bad connector" -msgstr "conector erróneo" +msgstr "conector equivocado" -#: error.c:466 +#: error.c:465 msgid "bad jump" -msgstr "salto erróneo" +msgstr "omisión equivocada" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "no se puede redirigir la salida estándar desde /dev/null: %s" +msgstr "no se puede redirigir la salida común desde /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] aún existe" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: evaluación máxima anidando nivel excedido (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: nivel de origen máximo anidado excedido (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: función anidada de nivel máximo excedido (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" -msgstr "%s: no se encontró la orden" +msgstr "%s: mandato no encontrado" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" # file=fichero. archive=archivo. Si no, es imposible traducir tar. sv # De acuerdo. Corregido en todo el fichero. cfuga -#: execute_cmd.c:5545 -#, fuzzy, c-format +#: execute_cmd.c:5702 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: no se puede ejecutar el fichero binario" +msgstr "%s: no puede ejecutar fichero binario: %s" -#: execute_cmd.c:5623 -#, fuzzy, c-format +#: execute_cmd.c:5788 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s es una orden interna del shell\n" +msgstr "`%s': es un constructor especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "se ha excedido el nivel de recursión de la expresión" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "desbordamiento de la base de la pila de recursión" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "error sintáctico en la expresión" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "se intentó asignar a algo que no es una variable" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "error sintáctico en la expresión" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "división por 0" # token en bison fue traducido como terminal. ¿Lo traducimos igual aquí # o lo dejamos como 'unidad' o 'elemento'? cfuga -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" -msgstr "bicho: elemento de asignación de expresión erróneo" +msgstr "defecto: elemento de asignación de expresión erróneo" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "se esperaba `:' para la expresión condicional" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "se esperaba un identificador después del pre-incremento o pre-decremento" @@ -1107,46 +1117,46 @@ msgstr "" # falta , singular em+ # mmmh, puede faltar más de un paréntesis cfuga # tiene razón Enrique, es singular. cfuga -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" @@ -1156,7 +1166,7 @@ msgstr "" # buffer: espacio intermedio , alojamiento intermedio ( me gusta menos ) # em+ # almacenamiento intermedio. cfuga -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1166,154 +1176,159 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" +msgstr "el pid `forked' %d aparece en la tarea en ejecución %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" +msgstr "borrando la tarea detenida %d con grupo de proceso %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: el proceso %5ld (%s) en the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) se marca como vivo aún" # Cambiaría 'hay' por 'existe' em+ -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Hecho" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" -msgstr " (dir ahora: %s)" +msgstr " (da: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld no es un proceso hijo de este shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: el trabajo %d está detenido" +msgstr "wait_for_job: la tarea %d está detenida" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" -msgstr "%s: el trabajo ha terminado" +msgstr "%s: la tarea ha terminado" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" -msgstr "%s: el trabajo %d ya está en segundo plano" +msgstr "%s: la tarea %d ya está en segundo plano" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: falló getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_jobs_control: disciplina de línea" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de línea" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" -msgstr "no hay control de trabajos en este shell" +msgstr "no hay control de tareas en este shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: falló la aserción: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1322,41 +1337,41 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "desconocido" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque en la lista libre sobreescrito" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: se llamó con un argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" -msgstr "free: los tamaños de los pedazos de inicio y fin son diferentes" +msgstr "free: los tamaños de los pedazos de inicio y final son diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" @@ -1398,22 +1413,22 @@ msgstr "%s: especificación de ruta de red errónea" msgid "network operations not supported" msgstr "no hay soporte para operaciones de red" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no se puede cambiar el local (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" @@ -1431,116 +1446,118 @@ msgstr "Tiene correo nuevo en $_" msgid "The mail in %s has been read\n" msgstr "El correo en %s fue leído\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error sintáctico: se requiere una expresión aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' inesperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "error sintáctico: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrucción %d erróneo" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se " "esperaba `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: la instrucción de redirección `%d' está fuera de rango" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea " +"truncada" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "contador máximo aquí-documento excedido" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" +msgstr "inesperado FDL mientras se buscaba una coincidencia `%c'" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" -msgstr "EOF inesperado mientras se buscaba `]]'" +msgstr "inesperado FDL mientras se buscaba `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "elemento inesperado `%c' en la orden condicional" +msgstr "elemento inesperado `%c' en el mandato condicional" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "elemento inesperado `%s' en la orden condicional" +msgstr "elemento inesperado `%s' en el mandato condicional" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" -msgstr "elemento inesperado %d en la orden condicional" +msgstr "elemento inesperado %d en el mandato condicional" # Token: elemento ? # error sintáctico, no se esperaba el símbolo `%c' em+ @@ -1548,12 +1565,12 @@ msgstr "elemento inesperado %d en la orden condicional" # provocado por el símbolo. Simplemente estar cerca del mismo. cfuga # Por consistencia con el siguiente, yo borraría la coma. sv # Cierto. Coma borrada. cfuga -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1562,139 +1579,143 @@ msgstr "error sintáctico cerca de `%s'" # no se esperaba el final de la línea em+ # Ojo, que end of file es fin de fichero, no de línea. sv # Se hicieron ambos cambios. cfuga -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para dejar el shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" -msgstr "EOF inesperado mientras se buscaba un `)' coincidente" +msgstr "esperado FDL mientras se buscaba una coincidencia `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: no se encuentra la función `%s'" +msgstr "completion: función `%s' no encontrada" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: posible bucle de reintento" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC nulo" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector erróneo `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descriptor de fichero inválido" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" -msgstr "xtrace_set: puntero a fichero NULL" +msgstr "xtrace_set: puntero a fichero NULO" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "no se puede crear un fichero temporal para el documento-aquí: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "no se puede reestablecer el modo nodelay para el df %d" +msgstr "no se puede establecer el uid %d: uid efectivo %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "no se puede reestablecer el modo nodelay para el df %d" +msgstr "no se puede establecer gid a %d: gid efectivo %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "no puede ejecutar el depurador; modo depurado desactivado" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: es un directorio" # Yo pondría "no tengo ningún nombre". sv # Revisé el código fuente de bash. Es un mensaje de error cuando no se # encuentra el nombre del usuario que ejecuta el shell. cfuga -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1704,7 +1725,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:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1713,54 +1734,53 @@ msgstr "" "Modo de empleo:\t%s [opción GNU larga] [opción] ...\n" "\t%s [opción GNU larga] [opción] guión-del-shell\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:1938 -#, fuzzy +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD o -c orden o -O opcion_shopt\t\t(sólo invocación)\n" +msgstr "\t-irsD o -c mandato o -O opción_shopt\t\t(sólo invocación)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Teclee `%s -c \"help set\"' para más información sobre las opciones del " "shell.\n" -#: shell.c:1960 +#: shell.c:2010 #, 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 " +"Teclee `%s -c help' para más información sobre los mandatos internos del " "shell.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Use la orden `bashbug' para reportar bichos.\n" +msgstr "Use el mandato `bashbug' para reportar defectos.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "página inicial bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Ayuda general utilizando software GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" @@ -1807,7 +1827,7 @@ msgstr "Matado" #: siglist.c:91 msgid "Bus error" -msgstr "Error en el bus" +msgstr "Error del bus" #: siglist.c:95 msgid "Segmentation fault" @@ -1819,7 +1839,7 @@ msgstr "Violación de segmento" # llamada a la función del sistema, no la llamada en sí cfuga #: siglist.c:99 msgid "Bad system call" -msgstr "Llamada al sistema errónea" +msgstr "Llamada al sistema equivocada" # (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 @@ -1886,7 +1906,7 @@ msgstr "Ventana cambiada" #: siglist.c:171 msgid "Record lock" -msgstr "Bloqueo de grabación" +msgstr "Bloqueo de registro" #: siglist.c:175 msgid "User signal 1" @@ -1930,7 +1950,7 @@ msgstr "el modo monitor HTF ha sido retirado" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "la secuencia de sonido HFT ha sido completado" +msgstr "la secuencia sonora HFT ha sido completada" #: siglist.c:215 msgid "Information request" @@ -1945,21 +1965,21 @@ msgstr "Señal Desconocida #" msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "sustitución errónea: no hay un `%s' que cierre en %s" +msgstr "sustitución equivocada: no hay un `%s' que cierre en %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no se puede asignar una lista a un miembro de la matriz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" @@ -1978,59 +1998,63 @@ msgstr "no se puede abrir la tubería llamada %s para escritura" msgid "cannot duplicate named pipe %s as fd %d" msgstr "no se puede duplicar la tubería llamada %s como df %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "sustitución errónea: no hay `}' final en %s" +msgstr "sustitución mandato: ignorado byte nulo en entrada" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" -msgstr "no se pueden crear la tubería para la sustitución de la orden" +msgstr "no se puede crear la tubería para la sustitución del mandato" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" -msgstr "no se puede crear un proceso hijo para la sustitución de la orden" +msgstr "no se puede crear un proceso hijo para la sustitución del mandato" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format +#: subst.c:6641 subst.c:9483 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: nombre variable inválido para referencia de nombre" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: sustitución errónea" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: cuenta de líneas inválida" +msgstr "%s: expansión indirecta inválida" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': nombre de alias inválido" +msgstr "%s: nombre de variable no válida" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro nulo o no establecido" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo o no establecido" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadena < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sustitución errónea" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2038,12 +2062,12 @@ msgstr "" "versiones futuras del intérprete obligarán la evaluación como una " "sustitución aritmética" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" +msgstr "sustitución equivocada: no hay una \"`\" que cierre en %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" @@ -2059,19 +2083,19 @@ msgstr "%s: se esperaba una expresión entera" #: test.c:265 msgid "`)' expected" -msgstr "se esperaba `)'" +msgstr "`)' esperado" #: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" @@ -2083,20 +2107,20 @@ msgstr "%s: se esperaba un operador binario" # Abreviando "falta [al menos] un `]'" saldría: "falta un `]'". # ¿No es mejor "falta algún `]'"? cfuga # Tiene razón Enrique: singular. cfuga -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "falta un `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2104,87 +2128,86 @@ msgstr "" "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " "mismo" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no hay contexto de función en el ámbito actual" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: no se puede asignar el fd a la variable" +msgstr "%s: variable quizá no es valor asignado" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" +msgstr "%s: asignando entero a nombre referencia" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no hay contexto de función en el ámbito actual" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: la cabeza de shell_variables no es un contexto de función" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: la cabeza de shell_variables no es un ámbito de ambiente temporal" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" -#: variables.c:5669 -#, fuzzy, c-format +#: variables.c:5912 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s fuera de rango" +msgstr "%s: %s: valor de compatibilidad fuera del rango" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgstr "© 1999 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2200,32 +2223,29 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versión %s (%s)\n" #: version.c:91 version2.c:91 -#, fuzzy msgid "This is free software; you are free to change and redistribute it." -msgstr "" -"Esto es software libre; usted es libre de cambiarlo y redistribuirlo.\n" +msgstr "Esto es software libre, es libre para modificar y redistribuirlo." #: version.c:92 version2.c:92 -#, fuzzy msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "NO hay GARANTÍA, a la extensión permitida por la ley.\n" +msgstr "No hay NINGUNA GARANTÍA, a la extensión permitida por la ley." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: no se pueden asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: no se pueden asignar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no se pueden asignar %lu bytes" @@ -2239,14 +2259,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nombre [nombre ...]" #: builtins.c:53 -#, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " -"secteclas] [-x secteclas:orden-shell] [secteclas:función-readline u orden-" -"readline]" +"bind [-lpsvPSVX] [-m comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " +"secteclas] [-x secteclas:mandato-shell] [secteclas:función-leerlinea o " +"mandato-leerlinea]" #: builtins.c:56 msgid "break [n]" @@ -2258,16 +2277,15 @@ msgstr "continue [n]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [orden-interna-shell [arg ...]]" +msgstr "builtin [mandato-interno-shell [arg ...]]" #: builtins.c:63 msgid "caller [expr]" msgstr "caller [expresión]" #: builtins.c:66 -#, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [directorio]" +msgstr "cd [-L|[-P [-e]]] [dir]" #: builtins.c:68 msgid "pwd [-LP]" @@ -2275,17 +2293,15 @@ msgstr "pwd [-LP]" #: builtins.c:76 msgid "command [-pVv] command [arg ...]" -msgstr "command [-pVv] orden [arg ...]" +msgstr "command [-pVv] mandato [arg ...]" #: builtins.c:78 -#, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] nombre[=valor] ..." +msgstr "declare [-aAfFgilrtux] [-p] [nombre[=valor] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nombre[=valor] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nombre[=valor] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2313,7 +2329,7 @@ msgstr "getopts cadena_opciones nombre [arg]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a nombre] [orden [argumentos ...]] [redirección ...]" +msgstr "exec [-cl] [-a nombre] [mandato [argumentos ...]] [redirección ...]" #: builtins.c:100 msgid "exit [n]" @@ -2325,15 +2341,15 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e nombre_e] [-lnr] [primero] [último] ó fc -s [pat=rep] [orden]" +msgstr "fc [-e nombre_e] [-lnr] [primero] [último] o fc -s [pat=rep] [mandato]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [id_trabajo]" +msgstr "fg [id_tarea]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [id_trabajo ...]" +msgstr "bg [id_tarea ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2348,7 +2364,7 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d despl] [n] ó history -anrw [fichero] ó history -ps arg " +"history [-c] [-d despl] [n] o history -anrw [fichero] o history -ps arg " "[arg...]" # jobspec no es sólo el pid del proceso, puede ser tambien @@ -2357,20 +2373,19 @@ msgstr "" # mucho. ¿Sugerencias? cfuga #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [idtrabajo ...] ó jobs -x orden [args]" +msgstr "jobs [-lnprs] [tarea_id ...] o jobs -x mandato [args]" # lo mismo em+ #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [idtrabajo ...]" +msgstr "disown [-h] [-ar] [idtarea ... | pid ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... ó kill -l " +"kill [-s id_señal | -n num_señal | -id_señal] pid | idtarea ... o kill -l " "[id_señal]" #: builtins.c:136 @@ -2394,9 +2409,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" #: builtins.c:144 -#, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [nombre ...]" +msgstr "unset [-f] [-v] [-n] [nombre ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" @@ -2439,9 +2453,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nombre [nombre ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" @@ -2449,25 +2462,24 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgid "wait [-fn] [id ...]" +msgstr "wait [-n] [id ...]" #: builtins.c:181 -#, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NOMBRE [in PALABRAS ... ] ; do ÓRDENES; done" +msgstr "for NOMBRE [in PALABRAS ... ] ; do MANDATOS; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for (( exp1; exp2; exp3 )); do ÓRDENES; done" +msgstr "for (( exp1; exp2; exp3 )); do MANDATOS; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" +msgstr "select NOMBRE [in PALABRAS ... ;] do MANDATOS; done" #: builtins.c:190 msgid "time [-p] pipeline" @@ -2475,39 +2487,39 @@ msgstr "time [-p] tubería" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ÓRDENES ;;]... esac" +msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) MANDATOS ;;]... esac" #: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -"if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else " -"ÓRDENES; ] fi" +"if MANDATOS; then MANDATOS; [ elif MANDATOS; then MANDATOS; ]...[ else " +"MANDATOS; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" -msgstr "while ÓRDENES; do ÓRDENES; done" +msgstr "while MANDATOS; do MANDATOS; done" #: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" -msgstr "until ÓRDENES; do ÓRDENES; done" +msgstr "until MANDATOS; do MANDATOS; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [NOMBRE] orden [redirecciones]" +msgstr "coproc [NOMBRE] mandato [redirecciones]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function nombre { ÓRDENES ; } ó nombre () { ÓRDENES ; }" +msgstr "function nombre { MANDATOS ; } ó nombre () { MANDATOS ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" -msgstr "{ ÓRDENES ; }" +msgstr "{ MANDATOS ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "id_trabajo [&]" +msgstr "id_tarea [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2548,17 +2560,16 @@ msgid "" "suffix] [name ...]" msgstr "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o opción] [-A acción] [-G patglob] [-" -"W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " +"W listapalabras] [-F función] [-C mandato] [-X patfiltro] [-P prefijo] [-S " "sufijo] [nombre ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o opción] [-A acción] [-G patglob] [-W " -"listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " +"listapalabras] [-F función] [-C mandato] [-X patfiltro] [-P prefijo] [-S " "sufijo] [palabra]" #: builtins.c:239 @@ -2566,18 +2577,18 @@ msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nombre ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c " -"quantum] [matriz]" +"mapfile [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C " +"llamada] [-c quantum] [matriz]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c " "quantum] [matriz]" @@ -2587,7 +2598,6 @@ msgstr "" # no alias -> ningún alias. sv # De acuerdo. cfuga #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2606,10 +2616,10 @@ msgid "" "been\n" " defined." msgstr "" -"Define o muestra aliases.\n" +"Define o enseña aliases.\n" " \n" -" `alias' sin argumentos muestra la lista de aliases en la forma\n" -" reutilizable `alias NOMBRE=VALOR' en la salida estándar.\n" +" Sin argumentos `alias' escribe la lista de aliases en formato\n" +" reutilizable `alias NOMBRE=VALOR' en la salida común.\n" " \n" " De otra manera, se define un alias por cada NOMBRE cuyo VALOR se\n" " proporcione. Un espacio final en VALOR causa que se revise\n" @@ -2624,7 +2634,6 @@ msgstr "" " no se haya definido ningún alias." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2633,16 +2642,16 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Borra cada NOMBRE de la lista de alias definidos.\n" +"Quita cada NOMBRE de la lista de alias definidos.\n" " \n" " Opciones:\n" -" -a\telimina todas las definiciones de alias.\n" +" -a\tquita todas las definiciones de alias.\n" +" \n" " Devuelve verdadero a menos que un NOMBRE no sea un alias existente." # lee 'la'... em+ # Corregido. Además, es plural: lee las asignaciones... cfuga #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2695,34 +2704,32 @@ msgstr "" " \n" " -m comb_teclas Usa COMB_TECLAS como la combinación de teclas por " "la\n" -" duración de esta orden. Los nombres de " +" duración de este mandato. Los nombres de " "combinaciones\n" " de teclas aceptables son emacs, emacs-standard,\n" " emacs-meta, emacs-ctlx, vi, vi-move, vi-command y\n" " vi-insert.\n" -" -l Enlista los nombres de las funciones.\n" -" -P Enlista los nombres de las funciones y " -"asignaciones.\n" -" -p Enlista las funciones y asignaciones en una forma " +" -l Lista los nombres de las funciones.\n" +" -P Lista los nombres de las funciones y asignaciones.\n" +" -p Lista las funciones y asignaciones en una forma " "que\n" " se puede reusar como entrada.\n" -" -S Enlista las secuencias de teclas que invocan " -"macros\n" +" -S Lista las secuencias de teclas que invocan macros\n" " y sus valores.\n" -" -s Enlista las secuencias de teclas que invocan " -"macros\n" +" -s Lista las secuencias de teclas que invocan macros\n" " y sus valores en una forma que se pueden reusar " "como\n" " entrada.\n" -" -V Enlista los nombres de variables y valores.\n" -" -v Enlista los nombres de variables y valores en una\n" +" -V Lista los nombres de variables y valores.\n" +" -v Lista los nombres de variables y valores en una\n" " forma que se pueden reusar como entrada.\n" -" -q nombre-funcion Pregunta qué teclas invocan la función nombrada.\n" +" -q nombre-función Pregunta qué teclas invocan la función nombrada.\n" " -u nombre-función Borra todas las teclas que están ligadas a\n" " la función nombrada.\n" " -r secteclas Borra la asignación para la SECTECLAS.\n" " -f fichero Lee las asignaciones de teclas del FICHERO.\n" -" -x secteclas:orden-shell\tCausa que se ejecute la ORDEN-SHELL cuando\n" +" -x secteclas:mandato-shell\tCausa que se ejecute el MANDATO-SHELL " +"cuando\n" " \t\t\t\tse introduce la SECTECLAS.\n" " \n" " Estado de salida:\n" @@ -2779,17 +2786,17 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" -"Ejecuta órdenes internas del shell\n" +"Ejecuta mandatos internos del shell\n" " \n" -" Ejecuta la ORDEN-INTERNA-SHELL con los argumentos ARGs sin realizar\n" -" la búsqueda interna de órdenes. Esto es útil cuando desea " +" Ejecuta el MANDATO-INTERNA-SHELL con los argumentos ARGs sin realizar\n" +" la búsqueda interna de mandatos. Esto es útil cuando desea " "reimplementar\n" -" una orden interna del shell como una función de shell, pero necesita\n" -" ejecutar la orden interna dentro de la función.\n" +" un mandato interno del shell como una función de shell, pero necesita\n" +" ejecutar el mandato interno dentro de la función.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la ORDEN-INTERNA-SHELL, o falso si la\n" -" ORDEN-INTERNA-SHELL no es una orden interna de shell." +" Devuelve el estado de salida del MANDATO-INTERNA-SHELL, o falso si la\n" +" ORDEN-INTERNA-SHELL no es un mandato interno de shell." #: builtins.c:369 msgid "" @@ -2813,7 +2820,7 @@ msgstr "" " se puede usar para proveer un volcado de pila.\n" " \n" " El valor de EXPR indica cuántos marcos de llamada se debe retroceder\n" -" antes del actual; el marco inicial es el marco 0.\n" +" antes del actual; el marco superior es el marco 0.\n" " \n" " Estado de Salida:\n" " Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n" @@ -2823,7 +2830,6 @@ msgstr "" # por barra invertida em++ # Corregido en toda la traducción. cfuga #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2867,9 +2873,9 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" -"Cambia el directorio de trabajo del shell.\n" +"Modifica el directorio de tarea del shell.\n" " \n" -" Cambia el directorio actual a DIR. DIR por defecto es el valor de la\n" +" Modifica el directorio actual a DIR. DIR por defecto es el valor de la\n" " variable de shell HOME.\n" " \n" " La variable CDPATH define la ruta de búsqueda por el directorio que\n" @@ -2883,21 +2889,21 @@ msgstr "" " Si esa variable tiene un valor, se utiliza su valor como DIR.\n" " \n" " Opciones:\n" -" -L\tfuerza a seguir los enlaces simbólicos\n" -" -P\tusa la estructura física de directorios sin seguir los enlaces\n" -" \tsimbólicos\n" -" -e\tsi se da la opción -P, y el directorio actual de trabajo no se\n" -" \tpuede determinar con éxito, termina con un estado diferente de cero.\n" +" -L\t fuerza a seguir los enlaces simbólicos\n" +" -P\t usa la estructura física de directorios sin seguir los enlaces\n" +" \t\tsimbólicos\n" +" -e\t si se da la opción -P, y el directorio actual de tarea no se\n" +" \t\t puede determinar con éxito, termina con un estado diferente de " +"cero.\n" " \n" " La acción por defecto es seguir los enlaces simbólicos, como si se\n" " especificara `-L'.\n" " \n" " Estado de salida:\n" -" Devuelve 0 si se cambia el directorio, y si $PWD está definido con\n" -" éxito cuando se usa -P; de otra forma es diferente a cero." +" Devuelve 0 si se cambia el directorio, y si $PWD está definido como\n" +" correcto cuando se emplee -P; de otra forma es diferente a cero." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2912,11 +2918,11 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" -"Muestra el nombre del directorio de trabajo actual.\n" +"Escribe el nombre del directorio de trabajo actual.\n" " \n" " Opciones:\n" " -L\tmuestra el valor de $PWD si nombra al directorio de\n" -" \ttrabajo actual\n" +" \ttarea actual\n" " -P\tmuestra el directorio físico, sin enlaces simbólicos\n" " \n" " Por defecto, `pwd' se comporta como si se especificara `-L'.\n" @@ -2936,7 +2942,7 @@ msgid "" msgstr "" "Orden nula.\n" " \n" -" Sin efecto; la orden no hace nada.\n" +" Sin efecto; el mandato no hace nada.\n" " \n" " Estado de Salida:\n" " Siempre con éxito." @@ -2948,10 +2954,10 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"Devuelve un resultado con éxito.\n" +"Devuelve un resultado correcto.\n" " \n" " Estado de salida:\n" -" Siempre con éxito." +" Siempre correcto." #: builtins.c:462 msgid "" @@ -2960,13 +2966,12 @@ msgid "" " Exit Status:\n" " Always fails." msgstr "" -"Devuelve un resultado sin éxito.\n" +"Devuelve un resultado incorrecto.\n" " \n" " Estado de salida:\n" -" Siempre falla." +" Siempre incorrecto." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2984,25 +2989,26 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"Ejecuta una orden simple o muestra información sobre órdenes.\n" +"Ejecuta un mandato simple o enseña información sobre mandatos.\n" " \n" -" Ejecuta la ORDEN con ARGumentos, suprimiendo la búsqueda de funciones\n" -" de shell, o muestra información sobre las ÓRDENes especificadas. Se " +" Ejecuta el MANDATO con ARGumentos, suprimiendo la búsqueda de funciones\n" +" de shell, o muestra información sobre las MANDATOs especificados. Se " "puede\n" -" usar para invocar órdenes en disco cuando existe una función con el " +" usar para invocar mandatos en disco cuando existe una función con el " "mismo\n" " nombre.\n" " \n" " Opciones:\n" -" -p\tusa un valor por defecto para PATH para garantizar que\n" -" \tencuentre todas las utilidades estándar\n" -" -v\tmuestra una descripción de la ORDEN similar a la orden\n" -" \tinterna `type'\n" -" -V\tmuestra una descripción más detallada de cada ORDEN\n" +" -p emplee un valor predeterminado para rutas PATH para garantizar " +"que\n" +" encuentre todas las utilidades comunes\n" +" -v escribe una descripción del MANDATO similar al mandato\n" +" interna `type'\n" +" -V escribe una descripción más detallada de cada MANDATO\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la ORDEN, o falla si no se encuentra\n" -" la ORDEN." +" Devuelve el estado de salida del MANDATO, o falla si no se encuentra\n" +" el MANDATO." #: builtins.c:490 #, fuzzy @@ -3024,11 +3030,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3050,50 +3056,48 @@ msgstr "" " muestra los atributos y valores de todas las variables.\n" " \n" " Opciones:\n" -" -f\trestringe la acción o muestra a nombres y definiciones\n" -" \tde funciones\n" -" -F\trestringe la muestra a nombres de funciones (con número de\n" -" \tlínea y fichero fuente al depurar)\n" -" -g\tcrea variables globales cuando se usa en una función de shell;\n" -" \tde otra forma se descarta\n" -" -p\tmuestra los atributos y valor de cada NOMBRE\n" +" -f\t restringe la acción o muestra a nombres y definiciones\n" +" \t de funciones\n" +" -F\t restringe la muestra a nombres de funciones (con número de\n" +" \t línea y fichero fuente al depurar)\n" +" -g\t crea variables globales cuando se usa en una función de shell;\n" +" \t de otra forma se descarta\n" +" -p\t enseña los atributos y valor de cada NOMBRE\n" " \n" " Opciones que establecen atributos:\n" -" -a\testablece NOMBREs como matrices indizadas (si se admiten)\n" -" -A\testablece NOMBREs como matrices asociativas (si se admiten)\n" -" -i\testablece NOMBREs con el atributo `integer'\n" -" -l\tconvierte NOMBREs a minúsculas en la asignación\n" -" -r\testablece NOMBREs como de sólo lectura\n" -" -t\testablece NOMBREs con el atributo `trace'\n" -" -u\tconvierte NOMBREs a mayúsculas en la asignación\n" -" -x\testablece NOMBREs para exportar\n" +" -a\t establece NOMBREs como matrices indizadas (si se admiten)\n" +" -A\t establece NOMBREs como matrices asociativas (si se admiten)\n" +" -i\t establece NOMBREs con el atributo `integer'\n" +" -l\t convierte NOMBREs a minúsculas en la asignación\n" +" -r\t crea NOMBREs como de sólo lectura\n" +" -t\t crea NOMBREs con el atributo `trace'\n" +" -u\t convierte NOMBREs a mayúsculas en la asignación\n" +" -x\t crea NOMBREs para exportar\n" " \n" " Si usa `+' en lugar de `-' desactiva el atributo dado.\n" " \n" -" Las variables con el atributo integer realizan evaluación aritmética\n" -" (vea la orden `let') cuando se asigna un valor a la variable.\n" +" Las variables con el atributo ‘integer’ realizan evaluación aritmética\n" +" (vea el mandato `let') cuando se asigna un valor a la variable.\n" " \n" " Cuando se usa en una función, `declare' hace locales a los NOMBREs,\n" -" como sucede con la orden `local'. La opción `-g' suprime esta\n" +" como sucede con el mandato `local'. La opción `-g' suprime esta\n" " conducta.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o\n" +" Devuelve correcto a menos que se dé una opción inválida o\n" " suceda un error." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Establece valores de variables y atributos.\n" +"Establece valores variables y atributos.\n" " \n" -" Obsoleto. Consulte `help declare'." +" Un sinónimo para `declare'. Vea `help declare'." #: builtins.c:538 -#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -3113,14 +3117,13 @@ msgstr "" " ser cualquier opción aceptada por `declare'.\n" " \n" " Las variables locales sólo se pueden usar en una función; son visibles\n" -" sólo en la función donde se definen y sus hijos.\n" +" sólo en la función donde se definen y sus descendientes.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida, suceda\n" +" Devuelve correcto a menos que se de una opción inválida, suceda\n" " un error, o el shell no esté ejecutando una función." #: builtins.c:555 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3153,20 +3156,21 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"Escribe argumentos en la salida estándar.\n" +"Escribe argumentos en la salida común.\n" " \n" -" Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" +" Enseña los ARGumentos en la salida común seguidos por un carácter\n" " de fin de línea.\n" +" \n" " Opciones:\n" " -n\tno agrega un carácter de fin de línea\n" " -e\tactiva la interpretación de caracteres de escape de\n" -" \tde barra invertida\n" +" \t\tde barra invertida\n" " -E\tdesactiva explícitamente la interpretación de caracteres de\n" -" \tde escape de barra invertida\n" +" \t\tde escape de barra invertida\n" " \n" " `echo' interpreta los siguientes caracteres de escape de barra " "invertida:\n" -" \\a\talerta (timbre)\n" +" \a\talerta (timbre)\n" " \\b\tespacio hacia atrás\n" " \\c\tsuprime toda salida a continuación\n" " \\E\tcarácter de escape\n" @@ -3177,12 +3181,12 @@ msgstr "" " \\v\ttabulador vertical\n" " \\\\\tbarra invertida\n" " \\0nnn\tel carácter cuyo código ASCII es NNN (octal). NNN puede ser\n" -" \tde 0 a 3 dígitos octales\n" +" \t\tde 0 a 3 dígitos octales\n" " \\xHH\tel carácter de ocho bits cuyo valor es HH (hexadecimal). HH\n" -" \tpuede ser de uno o dos dígitos hexadecimales\n" +" \t\tpuede ser de uno o dos dígitos hexadecimales\n" " \n" " Estado de salida:\n" -" Devuelve con éxito a menos que suceda un error de escritura." +" Devuelve correcto a menos que suceda un error de escritura." #: builtins.c:591 msgid "" @@ -3196,15 +3200,15 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"Escribe argumentos en la salida estándar.\n" +"Escribe argumentos en la salida común.\n" " \n" -" Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" +" Enseña los ARGumentos en la salida común seguidos por un carácter\n" " de fin de línea.\n" " Opciones:\n" " -n\tno agrega un carácter de fin de línea\n" " \n" " Estado de salida:\n" -" Devuelve con éxito a menos que suceda un error de escritura." +" Devuelve correcto a menos que suceda un error de escritura." #: builtins.c:606 msgid "" @@ -3232,32 +3236,32 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -"Activa y desactiva las órdenes internas del shell.\n" +"Activa y desactiva los mandatos internos del shell.\n" " \n" -" Activa y desactiva las órdenes internas del shell. El desactivar le\n" -" permite ejecutar una orden del disco que tenga el mismo nombre que\n" -" la orden interna del shell, sin usar el nombre de ruta completo.\n" +" Activa y desactiva los mandatos internos del shell. El desactivar le\n" +" permite ejecutar un mandato del disco que tenga el mismo nombre que\n" +" el mandato interno del shell, sin usar el nombre de ruta completo.\n" " \n" " Opciones:\n" -" -a\tmuestra la lista de órdenes internas indicando si están activas o " -"no\n" -" -n\tdesactiva cada NOMBRE o muestra la lista de órdenes internas\n" -" \tdesactivadas\n" -" -p\tmuestra la lista de órdenes internas en una forma reusable\n" -" -s\tmuestra sólo los nombres de las órdenes internas `especiales' " +" -a\t escribe la lista de mandatos internos indicando si están activas " +"o no\n" +" -n\t desactiva cada NOMBRE o muestra la lista de mandatos internos\n" +" \t desactivadas\n" +" -p\t escribe la lista de mandatos internos en una forma reusable\n" +" -s\t escribe sólo los nombres de los mandatos internos `especiales' " "Posix\n" " \n" " Opciones que controlan la carga dinámica:\n" -" -f\tcarga la orden interna NOMBRE del objeto compartido FICHERO\n" -" -d\tborra una orden interna cargada con -f\n" +" -f\t carga interna de NOMBRE desde objeto compartido FICHERO\n" +" -d\t borra un mandato interno cargado con -f\n" " \n" " Sin opciones, se activa cada NOMBRE.\n" " \n" -" Para usar `test' que se encuentra en $PATH en lugar de la orden interna\n" +" Para usar `test' que se encuentra en $PATH en lugar del mandato interno\n" " del shell, ejecute `enable -n test'.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que NOMBRE no sea una orden interna del " +" Devuelve correcto a menos que NOMBRE no sea un mandato interno del " "shell\n" " o suceda un error." @@ -3272,14 +3276,14 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" -"Ejecuta argumentos como una orden de shell.\n" +"Ejecuta argumentos como un mandato de shell.\n" " \n" " Combina los ARGumentos en una sola cadena, usa el resultado como " "entrada\n" -" para el shell, y ejecuta las órdenes resultantes.\n" +" para el shell, y ejecuta los mandatos resultantes.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la orden o éxito si la orden es nula." +" Devuelve el estado de salida del mandato o éxito si el mandato es nula." # "a ser reconocidas" no está en español. # Yo pondría "las letras de opción que se reconocen". sv @@ -3363,11 +3367,10 @@ msgstr "" " de los primeros.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se encuentra una opción; falla si se encuentra\n" +" Devuelve correcto si se encuentra una opción; falla si se encuentra\n" " el final de las opciones o sucede un error." #: builtins.c:688 -#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3389,23 +3392,24 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" -"Reemplaza el shell con la orden dada.\n" +"Reemplaza el shell con el mandato dada.\n" " \n" -" Ejecuta la ORDEN, reemplazando este shell con el programa especificado.\n" -" Los ARGUMENTOS se vuelven los argumentos de la ORDEN. Si no se\n" -" especifica la ORDEN, cualquir redirección toma efecto en el shell " +" Ejecuta el MANDATO, reemplazando este shell con el programa " +"especificado.\n" +" Los ARGUMENTOS se vuelven los argumentos del MANDATO. Si no se\n" +" especifica el MANDATO, cualquier redirección toma efecto en el shell " "actual.\n" " \n" " Opciones:\n" -" -a nombre\tpasa el NOMBRE como el argumento cero de la ORDEN\n" -" -c\t\tejecuta la ORDEN en un ambiente vacío\n" -" -l\t\tcoloca un guión en el argumento cero de la ORDEN\n" +" -a nombre\tpasa el NOMBRE como el argumento cero del MANDATO\n" +" -c\tejecuta el MANDATO en un ambiente vacío\n" +" -l\tcoloca un guion en el argumento cero del MANDATO\n" " \n" -" Si la orden no se puede ejecutar, termina un shell no interactivo,\n" +" Si el mandato no se puede ejecutar, termina un shell no interactivo,\n" " a menos que la opción de shell `execfail' esté activa.\n" " \n" " Estado de Salida:\n" -" Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" +" Devuelve éxito a menos que no se encuentre el MANDATO o que suceda un\n" " error de redirección." #: builtins.c:709 @@ -3419,7 +3423,7 @@ msgstr "" " \n" " Termina el shell con un estado de N. Si se omite N, el estado de " "salida\n" -" es el mismo de la última orden ejecutada." +" es el mismo del último mandato ejecutado." #: builtins.c:718 msgid "" @@ -3463,31 +3467,30 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" -"Muestra o ejecuta órdenes de la lista de historia.\n" +"Enseña o ejecuta órdenes de la lista de historia.\n" " \n" -" fc se usa para listar o editar y reejecutar órdenes de la lista de\n" +" fc se usa para listar o editar y re-ejecutar mandatos de la lista de\n" " historia. PRIMERO y ÚLTIMO pueden ser números que especifican el " "rango,\n" -" o PRIMERO puede ser una cadena, que significa la orden más reciente que\n" +" o PRIMERO puede ser una cadena, que significa el mandato más reciente " +"que\n" " comience con esa cadena.\n" " \n" " -e NOMBRE_E selecciona el editor a usar. Por defecto es FCEDIT,\n" -" \t\tdespués EDITOR, después vi\n" +" \t\t tras EDITOR, después vi\n" " -l lista líneas en lugar de editar\n" " -n omite los números de línea al listar\n" -" -r inverte el orden de las líneas (muestra primero las más " -"recientes)\n" +" -r invierte el orden de las líneas (listados primero más recientes)\n" " \n" -" Con el formato `fc -s [pat=rep ...] [orden]', la ORDEN se\n" +" Con el formato `fc -s [pat=rep ...] [orden]', el MANDATO se\n" " ejecuta de nuevo después de realizar la sustitución ANT=NUEVO.\n" " \n" " Un alias útil para usar con esto es r='fc -s', así que al teclear\n" -" `r cc' ejecuta la última orden que comience con `cc' y al teclear\n" -" `r' re-ejecuta la última orden.\n" +" `r cc' ejecuta el último mandato que comience con `cc' y al teclear\n" +" `r' re-ejecuta el último mandato.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito o el estado de la orden ejecutada; si sucede un " -"error\n" +" Devuelve correcto o el estado del mandato ejecutado; si sucede un error\n" " es diferente de cero." #: builtins.c:758 @@ -3501,14 +3504,14 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Mueve el trabajo al primer plano.\n" +"Mueve la tarea al primer plano.\n" " \n" -" Ubica al trabajo identificado con IDTRABAJO en el primer plano, y\n" -" lo hace el trabajo actual. Si IDTRABAJO no está presente, se usa\n" -" la noción del shell del trabajo actual.\n" +" Ubica a la tarea identificada con IDTAREA en el plano principal, y\n" +" lo hace la tarea actual. Si IDTAREA no está presente, se usa\n" +" la noción del shell de tarea actual.\n" " \n" " Estado de Salida:\n" -" El estado del comando ubicado en primer plano, o falla si sucede un " +" El estado del mandato ubicado en primer plano, o falla si sucede un " "error." #: builtins.c:773 @@ -3524,18 +3527,17 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Mueve trabajos al segundo plano.\n" +"Mueve tareas al segundo plano.\n" " \n" -" Coloca los trabajos identificados por cada IDTRABAJO en segundo plano,\n" -" como si se hubieran iniciado con `&'. Si IDTRABAJO no está presente,\n" -" se usa la noción del shell del trabajo actual.\n" +" Coloca las tareas identificados por cada JOB_SPEC en segundo plano,\n" +" como si se hubieran iniciado con `&'. Si JOB_SPEC no está presente,\n" +" se usa la noción del shell de la tarea actual.\n" " \n" " Estado de Salida:\n" -" Devuelve éxito a menos que el control de trabajos no esté activado o\n" +" Devuelve correcto a menos que el control de tareas no esté activado o\n" " suceda un error." #: builtins.c:787 -#, fuzzy msgid "" "Remember or display program locations.\n" " \n" @@ -3577,7 +3579,7 @@ msgstr "" " \t\tde órdenes almacenadas.\n" " \n" " Estado de Salida\n" -" Devuelve con éxito a menos que no se encuentre NOMBRE o se proporcione\n" +" Devuelve correcto a menos que no se encuentre NOMBRE o se proporcione\n" " una opción inválida." #: builtins.c:812 @@ -3596,16 +3598,16 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" -"Muestra información sobre órdenes internas.\n" +"Enseña información sobre órdenes internas.\n" " \n" -" Muestra un resumen breve de las órdenes internas. Si se especifica\n" -" un PATRÓN, da ayuda detallada sobre todas las órdenes que\n" +" Enseña un resumen breve de los mandatos internos. Si se especifica\n" +" un PATRÓN, da ayuda detallada sobre todas los mandatos que\n" " coincidan con el PATRÓN, de otra forma se muestra la lista de\n" " tópicos de ayuda.\n" " \n" @@ -3613,13 +3615,13 @@ msgstr "" " -d\tmuestra una descripción corta para cada tópico\n" " -m\tmuestra el uso en un formato similar a página man\n" " -s\tmuestra sólo una sinopsis breve de uso para cada tópico que\n" -" \tcoincida con el PATRÓN\n" +" \t\tcoincida con el PATRÓN\n" " \n" " Argumentos:\n" " PATRÓN\tPatrón que especifica un tópico de ayuda\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que no se encuentre PATRÓN o se proporcione\n" +" Devuelve correcto a menos que no se encuentre PATRÓN o se proporcione\n" " una opción inválida." #: builtins.c:836 @@ -3632,7 +3634,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3656,16 +3659,17 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Muestra o manipula la lista de la historia. \n" -" Muestra la lista de la historia con números de línea, mostrando\n" -" cada línea modificada con un `*' como prefijo. El argumento N\n" -" muestra solamente las últimas N entradas.\n" +"Enseña o manipula la lista de la historia.\n" +" \n" +" Enseña la lista de la historia con números de línea, mostrando\n" +" cada línea modificada con un `*' como prefijo. Un argumento\n" +" de N lista solamente las últimas N entradas.\n" " \n" " Opciones:\n" " -c\tborra la lista de historia eliminando todas las entradas\n" -" -d despl\tborra la entrada de la histora en la posición DESPL\n" +" -d despl\tborra la entrada de la historia en la posición DESPL\n" " \n" -" -a\tagrega las líneas de histora de esta sesión al fichero de " +" -a\tagrega las líneas de historia de esta sesión al fichero de " "historia\n" " -n\tlee todas las líneas de historia que no se han leído del fichero\n" " \tde historia\n" @@ -3677,6 +3681,7 @@ msgstr "" " \tresultado, sin guardarlo en la lista de historia\n" " -s\tagrega los ARGumentos a la lista de historia como\n" " \tuna sola entrada\n" +" \n" " Si se proporciona FICHERO, entonces se usa como el fichero de\n" " historia. Si no, si $HISTFILE tien un valor, éste se usa, en otro caso\n" " ~/.bash_history.\n" @@ -3684,10 +3689,13 @@ msgstr "" " Si la variable $HISTTIMEFORMAT está definida y no es nula, se usa su\n" " valor como una cadena de formato strftime(3) para mostrar la marca de\n" " tiempo asociada con cada entrada de historia mostrada. No se muestra\n" -" ninguna marca de tiempo de otra forma." +" ninguna marca de tiempo de otra forma.\n" +" \n" +" Estado de salida:\n" +" Devuelve correcto a no ser que se dé una opción inválida u ocurra un " +"erroe." -#: builtins.c:872 -#, fuzzy +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3710,31 +3718,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 "" -"Muestra el estado de los trabajos.\n" +"Enseña el estado de las tareas.\n" " \n" -" Muestra los trabajos activos. IDTRABAJO restringe la salida a\n" -" ese trabajo. Sin opciones, se muestra el estado de todos los trabajos\n" -" activos.\n" +" Muestra las tareas activas. JOBSPEC restringe la salida a\n" +" esa tarea. Sin opciones, se enseña el estado de todas las tareas\n" +" activas.\n" " \n" " Opciones:\n" -" -l\tmuestra los id's de los procesos, además de\n" -" \tla información normal\n" -" -n\tsolo muestra los procesos que han cambia de estado desde\n" -" \tla última notificación\n" -" -p\tsolo muestra los id's de los procesos -r\trestringe la salida " -"a los trabajos en ejecución\n" -" -s\trestringe la salida a los trabajos detenidos\n" -" \n" -" Si se especifica -x, la ORDEN se ejecuta después de que todas las\n" -" especificaciones de trabajo que aparecen en ARGS se han reemplazado\n" -" con el ID de proceso del líder del grupo de procesos de dicho trabajo.\n" +" -l\t muestra los IDs de los procesos, además\n" +" \t de la información común\n" +" -n\t solo muestra los procesos que han cambia de estado desde\n" +" \t la última notificación\n" +" -p\t solo muestra los id de los procesos\n" +" -r\t restringe la salida a las tareas en ejecución\n" +" -s\t restringe la salida a las tareas detenidos\n" +" \n" +" Si se especifica -x, el MANDATO se ejecuta después de que todas las\n" +" especificaciones de tarea que aparecen en ARGS se han reemplazado\n" +" con el ID de proceso del líder del grupo de procesos de dicha tarea.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o suceda un\n" -" error. Si se usa -x, devuelve el estado de salida de la ORDEN." +" Devuelve correcto a menos que se de una opción inválida o suceda un\n" +" error. Si se usa -x, devuelve el estado de salida del MANDATO." -#: builtins.c:899 -#, fuzzy +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3750,23 +3757,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Borra trabajos del shell actual.\n" +"Quita tareas del shell actual.\n" " \n" -" Borra cada argumento IDTRABAJO de la tabla de trabajos activos. Sin\n" -" algún IDTRABAJO, el shell utiliza su noción del trabajo actual.\n" +" Quita cada argumento IDTAREA de la distribución de tareas activas. Sin\n" +" algún IDTAREA, el shell utiliza su noción del tarea actual.\n" " \n" " Opciones:\n" -" -a\tborra todos los trabajos si no se proporciona IDTRABAJO\n" -" -h\tmarca cada IDTRABAJO para no se envíe SIGHUP al trabajo si\n" -" \tel shell recibe un SIGHUP\n" -" -r\tborra solo los trabajos en ejecución\n" +" -a\t quita todas las tareas si no se proporciona IDTAREAS\n" +" -h\t marca cada IDTAREA para no se envíe SIGHUP a la tarea\n" +" \t\t si el shell recibe un SIGHUP\n" +" -r\t quita solo las tareas en ejecución\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcionen una opción o un\n" -" IDTRABAJO inválidos." +" Devuelve correcto a menos que se proporcionen una opción o\n" +" una IDTAREA inválida." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3788,25 +3794,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Envía una señal a un trabajo.\n" +"Envía una señal a una tarea.\n" " \n" -" Envía a los procesos nombrados por PID (o IDTRABAJO) la señal ID_SEÑAL\n" +" Envía a los procesos nombrados por PID (o IDTAREA) la señal ID_SEÑAL\n" " o NUM_SEÑAL. Si no están presentes ni ID_SEÑAL o NUM_SEÑAL, se asume\n" " SIGTERM.\n" " \n" " Opciones:\n" -" -s sig\tSIG es un nombre de señal\n" -" -n sig\tSIG es un número de señal\n" -" -l\tenlista los nombres de señales; si hay argumentos a continuación\n" +" -s sig\t SIG es un nombre de señal\n" +" -n sig\t SIG es un número de señal\n" +" -l\t lista los nombres de señales; si hay argumentos a continuación\n" " \tde `-l', se asume que son números de señal para las cuales se debe\n" " mostrar el nombre.\n" " \n" -" Kill es una orden interna del shell por dos razones: permite que se\n" -" puedan usar IDs de trabajo en lugar de IDs de proceso, y permite matar\n" -" procesos si ha alcanzado el límite de procesos que puede crear.\n" +" Kill es un mandato interno del shell por dos razones: permite que se\n" +" puedan utilizar varios ID de tareas en lugar de varios ID de proceso,\n" +" y permite matar procesos si ha alcanzado el límite de procesos que\n" +" puede crear.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se de una opción inválida o suceda un " +" Devuelve correcto a menos que se de una opción inválida o suceda un " "error." # "a ser evaluada" no está en español. sv @@ -3817,7 +3824,7 @@ msgstr "" # No sé si existe precedencia en español, pero me suena fatal. # Yo pondría simplemente "prioridad". sv # Creo que si existe, pero tu sugerencia es mejor. cfuga -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3865,46 +3872,47 @@ msgstr "" " \n" " Evalúa cada ARG como una expresión aritmética. La evaluación se hace\n" " con enteros de longitud fija, sin revisar desbordamientos, aunque la\n" -" la división por 0 se captura y se marca como un error. La siguiente\n" -" lista de operadores está agrupada en niveles de operadores de la misma\n" -" prioridad. Se muestran los niveles en orden de prioridad decreciente.\n" +" la división por 0 se captura y se marca como un error. La siguiente " +"lista\n" +" de operadores está agrupada en niveles de operadores de la misma\n" +" prioridad. Los niveles se muestran en orden de prioridad decreciente.\n" " \n" " \tid++, id--\tpost-incremento, post-decremento de variable\n" " \t++id, --id\tpre-incremento, pre-decremento de variable\n" " \t-, +\t\tmenos, más unario\n" -" \t!, ~\t\tnegación lógica y basada en bits\n" -" \t**\t\texponenciación\n" -" \t*, /, %\t\tmultiplicación, división, residuo\n" -" \t+, -\t\tadición, sustracción\n" -" \t<<, >>\t\tdesplazamientos de bits izquierdo y derecho\n" -" \t<=, >=, <, >\tcomparación\n" -" \t==, !=\t\tequivalencia, inequivalencia\n" -" \t&\t\tAND de bits\n" -" \t^\t\tXOR de bits\n" -" \t|\t\tOR de bits\n" -" \t&&\t\tAND lógico\n" -" \t||\t\tOR lógico\n" +" \t!, ~\t\t negación lógica y basada en bits\n" +" \t**\t\t exponenciación\n" +" \t*, /, %\t\t multiplicación, división, residuo\n" +" \t+, -\t\t adición, sustracción\n" +" \t<<, >>\t\t desplazamientos de varios bit izquierdo y derecho\n" +" \t<=, >=, <, >\t comparación\n" +" \t==, !=\t\t equivalencia, inequivalencia\n" +" \t&\t\t Y de varios bit\n" +" \t^\t\tXO de varios bit\n" +" \t|\t\tO de varios bit\n" +" \t&&\t\t Y lógico\n" +" \t||\t\t O lógico\n" " \texpr ? expr : expr\n" -" \t\t\toperador condicional\n" +" \t\t\t operador condicional\n" " \t=, *=, /=, %=,\n" " \t+=, -=, <<=, >>=,\n" -" \t&=, ^=, |=\tasignación\n" +" \t&=, ^=, |=\t asignación\n" " \n" -" Se permiten las variables de shell como operandos. Se reemplaza\n" -" el nombre de la variable por su valor (coercionado a un entero\n" -" de longitud fija) dentro de una expresión. La variable no\n" -" necesita tener activado su atributo integer para ser usada en\n" -" una expresión.\n" +" Se permiten las variables de shell como operandos. El nombre\n" +" de la variable se reemplaza por su valor (coercionado a un\n" +" entero de longitud fija) dentro de una expresión. La variable\n" +" no necesita tener activado su atributo entero para emplearse\n" +" en una expresión.\n" " \n" " Los operadores se evalúan en orden de prioridad. Primero se\n" " evalúan las sub-expresiones en paréntesis y pueden sobrepasar\n" " las reglas de prioridad anteriores.\n" " \n" " Estado de salida:\n" -" Si el último ARGumento se evalúa como 0, let devuelve 1; de otra\n" -" forma, let devuelve 0." +" Si el último ARGumento se evalúa como 0, ‘let’ devuelve 1; de\n" +" otra forma, ‘let’ devuelve 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3926,7 +3934,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3956,51 +3964,53 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"Lee una línea de la salida estándar y la divide en campos.\n" +"Lee una línea de la salida común y la divide en campos.\n" " \n" -" Lee una sola línea de la entrada estándar, o del descriptor de\n" +" Lee una sola línea de la entrada común, o del descriptor de\n" " fichero FD si se proporciona la opción -u. La línea se divide en " "campos\n" " con separación de palabras, y la primera palabra se asigna al primer\n" -" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente, con\n" -" las palabras restantes asignadas al último NOMBRE. Sólo los caracteres\n" +" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente,\n" +" con las palabras restantes asignadas al último NOMBRE. Sólo los " +"caracteres\n" " que se encuentran en $IFS se reconocen como delimitadores de palabras.\n" " \n" " Si no se proporciona ningún NOMBRE, la línea leída se guarda en la\n" " variable REPLY.\n" " \n" " Opciones:\n" -" -a matriz\tasigna las palabras leídas a índices secuenciales de\n" -" \tla variable de matriz MATRIZ, empezando en cero\n" -" -d delim\tcontinúa hasta que se lea el primer carácter de DELIM,\n" -" \t\ten lugar de línea nueva\n" -" -e\t\tusa Readline para obtener la línea en un shell interactivo\n" -" -i texto\tUsa el TEXTO como el texto inicial para Readline\n" -" -n ncars\tregresa después de leer NCARS caracteres en lugar de\n" -" \t\tesperar una línea nueva, pero honra a un delimitador si\n" -" \t\tse leen menos de NCARS caracteres antes del delimitador\n" -" -N ncars\tdevuelve sólo después de leer exactamente NCARS\n" -" \t\tcaracteres, a menos que se encuentre el fin del fichero\n" -" \t\to expire la lectura, descartando cualquier delimitador\n" -" -p prompt\tmuestra la cadena PROMPT sin un caractér de línea nueva\n" -" \t\tal final antes de intentar leer\n" -" -r\t\tno permite que las barras invertidas escapen caracteres\n" -" -s\t\tno muestra la salida que proviene de una terminal\n" -" -t tiempo\texpira y devuelve fallo si no se lee una línea completa\n" -" \t\tde entrada en TIEMPO segundos. El valor de la variable TMOUT\n" -" \t\tes el tiempo de expiración por defecto. TIEMPO puede ser un\n" -" \t\tnúmero fraccionario. Si TIEMPO es 0, read devuelve con éxito\n" -" \t\tsólo si hay entrada disponible en el descriptor de fichero\n" -" \t\tespecificado. El estado de salida es mayor que 128 si se excede\n" -" \t\tel tiempo de expiración.\n" -" -u df\t\tlee del descriptor de fichero DF en lugar de la entrada\n" -" \t\testándar \n" +" -a matriz\t asigna las palabras leídas a índices secuenciales de\n" +" \t\t la variable matricial MATRIZ, empezando en cero\n" +" -d delim\t continúa hasta que se lea el primer carácter de DELIM,\n" +" \t\t en lugar de línea nueva\n" +" -e\t emplea Readline para obtener la línea en un shell interactivo\n" +" -i texto\t Emplea el TEXTO como el texto inicial para Readline\n" +" -n ncars\t regresa tras leer NCARS caracteres en lugar de\n" +" \t\t esperar una línea nueva, pero honra a un delimitador si\n" +" \t\t se leen menos de NCARS caracteres antes del delimitador\n" +" -N ncars\t devuelve sólo después de leer exactamente NCARS\n" +" \t\t caracteres, a menos que se encuentre el fin del fichero\n" +" \t\t o expire la lectura, descartando cualquier delimitador\n" +" -p prompt\t sale la cadena PROMPT sin un carácter de línea nueva\n" +" \t\t al final antes de intentar leer\n" +" -r\t\t no permite que las barras invertidas escapen caracteres\n" +" -s\t\t no muestra la salida que proviene de una terminal\n" +" -t tiempo\t expira y devuelve fallo si no se lee una línea completa\n" +" \t\t de entrada en TIEMPO segundos. El valor de la variable TMOUT\n" +" \t\t es el tiempo de expiración por defecto. TIEMPO puede ser un\n" +" \t\t número fraccionario. Si TIEMPO es 0, ‘read’ devuelve correcto\n" +" \t\t sólo si hay entrada disponible en el descriptor de fichero\n" +" \t\t especificado. El estado de salida es mayor que 128 si se excede\n" +" \t\t el tiempo de expiración.\n" +" -u df\t\t lee del descriptor de fichero DF en lugar de la entrada\n" +" \t\t común\n" +" \n" " Estado de Salida:\n" " El código de devolución es cero, a menos que se encuentre un final de\n" -" línea, el tiempo de read expire, o se proporcione un descriptor de\n" -" fichero inválido como el argumento de -u." +" línea, el tiempo de lectura se agote, o se proporcione un descriptor\n" +" de fichero inválido como el argumento de -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -4013,17 +4023,15 @@ msgid "" msgstr "" "Devuelve de una función de shell.\n" " \n" -" Causa que una función o un guión leído termine con el valor de " -"devolución\n" -" especificado por N. Si se omite N, el estado de devolución es el de\n" -" la última orden ejecutada dentro de la función o guión.\n" +" Causa que una función o un guión leído termine con el valor devuelto\n" +" especificado por N. Si se omite N, el estado devuelto es el del último\n" +" mandato ejecutado dentro de la función o guión.\n" " \n" " Estado de Salida:\n" " Devuelve N, o falla si el shell no está ejecutando una función o un " "guión." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4111,27 +4119,27 @@ msgstr "" "Establece o borra los valores de las opciones de shell y los parámetros\n" "posicionales.\n" " \n" -" Cambia el valor de los atributos de shell y los parámetros " +" Modifica el valor de los atributos de shell y los parámetros " "posicionales,\n" " o muestra los nombres y valores de las variables de shell.\n" " \n" " Opciones:\n" " -a Marca las variables que se modifican o crean para exportación.\n" -" -b Notifica el término de trabajos inmediatamente.\n" -" -e Termina inmediatamente si una orden termina con un estado\n" -" diferente a cero.\n" +" -b Notifica el término de tareas inmediatamente.\n" +" -e Termina inmediatamente si un mandato termina con un estado\n" +" diferente a cero.\n" " -f Desactiva la generación de nombres de ficheros (englobamiento).\n" -" -h Recuerda la ubicación de las órdenes como se localizaron.\n" +" -h Recuerda la ubicación de los mandatos como se localizaron.\n" " -k Todos los argumentos de asignación se colocan en el ambiente para " -"una\n" -" orden, no solo aquellos que preceden al nombre de la orden.\n" -" -m Activa el control de trabajos.\n" +"un\n" +" mandato, no solo aquellos que preceden al nombre del mandato.\n" +" -m Activa el control de tareas.\n" " -n Lee órdenes pero no las ejecuta.\n" -" -o nombre-opcion\n" -" Establece la variable correspondiente a nombre-opcion:\n" +" -o nombre-opcion\n" +" Establece la variable correspondiente a nombre-opción:\n" " allexport igual que -a\n" " braceexpand igual que -B\n" -" emacs usa una interfaz de edición de línea estilo " +" emacs emplea una interfaz de edición lineal estilo " "emacs\n" " errexit igual que -e\n" " errtrace igual que -E\n" @@ -4139,7 +4147,7 @@ msgstr "" " hashall igual que -h\n" " histexpand igual que -H\n" " history activa la historia de órdenes\n" -" ignoreeof el shell no terminará después de leer EOF\n" +" ignoreeof el shell no terminará después de leer FDL\n" " interactive-comments\n" " permite que haya comentarios en órdenes " "interactivas\n" @@ -4153,32 +4161,30 @@ msgstr "" " nounset igual que -u\n" " onecmd igual que -t\n" " physical igual que -P\n" -" pipefail el valor de devolución de una tubería es el " -"estado\n" -" del último comando en salir con un estado " +" pipefail el valor devuelto de una tubería es el estado\n" +" del último mandato que sale con un estado " "diferente\n" -" de cero, o cero si ninguna orden termina con un\n" +" de cero, o cero si ningún mandato termina con un\n" " estado diferente de cero\n" -" posix cambia el comportamiento de bash donde la " -"operación\n" -" por defecto difiere del estándar Posix para que\n" -" coincida con el estándar\n" +" posix modifica el comportamiento de ‘bash’ donde la\n" +" operación por defecto difiere del estándar POSIX\n" +" para que coincida con la estandarización\n" " privileged igual que -p\n" " verbose igual que -v\n" " vi usa una interfaz de edición de línea estilo vi\n" " xtrace igual que -x\n" -" -p Activo cuando los ids real y efectivo del usuario no coinciden.\n" +" -p Activo cuando los id real y efectivo del usuario no coinciden.\n" " Desactiva el procesamiento del fichero $ENV y la importación de\n" " funciones de shell. Si se desactiva esta opción causa que el uid " "y\n" " el gid efectivos sean iguales al uid y el gid real.\n" -" -t Termina después de leer y ejecutar una orden.\n" +" -t Termina después de leer y ejecutar un mandato.\n" " -u Trata las variables sin definir como un error al sustituir.\n" -" -v Muestra las líneas de entrada del shell mientras se leen.\n" -" -x Muestra las órdenes y sus argumentos mientras se ejecutan.\n" +" -v Escribe las líneas de entrada del shell mientras se leen.\n" +" -x Escribe los mandatos y sus argumentos mientras se ejecutan.\n" " -B el shell realizará expansión de llaves.\n" " -C Si se activa, no permite que los ficheros regulares existentes\n" -" se sobreescriban por redirección de la salida.\n" +" se sobrescriban por redirección de la salida.\n" " -E Si se activa, las funciones del shell heredan la trampa ERR.\n" " -H Activa el estilo de sustitución de historia ! . Esta opción está\n" " activa por defecto cuando el shell es interactivo.\n" @@ -4203,10 +4209,9 @@ msgstr "" " se proporciona ningún ARG, se muestran todas las variables del shell.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida." +" Devuelve correcto a menos que se proporcione una opción inválida." -#: builtins.c:1132 -#, fuzzy +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4232,8 +4237,11 @@ msgstr "" " Por cada NOMBRE, borra la función o variable correspondiente.\n" " \n" " Opciones:\n" -" -f\ttrata cada NOMBRE como una función de shell\n" -" -v\ttrata cada NOMBRE como una variable de shell\n" +" -f\t trata cada NOMBRE como una función de shell\n" +" -v\t trata cada NOMBRE como una variable de shell\n" +" -n\t trata cada NOMBRE como una referencia de nombre y\n" +" \t\t desestablece la misma variable mejor que a la variable\n" +" \t\t referenciada\n" " \n" " Sin opciones, unset primero trata de borrar una variable, y si falla,\n" " trata de borrar una función.\n" @@ -4241,10 +4249,10 @@ msgstr "" " Algunas variables no se pueden borrar; también consulte `readonly'.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " un NOMBRE sea de sólo lectura." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4264,24 +4272,23 @@ msgid "" msgstr "" "Establece el atributo de exportación para las variables de shell.\n" " \n" -" Marca cada NOMBRE para exportación automática al ambiente para las " -"órdenes\n" +" Marca cada NOMBRE para exportación automática al ambiente para los " +"mandatos\n" " ejecutadas subsecuentemente. Si se proporciona un VALOR, se asigna el\n" " VALOR antes de exportar.\n" " \n" " Opciones:\n" -" -f\tse refiere a funciones de shell\n" -" -n\tborra la propiedad de exportación para cada NOMBRE\n" -" -p\tmuestra una lista de todas las variables y funciones exportadas\n" +" -f\t se refiere a funciones de shell\n" +" -n\t borra la propiedad de exportación para cada NOMBRE\n" +" -p\t muestra una lista de todas las variables y funciones exportadas\n" " \n" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o que\n" +" Devuelve correcto a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1173 -#, fuzzy +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4309,19 +4316,20 @@ msgstr "" " un VALOR, se asigna el VALOR antes de marcar como de sólo lectura.\n" " \n" " Opciones:\n" -" -a\tse refiere a variables de matriz indizada\n" -" -A\tse refiere a variables de matriz asociativa\n" -" -f\tse refiere a funciones de shell\n" -" -p\tmuestra una lista de todas las variables y funciones de sólo " -"lectura\n" +" -a\t se refiere a variables de matriz indizada\n" +" -A\t se refiere a variables de matriz asociativa\n" +" -f\t se refiere a funciones de shell\n" +" -p\t enseña una lista de todas las variables y funciones de sólo " +"lectura,\n" +" \t\t dependiendo de si i no la opción -f está dada\n" " \n" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4337,9 +4345,9 @@ msgstr "" " se proporciona N, se asume que es 1.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que N sea negativo o mayor que $#." +" Devuelve correcto a menos que N sea negativo o mayor que $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4354,16 +4362,17 @@ msgid "" msgstr "" "Ejecuta órdenes de un fichero en el shell actual.\n" " \n" -" Lee y ejecuta órdenes del FICHERO en el shell actual. Se utilizan las\n" +" Lee y ejecuta mandatos del FICHERO en el shell actual. Se utilizan las\n" " entradas en $PATH para encontrar el directorio que contiene el FICHERO.\n" " Si se proporciona ARGUMENTOS, se convierten en los parámetros " "posicionales\n" " cuando se ejecuta el FICHERO.\n" +" \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" +" Devuelve el estado del último mandato ejecutado del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4386,11 +4395,10 @@ msgstr "" " -f\tfuerza la suspensión, aún si el shell es un shell de entrada\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que no esté activo el control de trabajos o\n" +" Devuelve correcto a menos que no esté activo el control de tareas o\n" " suceda un error." -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4480,8 +4488,8 @@ msgstr "" " de un fichero. Hay también operadores de cadenas, y operadores de\n" " comparación numérica.\n" " \n" -" La conducta de test depende del número de arcumentos. Lea la página\n" -" de manual de bash para la especificación completa.\n" +" La conducta de test depende del número de argumentos. Lea la página\n" +" del manual de bash para la especificación completa.\n" " \n" " Operadores de fichero:\n" " \n" @@ -4540,8 +4548,11 @@ msgstr "" " \n" " -o OPCIÓN Verdadero si la opción del shell OPCIÓN está activada.\n" " -v VAR Verdadero si la variable de shell VAR está activada.\n" +" -R VAR Verdadero si la variable VAR está activada y es un " +"nombre\n" +" referencial.\n" " ! EXPR Verdadero si expr es falso.\n" -" EXPR1 -a EXPR2 Verdadero si expr1 Y expr2 are son verdaderas.\n" +" EXPR1 -a EXPR2 Verdadero si ambos expr1 Y expr2 are son verdaderas.\n" " EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera.\n" " \n" " arg1 OP arg2 Pruebas aritméticas. OP es uno de -eq, -ne,\n" @@ -4551,10 +4562,10 @@ msgstr "" " igual, no igual, menor, menor o igual, mayor, mayor o igual que ARG2.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" +" Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" " falso o se proporciona un argumento inválido." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4563,10 +4574,10 @@ msgid "" msgstr "" "Evalúa una expresión condicional.\n" " \n" -" Este es un sinónimo para la orden interna \"test\", pero el último\n" +" Este es un sinónimo para el mandato interno \"test\", pero el último\n" " argumento debe ser un `]' literal, que coincida con el `[' inicial." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4577,16 +4588,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"Muestra los tiempos de proceso.\n" +"Enseña los tiempos de proceso.\n" " \n" -" Muestra los tiempos de usuario y sistema acumulados por el shell y " +" Escribe los tiempos de usuario y sistema acumulados por el shell y " "todos\n" -" sus procesos hijos.\n" +" sus subprocesos.\n" " \n" " Estado de salida:\n" -" Siempre con éxito." +" Siempre correcto." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4631,30 +4642,30 @@ msgid "" msgstr "" "Atrapa señales y otros eventos.\n" " \n" -" Define y activa manejadores a ejecutar cuando el shell recibe señales\n" +" Define y activa manipuladores a ejecutar cuando el shell recibe señales\n" " u otras condiciones.\n" " \n" -" ARG es una orden para leer y ejecutar cuando el shell recibe la(s)\n" +" ARG es un mandato para leer y ejecutar cuando el shell recibe la(s)\n" " señal(es) ID_SEÑAL. Si ARG no está presente (y sólo se proporciona\n" " una sola ID_SEÑAL) o se proporciona `-', cada señal especificada se\n" " reestablece a su valor original. Si ARG es la cadena nula, el shell\n" -" y las órdenes que invoque ignoran cada ID_SEÑAL.\n" +" y los mandatos que invoque ignoran cada ID_SEÑAL.\n" " \n" -" Si una ID_SEÑAL es EXIT (0) se ejecuta la orden ARG al salir del\n" +" Si una ID_SEÑAL es EXIT (0) se ejecuta el mandato ARG al salir del\n" " shell. Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada\n" -" orden simple. Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez\n" -" que una función de shell o un guión ejecutado por las órdenes internas\n" +" mandato simple. Si una ID_SEÑAL es RETURN, se ejecuta ARG cada vez\n" +" que una función de shell o un guión ejecutado por los mandatos internos\n" " . o source termina su ejecución. Una ID_SEÑAL de ERR significa que\n" -" se ejecuta ARG cada vez que la falla de una orden causa que el shell\n" +" se ejecuta ARG cada vez que la falla de un mandato causa que el shell\n" " termine cuando la opción -e está activada.\n" " \n" -" Si no se proporcionan argumentos, trap muestra la lista de órdenes\n" +" Si no se proporcionan argumentos, trap muestra la lista de mandatos\n" " asociadas con cada señal.\n" " \n" " Opciones:\n" -" -l\tmuestra una lista de nombres de señal con su número " +" -l\t muestra una lista de nombres de señal con su número " "correspondiente\n" -" -p\tmuestra las órdenes trap asociadas con cada ID_SEÑAL\n" +" -p\t muestra los mandatos trap asociadas con cada ID_SEÑAL\n" " \n" " Cada ID_SEÑAL es un nombre de señal en o un número de señal.\n" " Los nombres de señal no son sensibles a mayúsculas y minúsculas y el\n" @@ -4662,14 +4673,13 @@ msgstr "" " \"kill -signal $$\". \n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que una ID_SEÑAL sea inválida o se " +" Devuelve correcto a menos que una ID_SEÑAL sea inválida o se " "proporcione\n" " una opción inválida." # No he visto que este fichero incluya la posibilidad de traducir las # palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga -#: builtins.c:1393 -#, fuzzy +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4698,37 +4708,39 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" -"Muestra información sobre el tipo de orden.\n" +"Enseña información sobre el tipo de mandato.\n" " \n" -" Por cada NOMBRE, indica cómo se interpretaría si se usa como un nombre\n" -" de orden.\n" +" Por cada NOMBRE, indica cómo se interpretaría si se emplea como un\n" +" nombre de mandato.\n" " \n" " Opciones:\n" -" -a\tmuestra todas las ubicaciones que contienen un ejecutable llamado\n" -" \tNOMBRE; incluye aliases, órdenes internas, y funciones, solo y solo " +" -a\t enseña todas las ubicaciones que contienen un ejecutable llamado\n" +" \t NOMBRE; incluye aliases, mandatos internos, y funciones, si y solo " "si\n" -" \tno se usó también la opción `-p'\n" -" -f\tsuprime la búsqueda de funciones de shell\n" -" -P\tfuerza una búsqueda en PATH por cada nombre, aún si hay un alias,\n" -" \torden interna, o función, y devuelve el nombre del fichero en el " +" \t no se empleó también la opción `-p'\n" +" -f\t suprime la búsqueda de funciones de shell\n" +" -P\t fuerza una búsqueda en PATH por cada nombre, aún si hay un " +"alias,\n" +" \t mandato interno, o función, y devuelve el nombre del fichero en el " "disco\n" -" \tque se ejecutaría\n" -" -p\tdevuelve ya sea el nombre del fichero en disco que se ejecutaría,\n" -" \to nada si `type -t NOMBRE' no devuelve `fichero'.\n" -" -t\tmuestra una sola palabra, que es una de `alias', `keyword',\n" +" \t que se ejecutaría\n" +" -p\t devuelve ya sea el nombre del fichero en disco que se " +"ejecutaría,\n" +" \t o nada si `type -t NOMBRE' no devuelve `fichero'.\n" +" -t\t saca una sola palabra, que es una de `alias', `keyword',\n" " \t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n" -" \tpalabra reservada del shell, función del shell, orden interna del\n" -" \tshell, fichero de disco, o no se encuentra, respectivamente.\n" +" \t palabra reservada del shell, función del shell, mandato interno del\n" +" \t shell, fichero de disco, o no se encuentra, respectivamente.\n" " \n" " Argumentos:\n" -" NOMBRE\tNombre de orden a interpretar.\n" +" NOMBRE\t Nombre de mandato a interpretar.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se encuentran todos los NOMBREs; falla si no se\n" +" Devuelve como correcto si se encuentran todos los NOMBREs; falla si no " +"se\n" " encuentra alguno." -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4793,6 +4805,7 @@ msgstr "" " -f\tel tamaño máximo de los ficheros escritos por el shell y sus " "hijos\n" " -i\tel número máximo de señales pendientes\n" +" -k\tel número máximo de kcolas ubicadas para este proceso\n" " -l\tel tamaño máximo que un proceso puede bloquear en memoria\n" " -m\tel tamaño máximo para las variables residentes\n" " -n\tel número máximo de descriptores de fichero abiertos\n" @@ -4804,6 +4817,10 @@ msgstr "" " -u\tel número máximo de procesos de usuario\n" " -v\tel tamaño de la memoria virtual\n" " -x\tel número máximo de bloqueos de ficheros\n" +" -P\tel número máximo de pseudoterminales\n" +" -T\tel número máximo de hilos\n" +" \n" +" No todas las opciones están disponibles en todas las plataformas.\n" " \n" " Si se establece LÍMITE, éste es el nuevo valor del recurso " "especificado;\n" @@ -4818,11 +4835,11 @@ msgstr "" " cual es un número de procesos sin escala.\n" " \n" " Estado de salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o " +" Devuelve correcto a menos que se proporcione una opción inválida o " "suceda\n" " un error." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4839,7 +4856,7 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -"Muestra o establece la máscara de modo de ficheros.\n" +"Enseña o establece la máscara de modo de ficheros.\n" " \n" " Establece la máscara de creación de ficheros del usuario a MODO. Si se\n" " omite el MODO, muestra el valor actual de la máscara.\n" @@ -4853,10 +4870,10 @@ msgstr "" " -S\tsalida simbólica; de otra forma muestra el modo como número octal\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que el MODO sea inválido o se proporcione\n" +" Devuelve correcto a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4865,31 +4882,32 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -"Espera la terminación del trabajo y devuelve el estado de salida.\n" +"Espera la terminación de la tarea y devuelve el estado de salida.\n" " \n" " Espera al proceso identificado por ID, el cual puede ser un ID de\n" -" proceso o una especificación de trabajo, y reporta su estado de salida.\n" -" Si no se proporciona un ID, espera a todos los procesos hijo activos,\n" +" proceso o una especificación de tarea, y boletina su estado de salida.\n" +" Si no se proporciona un ID, espera a todos los subprocesos activos,\n" " y el estado de devolución es cero. Si ID es una especificación de\n" -" trabajo, espera a todos los procesos en la cola de trabajos.\n" +" tarea, espera a todos los procesos en la cola de tareas.\n" " \n" " Estado de Salida:\n" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1515 -#, fuzzy +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4903,17 +4921,19 @@ msgid "" "invalid\n" " option is given." msgstr "" -"Espera la terminación del trabajo y devuelve el estado de salida.\n" +"Espera para terminar el proceso y devolver el estado de salida.\n" " \n" -" Espera al proceso especificado y reporta su estado de salida. Si\n" -" no se proporciona un PID, espera a todos los procesos hijo activos,\n" -" y el código de devolución es cero. PID debe ser un ID de proceso.\n" +" Espera por cada proceso especificado por un PID y reporta su\n" +" estado de salida. Si no se proporciona un PID, espera a todos los\n" +" procesos descendientes activos, y el código de devolución sea cero.\n" +" El PID debe ser un ID de proceso.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" -" opción inválida." +" Devuelve el estado del último PID; falla si PID es inválido o se " +"proporciona\n" +" una opción inválida." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4930,12 +4950,12 @@ msgstr "" " El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en\n" " una lista de elementos. Si `in PALABRAS ...;' no está presente,\n" " entonces se asume `in \"$@\"'. Para cada elemento en PALABRAS,\n" -" se define NOMBRE como ese elemento, y se ejecutan las ÓRDENES.\n" +" se define NOMBRE como ese elemento, y se ejecutan las MANDATOS.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4956,16 +4976,16 @@ msgstr "" " Equivalente a\n" " \t(( EXP1 ))\n" " \twhile (( EXP2 )); do\n" -" \t\tÓRDENES\n" +" \t\tMANDATOS\n" " \t\t(( EXP3 ))\n" " \tdone\n" " EXP1, EXP2, y EXP3 son expresiones aritméticas. Si se omite\n" " cualquier expresión, se comporta como si se evaluara a 1.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4994,15 +5014,15 @@ msgstr "" " línea consiste en el número correspondiente a una de las palabras\n" " mostradas, entonces se define NOMBRE como esa palabra. Si la\n" " línea está vacía, PALABRAS y el prompt se muestran de nuevo. Si\n" -" se lee EOF, se completa la orden. Cualquier otro valor leído\n" +" se lee FDL, se completa el mandato. Cualquier otro valor leído\n" " causa que NOMBRE se defina como nulo. La línea leída se guarda\n" -" en la variable REPLY. Se ejecutan las ÓRDENES después de cada\n" -" selección hasta que se ejecuta una orden break.\n" +" en la variable REPLY. Se ejecutan las MANDATOS después de cada\n" +" selección hasta que se ejecuta un mandato break.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5029,7 +5049,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÍA." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5041,13 +5061,13 @@ msgid "" msgstr "" "Ejecuta órdenes en base a la coincidencia de patrones.\n" " \n" -" Ejecuta ÓRDENES selectivamente basado en coincidencias de la PALABRA\n" +" Ejecuta MANDATOS selectivamente basado en coincidencias de la PALABRA\n" " con el PATRÓN. Se utiliza `|' para separar patrones múltiples.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5069,21 +5089,22 @@ msgid "" msgstr "" "Ejecuta comandos en base a condicionales.\n" " \n" -" Se ejecuta la lista `if ÓRDENES'. Si su estado de salida es cero,\n" +" Se ejecuta la lista `if MANDATOS'. Si su estado de salida es cero,\n" " entonces se ejecuta la lista `then ÓRDENES`. De otra forma, cada lista\n" -" `elif ÓRDENES' se ejecuta en su lugar, y si su estado de salida es " +" `elif MANDATOS' se ejecuta en su lugar, y si su estado de salida es " "cero,\n" -" se ejecuta la lista `then ÓRDENES' correspondiente y se completa la\n" -" orden if. De otra forma, se ejecuta la lista `else ÓRDENES', si está\n" -" presente. El estado de salida de toda la construcción es el estado de\n" -" salida de la última orden ejecutada, o cero si ninguna condición " -"resultó\n" +" se ejecuta la lista `then MANDATOS' correspondiente y se completa el\n" +" mandato if. De otra forma, se ejecuta la lista `else MANDATOS', si " +"está\n" +" presente. El estado de salida de todo el constructor es el estado " +"saliente\n" +" del último mandato ejecutado, o cero si ninguna condición resultó\n" " verdadera.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5093,15 +5114,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Ejecuta órdenes mientras una prueba tenga éxito.\n" +"Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" Expande y ejecuta MANDATOS mientras el mandato final en las MANDATOS\n" " `while' tenga un estado de salida de cero.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5111,16 +5132,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Ejecuta órdenes mientras una prueba no tenga éxito.\n" +"Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" +" Expande y ejecuta MANDATOS mientras el mandato final en las MANDATOS\n" " `until' tengan un estado de salida que no sea cero.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5134,17 +5154,16 @@ msgid "" msgstr "" "Crea un coproceso llamado NOMBRE.\n" " \n" -" Ejecuta la ORDEN asíncronamente, con la salida estándar y la entrada\n" -" estándar de la orden contectada a través de una tubería a los " -"descriptores\n" -" de fichero asignados a los índices 0 y 1 de una variable de matriz " -"NOMBRE\n" -" en el shell en ejecución. El nombre por defecto es \"COPROC\".\n" +" Ejecuta el MANDATO asíncronamente, con la salida y entrada comunes\n" +" del mandato conectado a través de una tubería a los descriptores\n" +" de fichero asignados a los índices 0 y 1 de una variable de matriz\n" +" lineal NOMBRE en el shell en ejecución. El nombre por defecto es\n" +" \"COPROC\".\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida de la ORDEN." +" El mandato «coproc» devuelve un estado de salida a 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5159,15 +5178,15 @@ msgid "" msgstr "" "Define una función de shell.\n" " \n" -" Crea una función de shell llamada NOMBRE. Cuando se invoca como una\n" -" orden simple, NOMBRE ejecuta ÓRDENES en el contexto del shell que lo\n" -" llamó. Cuando se invoca NOMBRE, los argumentos se pasan a la función\n" -" como $1...$n, y el nombre de la función está en $FUNCNAME.\n" +" Crea una función de shell llamada NOMBRE. Cuando se invoca como un\n" +" mandato simple, NOMBRE ejecuta MANDATOs en el contexto del shell\n" +" que lo llamó. Cuando se invoca NOMBRE, los argumentos se pasan a la\n" +" función como $1...$n, y el nombre de la función está en $FUNCNAME.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que NOMBRE sea de sólo lectura" +" Devuelve correcto a menos que NOMBRE sea de sólo lectura." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5177,15 +5196,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Agrupa órdenes como una unidad.\n" +"Agrupa mandatos como una unidad.\n" " \n" -" Ejecuta un conjunto de órdenes en un grupo. Esta es una forma de\n" -" redirigir un conjunto completo de órdenes.\n" +" Ejecuta un conjunto de mandatos dentro de un grupo. Esta es una\n" +" forma de redirigir un conjunto completo de mandatos.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de la última orden ejecutada." +" Devuelve el estado del último mandato ejecutado." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5198,19 +5217,19 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"Reinicia el trabajo en primer plano.\n" +"Reinicia la tarea en primer plano.\n" " \n" -" Equivalente al argumento IDTRABAJO de la orden `fg'. Reinicia un\n" -" trabajo detenido o en segundo plano. IDTRABAJO puede especificar\n" -" un nombre de trabajo o un número de trabajo. Un `&' a continuación\n" -" de IDTRABAJO coloca al trabajo en segundo plano, como si la\n" -" especificación del trabajo se hubiera proporcionado como\n" +" Equivalente al argumento IDTAREA del mandato `fg'. Reinicia una\n" +" tarea detenida o en segundo plano. IDTAREA puede especificar\n" +" un nombre de tarea o un número de tarea. Un `&' a continuación\n" +" de IDTAREA coloca a la tarea en segundo plano, como si la\n" +" especificación del tarea se hubiera proporcionado como\n" " un argumento de `bg'.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del trabajo reiniciado." +" Devuelve el estado del tarea reiniciado." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5228,7 +5247,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5255,12 +5274,12 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" -"Ejecuta una orden condicional.\n" +"Ejecuta un mandato condicional.\n" " \n" " Devuelve un estado de 0 ó 1 dependiendo de la evaluación de la " "expresión\n" " condicional EXPRESIÓN. Las expresiones se componen de los mismos\n" -" elementos primarios usados por la orden interna `test', y se pueden\n" +" elementos primarios usados por el mandato interno `test', y se pueden\n" " combinar usando los siguientes operadores:\n" " \n" " ( EXPRESIÓN )\tDevuelve el valor de la EXPRESIÓN\n" @@ -5281,7 +5300,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5340,64 +5359,63 @@ msgstr "" " CDPATH\tUna lista de directorios separada por dos puntos\n" " \t\tpara buscar directorios dados como argumentos para `cd'.\n" " GLOBIGNORE\tUna lista de patrones separada por dos puntos\n" -" \t\tque describe nombres de fichero a ignorar por la expansión\n" -" \t\tde rutas de nombre.\n" +" \t\t que describe nombres de fichero a ignorar por la expansión\n" +" \t\t de rutas de nombre.\n" " HISTFILE\tEl nombre del fichero donde se almacena su historia\n" -" \t\tde órdenes.\n" -" HISTFILESIZE\tEl número máximo de líneas que puede contener\n" -" \t\teste fichero.\n" -" HISTSIZE\tEl número máximo de líneas de líneas de historia que\n" -" \t\tun shell en ejecución puede acceder.\n" -" HOME\tLa ruta completa a su directorio de entrada.\n" -" HOSTNAME\tEl nombre del anfitrión actual.\n" -" HOSTTYPE\tEl tipo de CPU bajo el cual se ejecuta esta versión de\n" -" \t\tBash.\n" -" IGNOREEOF\tControla la acción del shell al recibir un carácter\n" -" \t\tEOF como la única entrada. Si está definida, entonces su\n" -" \t\tvalor es el número de caracteres EOF que se deben leer de\n" -" \t\tforma consecutiva en una línea vacía antes de que el shell\n" -" \t\ttermine (por defecto 10). Cuando no está definida, EOF\n" -" \t\tsignifica el fin de la entrada.\n" -" MACHTYPE\tUna cadena que describe el sistema actual donde se\n" -" \t\tejecuta Bash.\n" -" MAILCHECK\tLa frecuencia, en segundos, que Bash busca correo nuevo.\n" -" MAILPATH\tUna lista de nombres de ficheros separada por dos puntos\n" -" \t\ten la cual Bash busca correo nuevo.\n" -" OSTYPE\tla versión de Unix en la que se ejecuta esta versión\n" -" \t\tde Bash.\n" -" PATH\tUna lista de directorios separada por dos puntos en la que\n" -" \t\tse buscan órdenes.\n" -" PROMPT_COMMAND\tUna orden a ejecutar antes de mostrar cada prompt\n" -" \t\tprimario.\n" -" PS1\t\tLa cadena primaria de prompt.\n" -" PS2\t\tLa cadena secundaria de prompt.\n" -" PWD\t\tLa ruta completa del directorio actual.\n" -" SHELLOPTS\tUna lista separada por dos puntos de las opciones\n" -" \t\tde shell activadas.\n" -" TERM\tEl nombre del tipo actual de terminal.\n" -" TIMEFORMAT\tEl formato de salida para las estadísticas de tiempo\n" -" \t\tmostradas por la palabra reservada `time'.\n" -" auto_resume\tSi no es nulo significa que una palabra de orden que\n" -" \t\taparece en una línea por sí sola se busca primero en la lista\n" -" \t\tactual de trabajos detenidos. Si se encuentra ahí, ese\n" -" \t\ttrabajo se coloca en primer plano. Un valor `exact' significa\n" -" \t\tque la palabra de orden debe coincidir exactamente con una\n" -" \t\torden en la lista de trabajos detenidos. Un valor `substring'\n" -" \t\tsignifica que la palabra de orden debe coincidir con una\n" -" \t\tsubcadena del trabajo. Cualquier otro valor significa que\n" -" \t\tla orden debe ser un prefijo de un trabajo detenido.\n" -" histchars\tLos caracteres que controlan la expansión de historia\n" -" \t\ty la sustitución rápida. El primer carácter es el\n" -" \t\tcarácter de sustitución de historia, generalmente `!'. El\n" -" \t\tsegundo es el carácter de `sustitución rápida', generalmente\n" -" \t\t`^'. El tercero es el carácter `comentario de historia',\n" -" \t\tgeneralmente `#'.\n" -" HISTIGNORE\tUna lista separada por dos puntos de patrones usados\n" -" \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n" -" \t\thistoria.\n" - -#: builtins.c:1803 -#, fuzzy +" \t\t de mandatos.\n" +" HISTFILESIZE\t El número máximo de líneas que puede contener\n" +" \t\t este fichero.\n" +" HISTSIZE\t El número máximo de líneas históricas que un shell\n" +" \t\t en ejecución puede acceder.\n" +" HOME\t La ruta completa a su directorio de entrada.\n" +" HOSTNAME\t El nombre del anfitrión actual.\n" +" HOSTTYPE\t El tipo de CPU bajo el cual se ejecuta esta versión\n" +" \t\t de Bash.\n" +" IGNOREEOF\t Controla la acción del shell al recibir un carácter\n" +" \t\t FDL como la única entrada. Si está definida, entonces su\n" +" \t\t valor es el número de caracteres FDL que se deben leer de\n" +" \t\t forma consecutiva en una línea vacía antes de que el shell\n" +" \t\t termine (por defecto 10). Cuando no está definida, FDL\n" +" \t\t significa el fin de la entrada.\n" +" MACHTYPE\t Una cadena que describe el sistema actual donde se\n" +" \t\t ejecuta Bash.\n" +" MAILCHECK\t La frecuencia, en segundos, que Bash busca correo nuevo.\n" +" MAILPATH\t Una lista de nombres de ficheros separada por dos puntos\n" +" \t\t en la cual Bash busca correo nuevo.\n" +" OSTYPE\t la versión de Unix en la que se ejecuta esta versión\n" +" \t\t de Bash.\n" +" PATH\t Una lista de directorios separada por dos puntos en la que\n" +" \t\t se buscan mandatos.\n" +" PROMPT_COMMAND\t Un mandato a ejecutar antes de mostrar cada prompt\n" +" \t\t primario.\n" +" PS1\t\t La cadena primaria de prompt.\n" +" PS2\t\t La cadena secundaria de prompt.\n" +" PWD\t\t La ruta completa del directorio actual.\n" +" SHELLOPTS\t Una lista separada por dos puntos de las opciones\n" +" \t\t de shell activadas.\n" +" TERM\t El nombre del tipo actual de terminal.\n" +" TIMEFORMAT\t El formato de salida para las estadísticas de tiempo\n" +" \t\t mostradas por la palabra reservada `time'.\n" +" auto_resume\t Si no es nulo significa que una palabra de mandato\n" +" \t\t que aparece en una línea por sí sola se busca primero en la lista\n" +" \t\t actual de tareas detenidos. Si se encuentra ahí, esa tarea\n" +" \t\t se coloca en primer plano. Un valor `exact' significa que la\n" +" \t\t palabra de mandato debe coincidir exactamente con un\n" +" \t\t mandato interno a la lista de tareas detenidas. Un valor\n" +" \t\t `substring' significa que la palabra de mandato debe coincidir\n" +" \t\t con una subcadena de la tarea. Cualquier otro valor significa\n" +" \t\t que el mandato debe ser un prefijo de una tarea detenida.\n" +" histchars\t Los caracteres que controlan la expansión de historia\n" +" \t\t y la sustitución rápida. El primer carácter es el carácter de\n" +" \t\t sustitución de historia, generalmente `!'. El segundo es el\n" +" \t\t carácter de `sustitución rápida', generalmente `^'. El tercero\n" +" \n" +" \t\t es el carácter `comentario de historia', generalmente `#'.\n" +" HISTIGNORE\t Una lista separada por dos puntos de patrones\n" +" \t\t utilizados para decidir cuáles mandatos se deben guardar en\n" +" \t\t el listado histórico.\n" + +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5427,37 +5445,36 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Agrega directorios a la pila.\n" +"Añade directorios a la pila.\n" " \n" -" Agrega un directorio al tope de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo tope de la pila sea el\n" +" Añade un directorio superior de la pila de directorios, o rota\n" +" la pila, haciendo que el nuevo techo de la pila sea el\n" " directorio de trabajo actual. Sin argumentos, intercambia\n" -" los dos directorios del tope.\n" +" los dos directorios superior.\n" " \n" " Opciones:\n" -" -n\tsuprime el cambio normal de directorio cuando se agregan\n" -" \tdirectorios a la pila, así sólo se manipula la pila.\n" +" -n\t suprime el cambio normal de directorio cuando se agregan\n" +" \t\t directorios a la pila, así sólo se manipula la pila.\n" " \n" " Argumentos:\n" -" +N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la izquierda de la lista mostrada por `dirs',comenzando\n" -" \tdesde cero) esté en el tope.\n" +" +N\t Rota la pila para que el N-ésimo directorio (contando\n" +" \t\t de la izquierda de la lista mostrada por `dirs', comenzando\n" +" \t\t desde cero) esté en el superior.\n" " \n" -" -N\tRota la pila para que el N-ésimo directorio (contando\n" -" \tde la derecha de la lista mostrada por `dirs', comenzando\n" -" \tdesde cero) esté en el tope.\n" +" -N\t Rota la pila para que el N-ésimo directorio (contando desde\n" +" \t\t la derecha de la lista mostrada por `dirs', comenzando\n" +" \t\t desde cero) esté en el techo.\n" " \n" -" dir\tagrega DIR a la pila de directorios en el tope,\n" -" \thaciéndolo el nuevo directorio de trabajo actual.\n" +" dir\t Añade DIR a la pila de directorios en el techo, creándolo\n" +" \t\t el nuevo directorio de trabajo actual.\n" " \n" -" La orden interna `dirs' muestra la pila de directorios.\n" +" Los directorios `dirs' construidos enseña la pila del directorios.\n" " \n" -" Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione un argumento inválido o\n" -" falle el cambio de directorio." +" Estados de Salida:\n" +" Devuelve correcto a menos que se proporcione un argumento\n" +" inválido o falle la modificación del directorio." -#: builtins.c:1837 -#, fuzzy +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5483,36 +5500,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Borra directorios de la pila.\n" +"Quita directorios de la pila.\n" " \n" -" Borra entradas de la pila de directorios. Sin argumentos,\n" -" borra el directorio del tope de la pila, y cambia al\n" -" nuevo directorio tope.\n" +" Quita entradas de la pila de directorios. Sin argumentos,\n" +" quita el directorio del techo de la pila, y cambia al nuevo\n" +" directorio techo.\n" " \n" " Opciones:\n" -" -n\tsuprime el cambio normal de directorio cuando se borran\n" -" \tdirectorios de la pila, así sólo se manipula la pila.\n" +" -n\t suprime el cambio normal de directorio cuando se quitan\n" +" \t\t directorios de la pila, así sólo se manipula la pila.\n" " \n" " Argumentos:\n" " \n" -" +N\tBorra la N-ésima entrada contando de la izquierda de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" -" \tel segundo.\n" +" +N\tQuita la N-ésima entrada contando de la izquierda de\n" +" \t\t la lista mostrada por `dirs', comenzando desde cero. Por\n" +" \t\t ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" +" \t\t el segundo.\n" " \n" -" -N\tBorra la N-ésima entrada contando de la derecha de\n" -" \tla lista mostrada por `dirs', comenzando desde cero.\n" -" \tPor ejemplo: `popd -0' borra el último directorio, `popd -1'\n" -" \tel penúltimo.\n" +" -N\t Quita la N-ésima entrada contando de la derecha de\n" +" \t\t la lista mostrada por `dirs', comenzando desde cero. Por\n" +" \t\t ejemplo: `popd -0' borra el último directorio, `popd -1'\n" +" \t\t el penúltimo.\n" " \n" -" La orden interna `dirs' muestra el contenido de la pila.\n" +" El mandato interno `dirs' muestra el contenido de la pila.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione un argumento inválido o\n" -" falle el cambio de directorio." +" Devuelve como correcto a menos que se proporcione un\n" +" argumento inválido o falle el cambio de directorio." -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5543,8 +5559,8 @@ msgstr "" "Muestra la pila de directorios.\n" " \n" " Muestra la lista de directorios actualmente grabados. Los directorios\n" -" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" -" la lista con la orden `popd'.\n" +" se guardan en la lista con el mandato `pushd'; pueden ir saliendo de\n" +" la lista con el mandato `popd'.\n" " \n" " Opciones:\n" " \n" @@ -5555,27 +5571,27 @@ msgstr "" " -v\tmuestra la pila de directorios con una entrada por línea con\n" " \tsu posición en la pila como prefijo\n" " \n" -" Argumentos: +N\tmuestra la N-ésima entrada contando desde la " -"izquierda de la lista\n" -" \tmostrada por dirs cuando se invoca sin opciones,\n" -" \tempezando de cero.\n" +" Argumentos:\n" +" \t+N\tmuestra la N-ésima entrada contando desde\n" +" \tla izquierda de la lista mostrada por dirs cuando se invoca sin\n" +" \topciones, empezando de cero.\n" " \n" -" -N\tmuestra la N-ésima entrada contando desde la derecha de la lista\n" -" \tmostrada por dirs cuando se invoca sin opciones,\n" -" \tempezando de cero.\n" +" -N\tmuestra la N-ésima entrada contando desde la izquierda de la\n" +" \tlista mostrada por dirs cuando se invoca sin opciones, empezando\n" +" \tdesde cero.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito, a menos que se proporcione una opción inválida o\n" +" Devuelve correcto, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5590,7 +5606,7 @@ msgid "" msgstr "" "Activa y desactiva opciones de shell.\n" " \n" -" Cambia la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n" +" Modifica la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n" " alguna opción como argumento, muestra todas las opciones de shell con\n" " una indicación si está activa o no.\n" " \n" @@ -5602,11 +5618,10 @@ msgstr "" " -u\tdesactiva (borra) cada NOMBRE_OPCIÓN\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" +" Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" " una opción inválida o NOMBRE_OPCIÓN está desactivado." -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5648,12 +5663,12 @@ msgstr "" " \n" " Opciones:\n" " -v var\tasigna la salida a la variable de shell VAR en lugar\n" -" \t\tde mostrarla en la salida estándar\n" +" \t\tde enseñarla en la salida común\n" " \n" " FORMATO es una cadena de caracteres la cual contiene tres tipos de\n" " objetos: caracteres simples, los cuales solamente se copian a la salida\n" -" salida estándar; secuencias de escape de caracteres, las cuales\n" -" se convierten y se copian a la salida estándar; y especificaciones de\n" +" salida común; secuencias de escape de caracteres, las cuales\n" +" se convierten y se copian a la salida común; y especificaciones de\n" " formato, cada una de las cuales causa la muestra del siguiente " "argumento\n" " consecutivo.\n" @@ -5668,12 +5683,16 @@ msgstr "" " %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n" " una cadena de formato para strftime(3)\n" " \n" +" El formato es reutilizado como sea necesario para consumir todo lo\n" +" del argumento . Si hay menores argumentos que el formato requiere,\n" +" especificaciones adicionales de formato se comporta como si un valor\n" +" cero o cadena nula, como sea apropiado, se haya suministrado.\n" +" \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error de escritura o de asignación." -#: builtins.c:1953 -#, fuzzy +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5707,25 +5726,25 @@ msgstr "" "entrada.\n" " \n" " Opciones:\n" -" -p\tmuestra las especificaciones de completado existentes en formato\n" -" \treusable\n" -" -r\tborra una especificación de completado para cada NOMBRE,\n" -" \to, si no se proporcionan NOMBREs, todas las especificaciones\n" -" \tde completado\n" -" -D\taplica los completados y acciones por defecto para las órdenes\n" -" \tsin ninguna especificación de completado definida\n" -" -E\taplica los completados y acciones para órdenes \"vacías\" --\n" -" \tcuando se intenta completar en una línea en blanco\n" -" \n" -" Cuando se intenta el completado, las acciones se aplican en el orden en\n" -" que se enlistan las opciones de letra mayúscula antes indicadas. La\n" +" -p\t escribe las especificaciones de completado existentes en formato\n" +" \t\t reusable\n" +" -r\t borra una especificación de completado para cada NOMBRE, o,\n" +" \t\t si no se proporcionan NOMBREs, todas las especificaciones\n" +" \t\t de completado\n" +" -D\t aplica los completados y acciones por defecto para los mandatos\n" +" \t\t sin ninguna especificación de completado definida\n" +" -E\t aplica los completados y acciones para mandatos \"vacíos\" --\n" +" \t\t cuando se intenta completar en una línea en blanco\n" +" \n" +" Cuando se intenta el completado, las acciones se aplican en el orden\n" +" en que se listan las opciones de letra mayúscula antes indicadas. La\n" " opción -D tiene precedencia sobre -E.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5737,17 +5756,17 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"Muestra los posibles complementos dependiendo de las opciones.\n" +"Enseña los posibles complementos dependiendo de las opciones.\n" " \n" " Sirve para usarse desde una función de shell que genere complementos\n" " posibles. Si se proporciona el argumento opcional PALABRA, se generan\n" " las coincidencias contra PALABRA.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5777,35 +5796,35 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" -"Modifica o muestra las opciones de completado.\n" +"Modifica o enseña las opciones de completado.\n" " \n" " Modifica las opciones de completado para cada NOMBRE, o, si no se\n" -" proporcionan NOMBREs, el completado actualmente en ejecución. Si no se\n" -" proporcionan OPCIONes, muestra las opciones de completado para cada\n" -" NOMBRE o la especificación de completado actual.\n" +" proporcionan NOMBREs, el completado actualmente en ejecución. Si no\n" +" SE proporcionan OPCIONes, muestra las opciones de completado para\n" +" cada NOMBRE o la especificación de completado actual.\n" +" \n" " Opciones:\n" -" \t-o opción\tEstablece la opción de completado OPCIÓN\n" -" \t\tpara cada NOMBRE\n" -" \t-D\t\tCambia las opciones para el completado de orden \"por defecto\"\n" -" \t-E\t\tCambia las opciones para el completado de orden \"vacía\"\n" +" \t-o opción\t Establece la opción de completado OPCIÓN para\n" +" \t\t cada NOMBRE\n" +" \t-D\t\t Modifica las opciones para el completado de mandato \"por " +"defecto\"\n" +" \t-E\t\t Modifica las opciones para el completado de mandato \"vacía\"\n" " \n" -" Si usa `+o' en lugar de `-o' desactiva la opción especificada.\n" +" Si UTILIZA `+o' en lugar de `-o' desactiva la opción especificada.\n" " \n" " Argumentos:\n" " \n" -" Cada NOMBRE se refiere a una orden para la cual se definió previamente\n" -" una especificación de completado usando la orden interna `complete'.\n" -" Si no se proporcionan NOMBREs, se debe llamar a compopt desde una " -"función\n" -" que genere completados, y se modifican las opciones para ese generador\n" -" de completados en ejecución.\n" +" Cada NOMBRE se refiere a un mandato para la cual se definió previamente\n" +" una especificación de completado usando el mandato interno `complete'.\n" +" Si no se proporcionan NOMBREs, se debe llamar a ‘compopt’ desde una\n" +" función que genere completados, y se modifican las opciones para ese\n" +" generador de completados en ejecución.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" -" el NOMBRE no tenga una especificación de completado definida." +" Devuelve correcto a menos que se proporcione una opción inválida o el\n" +" NOMBRE no tenga una especificación de completado definida." -#: builtins.c:2026 -#, fuzzy +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5853,33 +5872,33 @@ msgstr "" " la opción -u. La variable MAPFILE es la MATRIZ por defecto.\n" " \n" " Opciones:\n" -" -n cuenta\tCopia hasta CUENTA líneas. Si CUENTA es 0, se copian\n" -" \ttodas las líneas.\n" -" -O origen\tComienza a asignar a MATRIZ en el índice ORIGEN. El\n" -" \tíndice por defecto es 0.\n" -" -s cuenta \tDescarta las primeras CUENTA líneas leídas.\n" -" -t\t\tBorra la nueva línea final de cada línea leída.\n" -" -u df\t\tLee líneas del descriptor de fichero DF en lugar de la\n" -" \tentrada estándar.\n" -" -C llamada\tEvalúa LLAMADA cada vez que se leen QUANTUM líneas.\n" -" -c quantum\tEspecifica el número de líneas a leer entre cada\n" -" \tllamada a LLAMADA.\n" +" -n cuenta\t Copia hasta CUENTA líneas. Si CUENTA es 0, se copian\n" +" \t\t todas las líneas.\n" +" -O origen\t Comienza a asignar a MATRIZ en el índice ORIGEN. El\n" +" \t\tíndice por defecto es 0.\n" +" -s cuenta \t Descarta las primeras CUENTA líneas leídas.\n" +" -t\t\t Borra la nueva línea final de cada línea leída.\n" +" -u df\t\t Lee líneas del descriptor de fichero DF en lugar de la\n" +" \t\t entrada común.\n" +" -C llamada\t Evalúa LLAMADA cada vez que se leen QUANTUM líneas.\n" +" -c quantum\t Especifica el número de líneas a leer entre cada\n" +" \t\t llamada a LLAMADA.\n" " \n" " Argumentos:\n" -" MATRIZ\t\tNombre de variable de matriz a usar para guardar datos.\n" +" MATRIZ\t\t Nombre de variable de matriz a usar para guardar datos.\n" " \n" -" Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n" +" Si se proporciona -C sin -c, el quantum por defecto es 5000. Cuando\n" " se evalúa LLAMADA, se proporciona el índice del siguiente elemento\n" -" de la matriz a asignar como un argumento adicional.\n" +" de la matriz asignada como un argumento adicional.\n" " \n" -" Si no se proporciona un origen explícito, mapfile borrará la MATRIZ\n" +" Si no se proporciona un origen explícito, ‘mapfile’ borrará la MATRIZ\n" " antes de usarla para asignación.\n" " \n" " Estado de Salida:\n" -" Devuelve con éxito a menos que se proporcione una opción inválida o\n" +" Devuelve correcto a menos que se proporcione una opción inválida o\n" " la MATRIZ sea de sólo lectura o no sea una matriz indizada." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5888,2930 +5907,3 @@ msgstr "" "Lee líneas de un fichero en una variable de matriz.\n" " \n" " Un sinónimo de `mapfile'." - -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -# Esto podría ser "veces". Mirar el contexto. sv -# No es veces. times es una orden interna del shell. cfuga -#~ msgid "times" -#~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencia GPLv2+: GPL de GNU versión 2 o posterior \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "" -#~ ". With EXPR, returns\n" -#~ " " -#~ msgstr "" -#~ ". Con EXPR, devuelve\n" -#~ " " - -#~ msgid "" -#~ "; this extra information can be used to\n" -#~ " provide a stack trace.\n" -#~ " \n" -#~ " The value of EXPR indicates how many call frames to go back before " -#~ "the\n" -#~ " current one; the top frame is frame 0." -#~ msgstr "" -#~ "; esta información adicional se puede usar para\n" -#~ " proveer un rastreo de pila.\n" -#~ " \n" -#~ " El valor de EXPR indica cuántos marcos de llamada retroceder antes " -#~ "del\n" -#~ " marco actual; el marco superior es el marco 0." - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: no se pueden reasignar %lu bytes (%lu bytes asignados)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: no se pueden reasignar %lu bytes" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: %s:%d: no se pueden reasignar %lu bytes (%lu bytes asignados)" - -#~ msgid " " -#~ msgstr " " - -#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," -#~ msgstr "Sin EXPR, returns devuelve \"$linea $nombrefichero\". Con EXPR," - -#~ msgid "returns \"$line $subroutine $filename\"; this extra information" -#~ msgstr "devuelve \"$linea $subrutina $nombrefichero\"; esta información" - -#~ msgid "can be used used to provide a stack trace." -#~ msgstr "adicional se puede usar para proveer un volcado de pila." - -#~ msgid "" -#~ "The value of EXPR indicates how many call frames to go back before the" -#~ msgstr "" -#~ "El valor de EXPR indica cuántos marcos de llamada se debe retroceder" - -#~ msgid "current one; the top frame is frame 0." -#~ msgstr "antes del actual; el marco inicial es el marco 0." - -#~ msgid "%s: invalid number" -#~ msgstr "%s: número inválido" - -#~ msgid "Shell commands matching keywords `" -#~ msgstr "Órdenes del shell que coinciden con las palabras `" - -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "" -#~ "Muestra la lista de directorios actualmente grabados. Los directorios" - -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "se guardan en la lista con la orden `pushd'; pueden ir saliendo de" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "la lista con la orden `popd'." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "" -#~ "La opción -l especifica que `dirs' no debe mostrar versiones abreviadas" - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "de los directorios que son relativos a su directorio inicial. Esto " -#~ "significa" - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "que `~/bin' se mostrará como `/homes/bfox/bin'. La opción -v" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "" -#~ "causa que `dirs' imprima la pila de directorios con una entrada por línea," - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "" -#~ "anteponiendo la posición en la pila al nombre del directorio. La opción" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "-p hace lo mismo, pero no antepone la posición en la pila." - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "" -#~ "La opción -c limpia la pila de directorios borrando todos sus elementos." - -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "" -#~ "+N muestra la N-ésima entrada contando desde la izquierda de la lista" - -#~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr "" -#~ " mostrada por dirs cuando se invoca sin opciones, empezando de cero." - -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "" -#~ "-N muestra la N-ésima entrada contando desde la derecha de la lista" - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "Agrega un directorio al tope de la pila de directorios, o rota" - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "la pila, haciendo que el nuevo tope de la pila sea el directorio de" - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "" -#~ "trabajo actual. Sin argumentos, intercambia los dos directorios del tope." - -#~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "+N Rota la pila para que el N-ésimo directorio (contando" - -#~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr "" -#~ " de la izquierda de la lista mostrada por `dirs', comenzando desde" - -#~ msgid " zero) is at the top." -#~ msgstr " cero) esté en el tope." - -#~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "-N Rota la pila para que el N-ésimo directory (contando" - -#~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr "" -#~ " de la derecha de la lista mostrada por `dirs', comenzando desde" - -#~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "" -#~ "-n suprime el cambio normal de directorio cuando se agregan directorios" - -#~ msgid " to the stack, so only the stack is manipulated." -#~ msgstr " a la pila, así sólo se manipula la pila." - -#~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "dir agrega DIR a la pila de directorios en el tope, haciéndolo el" - -#~ msgid " new current working directory." -#~ msgstr " nuevo directorio de trabajo actual." - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Puede ver la pila de directorios con la orden `dirs'." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Borra entradas de la pila de directorios. Sin argumentos," - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "borra el directorio del tope de la pila, y cambia al nuevo" - -#~ msgid "+N removes the Nth entry counting from the left of the list" -#~ msgstr "" -#~ "+N borra la N-ésima entrada contando desde la izquierda de la lista" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr "" -#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd +0'" - -#~ msgid " removes the first directory, `popd +1' the second." -#~ msgstr " borra el primer directorio, `popd +1' el segundo." - -#~ msgid "-N removes the Nth entry counting from the right of the list" -#~ msgstr "-N borra la N-ésima entrada contando desde la derecha de la lista" - -#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr "" -#~ " mostrada por `dirs', comenzando desde cero. Por ejemplo: `popd -0'" - -#~ msgid " removes the last directory, `popd -1' the next to last." -#~ msgstr " borra el último directorio, `popd -1' el penúltimo." - -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n suprime el cambio normal de directorio cuando se borran directorios" - -#~ msgid " from the stack, so only the stack is manipulated." -#~ msgstr " de la pila, así sólo se manipula la pila." - -#~ msgid "allocated" -#~ msgstr "asignado" - -#~ msgid "freed" -#~ msgstr "liberado" - -#~ msgid "requesting resize" -#~ msgstr "solicitando cambio de tamaño" - -#~ msgid "just resized" -#~ msgstr "terminó cambio de tamaño" - -#~ msgid "bug: unknown operation" -#~ msgstr "bicho: operación desconocida" - -#~ msgid "malloc: watch alert: %p %s " -#~ msgstr "malloc: alerta de observación: %p %s " - -#~ msgid "" -#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" -#~ " break N levels." -#~ msgstr "" -#~ "Sale de un ciclo FOR, WHILE o UNTIL. Si se especifica N,\n" -#~ " sale N niveles." - -#~ msgid "" -#~ "Run a shell builtin. This is useful when you wish to rename a\n" -#~ " shell builtin to be a function, but need the functionality of the\n" -#~ " builtin within the function itself." -#~ msgstr "" -#~ "Ejecuta una orden interna del shell. Esto es útil cuando desea " -#~ "renombrar\n" -#~ " una orden interna del shell para que sea una función, pero necesita\n" -#~ " la funcionalidad de la orden interna dentro de la misma función." - -#~ msgid "" -#~ "Print the current working directory. With the -P option, pwd prints\n" -#~ " the physical directory, without any symbolic links; the -L option\n" -#~ " makes pwd follow symbolic links." -#~ msgstr "" -#~ "Muestra el directorio de trabajo actual. Con la opción -P, pwd muestra\n" -#~ " el directorio físico, sin enlaces simbólicos; la opción -L hace que\n" -#~ " pwd siga los enlaces simbólicos." - -#~ msgid "Return a successful result." -#~ msgstr "Devuelve un resultado exitoso." - -# es usado -> se usa. sv -# es impresa -> se muestra una cadena em+ -# "Si se da la opción -V o -v,..." sv -# De acuerdo. cfuga -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n" -#~ " function called `ls', and you wish to call the command `ls', you can\n" -#~ " say \"command ls\". If the -p option is given, a default value is " -#~ "used\n" -#~ " for PATH that is guaranteed to find all of the standard utilities. " -#~ "If\n" -#~ " the -V or -v option is given, a string is printed describing " -#~ "COMMAND.\n" -#~ " The -V option produces a more verbose description." -#~ msgstr "" -#~ "Ejecuta COMMAND con ARGS ignorando las funciones del shell. Si tiene " -#~ "una\n" -#~ " función de shell llamada `ls', y desea llamar a la orden `ls', puede\n" -#~ " decir \"command ls\". Si se da la opción -p, se usa un valor por\n" -#~ " defecto para PATH que garantiza encontrar todas las herramientas\n" -#~ " estándar. Si se da la opción -V o -v, se muestra una cadena que\n" -#~ " describe COMMAND. La opción -V produce una descripción más detallada." - -# apaga -> desactiva em+ -# Corregido en toda la traducción. cfuga -#~ msgid "" -#~ "Declare variables and/or give them attributes. If no NAMEs are\n" -#~ " given, then display the values of variables instead. The -p option\n" -#~ " will display the attributes and values of each NAME.\n" -#~ " \n" -#~ " The flags are:\n" -#~ " \n" -#~ " -a\tto make NAMEs arrays (if supported)\n" -#~ " -f\tto select from among function names only\n" -#~ " -F\tto display function names (and line number and source file name " -#~ "if\n" -#~ " \tdebugging) without definitions\n" -#~ " -i\tto make NAMEs have the `integer' attribute\n" -#~ " -r\tto make NAMEs readonly\n" -#~ " -t\tto make NAMEs have the `trace' attribute\n" -#~ " -x\tto make NAMEs export\n" -#~ " \n" -#~ " Variables with the integer attribute have arithmetic evaluation (see\n" -#~ " `let') done when the variable is assigned to.\n" -#~ " \n" -#~ " When displaying values of variables, -f displays a function's name\n" -#~ " and definition. The -F option restricts the display to function\n" -#~ " name only.\n" -#~ " \n" -#~ " Using `+' instead of `-' turns off the given attribute instead. " -#~ "When\n" -#~ " used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "Declara variables y/o les asigna atributos. Si no se propociona\n" -#~ " ningún NAME, entonces muestra los valores de las variables.\n" -#~ " La opción -p mostrará los atributos y valores de cada NAME.\n" -#~ " \n" -#~ " Las opciones son:\n" -#~ " \n" -#~ " -a\thace a los NAMEs matrices (si tiene soporte)\n" -#~ " -f\tselecciona solamente nombres de funciones\n" -#~ " -F\tmuestra nombres de funciones (y número de línea y nombre de\n" -#~ " \tfichero fuente si se está depurando) sin definiciones\n" -#~ " -i\tasigna a los NAMEs el atributo `integer'\n" -#~ " -r\thace a los NAMEs de sólo lectura\n" -#~ " -t\tasigna a los NAMEs el atributo `trace'\n" -#~ " -x\thace a los NAMEs exportables\n" -#~ " \n" -#~ " Las variables con el atributo integer se les evalúa aritméticamente\n" -#~ " (vea `let') cuando se asigna la variable.\n" -#~ " \n" -#~ " Cuando se muestran los valores de las variables, -f muestra\n" -#~ " el nombre de una función y su definición. La opción -F restringe\n" -#~ " a mostrar solamente el nombre de la función.\n" -#~ " \n" -#~ " Al usar `+' en lugar de `-' desactiva el atributo dado. Cuando se\n" -#~ " usa en una función, hace a los NAMEs locales, como sucede con la\n" -#~ " orden `local'." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Obsoleto. Ver `declare'." - -# y le da -> y le asigna em+ -# sólo se puede usar. sv -# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ -# De acuerdo. cfuga -#~ msgid "" -#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n" -#~ " can only be used within a function; it makes the variable NAME\n" -#~ " have a visible scope restricted to that function and its children." -#~ msgstr "" -#~ "Crea una variable local llamada NAME, y le asigna un VALUE. LOCAL\n" -#~ " sólo se puede usar dentro de una función; hace que la variable NAME\n" -#~ " solamente sea visible a esa función y sus hijos." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Muestra los ARGs. Si se especifica -n, se elimina el carácter\n" -#~ " de fin de línea." - -# se puede usar. sv -# Se muestra una lista de órdenes internas. sv -# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en -# forma "reflexiva". No comento más y te dejo que los mires despacio. -# Gracias por la observación. cfuga -#~ msgid "" -#~ "Enable and disable builtin shell commands. This allows\n" -#~ " you to use a disk command which has the same name as a shell\n" -#~ " builtin without specifying a full pathname. If -n is used, the\n" -#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n" -#~ " to use the `test' found in $PATH instead of the shell builtin\n" -#~ " version, type `enable -n test'. On systems supporting dynamic\n" -#~ " loading, the -f option may be used to load new builtins from the\n" -#~ " shared object FILENAME. The -d option will delete a builtin\n" -#~ " previously loaded with -f. If no non-option names are given, or\n" -#~ " the -p option is supplied, a list of builtins is printed. The\n" -#~ " -a option means to print every builtin with an indication of whether\n" -#~ " or not it is enabled. The -s option restricts the output to the " -#~ "POSIX.2\n" -#~ " `special' builtins. The -n option displays a list of all disabled " -#~ "builtins." -#~ msgstr "" -#~ "Activa y desactiva las órdenes internas del shell. Esto le permite\n" -#~ " usar una orden del sistema que tenga el mismo nombre que una orden\n" -#~ " interna del shell sin especificar una ruta completa. Si se usa -n, " -#~ "los\n" -#~ " NAMEs se desactivan; de otra forma los NAMEs se activan. Por " -#~ "ejemplo,\n" -#~ " para usar `test' que se encuentra en $PATH en lugar de la versión " -#~ "interna\n" -#~ " del shell, teclee `enable -n test'. En sistemas que soportan\n" -#~ " carga dinámica, se puede usar la opción -f para cargar nuevas " -#~ "órdenes\n" -#~ " internas desde el objeto compartido FILENAME. La opción -d borrará " -#~ "una\n" -#~ " orden interna cargada previamente con -f. Si no se propocionan " -#~ "nombres\n" -#~ " que no sean opciones, o se especifica la opción -p, se muestra una " -#~ "lista\n" -#~ " de órdenes internas. La opción -a es para mostrar cada orden " -#~ "interna\n" -#~ " con una indicación si está o no activada. La opción -s restringe la\n" -#~ " salida a las órdenes internas `especiales' de POSIX.2. La opción -n\n" -#~ " muestra una lista de todas las órdenes internas desactivadas." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Lee ARGs como entrada del shell y ejecuta el(los) comando(s) resultantes." - -#~ msgid "" -#~ "Exec FILE, replacing this shell with the specified program.\n" -#~ " If FILE is not specified, the redirections take effect in this\n" -#~ " shell. If the first argument is `-l', then place a dash in the\n" -#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n" -#~ " is supplied, FILE is executed with a null environment. The `-a'\n" -#~ " option means to make set argv[0] of the executed process to NAME.\n" -#~ " If the file cannot be executed and the shell is not interactive,\n" -#~ " then the shell exits, unless the shell option `execfail' is set." -#~ msgstr "" -#~ "Ejecuta FILE, reemplazando este shell con el programa especificado.\n" -#~ " Si no se especifica FILE, las redirecciones toman efecto en este\n" -#~ " shell. Si el primer argumento es `-l' entonces coloca un guión\n" -#~ " en el argumento cero que pasa a FILE, como lo hace login. Si se\n" -#~ " proporciona la opción `-c', se ejecuta FILE con un ambiente nulo.\n" -#~ " La opción `-a' establece el argv[0] del proceso ejecutado a NOMBRE.\n" -#~ " Si no se puede ejecutar el fichero, y el shell no es intercativo,\n" -#~ " entonces el shell termina, a menos que esté activa la opción\n" -#~ " `execfail'." - -#~ msgid "Logout of a login shell." -#~ msgstr "Se desconecta de un shell de entrada." - -#~ msgid "" -#~ "For each NAME, the full pathname of the command is determined and\n" -#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n" -#~ " full pathname of NAME, and no path search is performed. The -r\n" -#~ " option causes the shell to forget all remembered locations. The -d\n" -#~ " option causes the shell to forget the remembered location of each " -#~ "NAME.\n" -#~ " If the -t option is supplied the full pathname to which each NAME\n" -#~ " corresponds is printed. If multiple NAME arguments are supplied " -#~ "with\n" -#~ " -t, the NAME is printed before the hashed full pathname. The -l " -#~ "option\n" -#~ " causes output to be displayed in a format that may be reused as " -#~ "input.\n" -#~ " If no arguments are given, information about remembered commands is " -#~ "displayed." -#~ msgstr "" -#~ "Por cada NOMBRE, se determina la ruta completa de la orden y se graba.\n" -#~ " Si se especifica la opción -p, se usa PATHNAME como la ruta completa\n" -#~ " de NAME, y no se realiza la búsqueda de ruta. La opción -r hace que\n" -#~ " el shell olvide todas las ubicaciones grabadas. La opción -d hace " -#~ "que\n" -#~ " el shell olvide las ubicaciones grabadas de cada NAME. Si se\n" -#~ " proporciona la opción -t se muestra la ruta completa para cada NAME\n" -#~ " correspondiente. Si se proporcionan múltiples argumentos NAME con\n" -#~ " -t, NAME se muestra antes de la ruta completa. La opción -l hace\n" -#~ " que la salida se muestre en un formato que se puede reusar como\n" -#~ " entrada. Si no se proporcionan argumentos, se muestra la " -#~ "información\n" -#~ " de las órdenes grabadas." - -#~ msgid "" -#~ "Display helpful information about builtin commands. If PATTERN is\n" -#~ " specified, gives detailed help on all commands matching PATTERN,\n" -#~ " otherwise a list of the builtins is printed. The -s option\n" -#~ " restricts the output for each builtin command matching PATTERN to\n" -#~ " a short usage synopsis." -#~ msgstr "" -#~ "Muestra información útil sobre las órdenes internas del shell. Si se\n" -#~ " especifica un PATRÓN, proporciona ayuda detallada sobre todas las\n" -#~ " órdenes que coinciden con el PATRÓN, de otra forma se muestra una\n" -#~ " lista de las órdenes internas. La opción -s restringe la salida\n" -#~ " de cada orden interna que concida con el PATRÓN a una breve\n" -#~ " sinopsis de uso." - -#~ msgid "" -#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" -#~ " If the -h option is given, the job is not removed from the table, but " -#~ "is\n" -#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n" -#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove " -#~ "all\n" -#~ " jobs from the job table; the -r option means to remove only running " -#~ "jobs." -#~ msgstr "" -#~ "Por defecto, elimina cada argumento JOBSPEC de la tabla de trabajos " -#~ "activos.\n" -#~ " Si se especifica la opción -h, el trabajo no se elimina de la tabla,\n" -#~ " pero se marca de forma que no se envía SIGHUP al trabajo si el shell\n" -#~ " recibe un SIGHUP. La opción -a, cuando no se proporciona JOBSPEC, " -#~ "borra\n" -#~ " todos los trabajos de la tabla de trabajos; la opción -r borra sólo\n" -#~ " los trabajos activos." - -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N\n" -#~ " is omitted, the return status is that of the last command." -#~ msgstr "" -#~ "Causa la salida de una función con el valor de devolución especificado " -#~ "por N.\n" -#~ " Si se omite N, el estado de devolución será el de la última orden." - -#~ msgid "" -#~ "For each NAME, remove the corresponding variable or function. Given\n" -#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n" -#~ " unset will only act on functions. With neither flag, unset first\n" -#~ " tries to unset a variable, and if that fails, then tries to unset a\n" -#~ " function. Some variables cannot be unset; also see readonly." -#~ msgstr "" -#~ "Para cada NAME, se borra la variable o función correspondiente. Al usar\n" -#~ " `-v', unset sólo actuará sobre variables. Al usar la opción `-f',\n" -#~ " unset sólo actuará sobre funciones. Sin ninguna opción, unset " -#~ "primero\n" -#~ " intenta borrar una variable, y si esto falla, entonces intenta " -#~ "borrar\n" -#~ " una función. Algunas variables no se pueden borrar; vea también " -#~ "readonly." - -#~ msgid "" -#~ "NAMEs are marked for automatic export to the environment of\n" -#~ " subsequently executed commands. If the -f option is given,\n" -#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n" -#~ " is given, a list of all names that are exported in this shell is\n" -#~ " printed. An argument of `-n' says to remove the export property\n" -#~ " from subsequent NAMEs. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "Se marcan NAMEs para exportación automática al ambiente de las\n" -#~ " órdenes ejecutadas subsecuentemente. Si se establece la opción -f,\n" -#~ " NAMEs se refieren a funciones. Si no se proporciona ningún NAME,\n" -#~ " o si se proporciona `-p', se muestra una lista de todos los nombres\n" -#~ " que se exportan en este shell. Un argumento `-n' indica eliminar\n" -#~ " la propiedad de exportación para los NAMEs subsecuentes. Un " -#~ "argumento\n" -#~ " `--' desactiva el procesamiento posterior de opciones." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" -#~ " not be changed by subsequent assignment. If the -f option is given,\n" -#~ " then functions corresponding to the NAMEs are so marked. If no\n" -#~ " arguments are given, or if `-p' is given, a list of all readonly " -#~ "names\n" -#~ " is printed. The `-a' option means to treat each NAME as\n" -#~ " an array variable. An argument of `--' disables further option\n" -#~ " processing." -#~ msgstr "" -#~ "Los NAMEs dados se marcan como sólo lectura y los valores de esos NAMEs\n" -#~ " no se pueden cambiar por asignaciones posteriores. Si se propociona\n" -#~ " la opción -f, entonces también se marcan las funciones que " -#~ "correspondan\n" -#~ " a los NAMEs. Si no se proporcionan argumentos, o si se especifica\n" -#~ " `-p', se muestra una lista de todos los nombres de sólo lectura.\n" -#~ " La opción `-a' trata cada NAME como una variable de matriz.\n" -#~ " Un argumento `--' desactiva opciones posteriores." - -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" -#~ " not given, it is assumed to be 1." -#~ msgstr "" -#~ "Los parámetros posicionales de $N+1 ... se renombran a $1 ... Si no se\n" -#~ " proporciona N, se asume que es 1." - -#~ msgid "" -#~ "Suspend the execution of this shell until it receives a SIGCONT\n" -#~ " signal. The `-f' if specified says not to complain about this\n" -#~ " being a login shell if it is; just suspend anyway." -#~ msgstr "" -#~ "Suspende la ejecución de este shell hasta que recibe una señal\n" -#~ " SIGCONT. Si se especifica `-f' indica que no se queje si es\n" -#~ " un shell de login; y se suspende de cualquier forma." - -#~ msgid "" -#~ "Print the accumulated user and system times for processes run from\n" -#~ " the shell." -#~ msgstr "" -#~ "Muestra los tiempos de usuario y de sistema acumulados para los procesos\n" -#~ " ejecutados desde el shell." - -#~ msgid "" -#~ "For each NAME, indicate how it would be interpreted if used as a\n" -#~ " command name.\n" -#~ " \n" -#~ " If the -t option is used, `type' outputs a single word which is one " -#~ "of\n" -#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " -#~ "an\n" -#~ " alias, shell reserved word, shell function, shell builtin, disk " -#~ "file,\n" -#~ " or unfound, respectively.\n" -#~ " \n" -#~ " If the -p flag is used, `type' either returns the name of the disk\n" -#~ " file that would be executed, or nothing if `type -t NAME' would not\n" -#~ " return `file'.\n" -#~ " \n" -#~ " If the -a flag is used, `type' displays all of the places that " -#~ "contain\n" -#~ " an executable named `file'. This includes aliases, builtins, and\n" -#~ " functions, if and only if the -p flag is not also used.\n" -#~ " \n" -#~ " The -f flag suppresses shell function lookup.\n" -#~ " \n" -#~ " The -P flag forces a PATH search for each NAME, even if it is an " -#~ "alias,\n" -#~ " builtin, or function, and returns the name of the disk file that " -#~ "would\n" -#~ " be executed." -#~ msgstr "" -#~ "Para cada NAME, se indica cómo se interpretaría se se usara como\n" -#~ " el nombre de una orden.\n" -#~ " \n" -#~ " Si se usa la opción -t, `type' muestra una sola palabra que es una\n" -#~ " de `alias', `keyword', `function', `builtin', `file' ó `', si NAME\n" -#~ " es un alias, palabra reservada del shell, función del shell, orden\n" -#~ " interna del shell, fichero del disco, o no encontrado, " -#~ "respectivamente.\n" -#~ " \n" -#~ " Si se usa la opción -p, `type' devuelve el nombre del fichero del\n" -#~ " sistema que sería ejecutado, o nada, si `type -t NAME' no devuelve\n" -#~ " `file'.\n" -#~ " \n" -#~ " Si se usa la opción -a, `type' muestra todos los lugares que " -#~ "contienen\n" -#~ " un ejecutable llamado `file'. Esto incluye a aliases, órdenes\n" -#~ " internas, y funciones, si y solo si no se usa la opción -p.\n" -#~ " \n" -#~ " La opción -f suprime la búsqueda de funciones de shell.\n" -#~ " \n" -#~ " La opción -P fuerza una búsqueda en PATH por cada NAME, aún si es un\n" -#~ " alias, orden interna, o función, y devuelve el nombre del fichero " -#~ "del\n" -#~ " disco que se puede ejecutar." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" -#~ " `-S' is supplied, the current value of the mask is printed. The `-" -#~ "S'\n" -#~ " option makes the output symbolic; otherwise an octal number is " -#~ "output.\n" -#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n" -#~ " that may be used as input. If MODE begins with a digit, it is\n" -#~ " interpreted as an octal number, otherwise it is a symbolic mode " -#~ "string\n" -#~ " like that accepted by chmod(1)." -#~ msgstr "" -#~ "La máscara de creación de ficheros se establece a MODE. Si se omite " -#~ "MODE,\n" -#~ " o si se proporciona `-S', se muestra el valor actual de la máscara. " -#~ "La\n" -#~ " opción `-S' hace la salida simbólica; de otra forma la salida es un\n" -#~ " número octal. Si se proporciona `-p', y se omite MODE, la salida es\n" -#~ " en una forma que se puede usar como entrada. Si MODE empieza con un\n" -#~ " dígito, se interpreta como un número octal, de otra forma es una " -#~ "cadena\n" -#~ " de modo simbólico como la que acepta chmod(1)." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If\n" -#~ " N is not given, all currently active child processes are waited for,\n" -#~ " and the return code is zero. N is a process ID; if it is not given,\n" -#~ " all child processes of the shell are waited for." -#~ msgstr "" -#~ "Espera al proceso especificado y reporta su estado final. Si no se\n" -#~ " proporciona N, espera a todos los procesos hijo activos actualmente,\n" -#~ " y el código de devolución es cero. N es un ID de proceso; si no se\n" -#~ " proporciona, se espera a todos los procesos hijo del shell." - -#~ msgid "" -#~ "Create a simple command invoked by NAME which runs COMMANDS.\n" -#~ " Arguments on the command line along with NAME are passed to the\n" -#~ " function as $0 .. $n." -#~ msgstr "" -#~ "Crea una orden simple invocada por NAME que ejecuta COMMMANDS.\n" -#~ " Se pasan a la función los argumentos en la línea de órdenes\n" -#~ " junto con NAME como $0 .. $n." - -#~ msgid "" -#~ "Toggle the values of variables controlling optional behavior.\n" -#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n" -#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n" -#~ " status indicates whether each OPTNAME is set or unset. The -o\n" -#~ " option restricts the OPTNAMEs to those defined for use with\n" -#~ " `set -o'. With no options, or with the -p option, a list of all\n" -#~ " settable options is displayed, with an indication of whether or\n" -#~ " not each is set." -#~ msgstr "" -#~ "Cambia los valores de las variables que controlan conductas opcionales.\n" -#~ " La opción -s activa (define) cada OPTNAME; la opción -u desactiva\n" -#~ " cada OPTNAME. La opción -q suprime la salida; el estado de salida\n" -#~ " indica si cada OPTNAME se definió o no. La opción -o restringe\n" -#~ " que OPTNAMEs sean aquéllos definidos para usarse con `set -o'.\n" -#~ " Sin opciones, o con la opción -p, se muestra una lista de todas\n" -#~ " las opciones definibles, con una indicación si están o no activas." - -#~ msgid "" -#~ "For each NAME, specify how arguments are to be completed.\n" -#~ " If the -p option is supplied, or if no options are supplied, " -#~ "existing\n" -#~ " completion specifications are printed in a way that allows them to " -#~ "be\n" -#~ " reused as input. The -r option removes a completion specification " -#~ "for\n" -#~ " each NAME, or, if no NAMEs are supplied, all completion " -#~ "specifications." -#~ msgstr "" -#~ "Por cada NAME, especifica cómo se deben completar los argumentos.\n" -#~ " Si se proporciona la opción -p, o si no se proporcionan opciones, se\n" -#~ " muestran las especificaciones existentes de completado en una forma\n" -#~ " que permite que se reusen como entrada. La opción -r borra una\n" -#~ " especificación de completado para cada NAME, o, si no se proporciona\n" -#~ " ningún NAMEs, todas las especificaciones de completado." - -#~ msgid "Missing `}'" -#~ msgstr "Faltan `}'" - -#~ msgid "brace_expand> " -#~ msgstr "expansión_llave> " - -# ¿ a qué se refiere ? em+ -# También podría ser la orden de tipo desconocido. sv -# Tiene razón Santiago. Las órdenes se guardan en matrices de caracteres -# en bash. Si bash intenta borrar uno de estos comandos y el tipo del dato -# NO es matriz de caracter, emitiría este mensaje. cfuga -#~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "Intentando liberar la orden de tipo desconocido `%d'.\n" - -#~ msgid "Report this to %s\n" -#~ msgstr "Comunique esto a %s\n" - -#~ msgid "Stopping myself..." -#~ msgstr "Deteniéndome..." - -#~ msgid "Tell %s to fix this someday.\n" -#~ msgstr "Decir a %s que arregle esto algún día.\n" - -#~ msgid "execute_command: bad command type `%d'" -#~ msgstr "execute_command: tipo de orden erróneo `%d'" - -#~ msgid "real\t" -#~ msgstr "real\t" - -#~ msgid "user\t" -#~ msgstr "usuario\t" - -#~ msgid "sys\t" -#~ msgstr "sistema\t" - -#~ msgid "" -#~ "real\t0m0.00s\n" -#~ "user\t0m0.00s\n" -#~ "sys\t0m0.00s\n" -#~ msgstr "" -#~ "real\t0m0.00s\n" -#~ "usuario\t0m0.00s\n" -#~ "sistema\t0m0.00s\n" - -#~ msgid "cannot duplicate fd %d to fd 1: %s" -#~ msgstr "no se puede duplicar el df %d al df 1: %s" - -#~ msgid "%s: output redirection restricted" -#~ msgstr "%s: la redirección de salida está restringida" - -#~ msgid "Out of memory!" -#~ msgstr "¡Memoria agotada!" - -#~ msgid "You have already added item `%s'\n" -#~ msgstr "Ya se había añadido el elemento `%s'\n" - -# Han sido introducidos o quizá , Vd, introdujo em+ -#~ msgid "You have entered %d (%d) items. The distribution is:\n" -#~ msgstr "Introdujo %d (%d) elementos. La distribución es:\n" - -#~ msgid "%s: bg background job?" -#~ msgstr "%s: ¿bg trabajo en background?" - -#~ msgid "" -#~ "Redirection instruction from yyparse () '%d' is\n" -#~ "out of range in make_redirection ()." -#~ msgstr "" -#~ "La instrucción de redirección de yyparse () '%d' está fuera de rango en \n" -#~ "make_redirection ()." - -#~ msgid "clean_simple_command () got a command with type %d." -#~ msgstr "clean_simple_command () tiene una orden del tipo %d." - -#~ msgid "got errno %d while waiting for %d" -#~ msgstr "se obtuvo errno %d mientras esperaba a %d" - -# algo por el estilo em+ -#~ msgid "syntax error near unexpected token `%c'" -#~ msgstr "error sintáctico cerca del elemento inesperado `%c'" - -# Por consistencia con mensajes anteriores, sería erróneo (el tipo). sv -# De acuerdo. Corregido. cfuga -#~ msgid "print_command: bad command type `%d'" -#~ msgstr "print_command: tipo de dato de orden `%d' erróneo" - -#~ msgid "cprintf: bad `%%' argument (%c)" -#~ msgstr "cprintf: argumento `%%' erróneo (%c)" - -#~ msgid "option `%s' requires an argument" -#~ msgstr "la opción `%s' requiere un argumento" - -#~ msgid "%s: unrecognized option" -#~ msgstr "%s: la opción no es reconocida" - -#~ msgid "`-c' requires an argument" -#~ msgstr "`-c' requiere un argumento" - -#~ msgid "%s: cannot execute directories" -#~ msgstr "%s: no se pueden ejecutar directorios" - -#~ msgid "Bad code in sig.c: sigprocmask" -#~ msgstr "Código erróneo en sig.c: sigprocmask" - -#~ msgid "%s: bad array subscript" -#~ msgstr "%s: subíndice de matriz erróneo" - -#~ msgid "can't make pipes for process substitution: %s" -#~ msgstr "" -#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %" -#~ "s" - -#~ msgid "reading" -#~ msgstr "leyendo" - -#~ msgid "writing" -#~ msgstr "escribiendo" - -# del proceso em+ -#~ msgid "process substitution" -#~ msgstr "sustitución de proceso" - -#~ msgid "command substitution" -#~ msgstr "sustitución de la orden" - -#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "No se puede reabrir la tubería para la sustitución de la orden (df %d): %s" - -#~ msgid "$%c: unbound variable" -#~ msgstr "$%c: variable desligada" - -#~ msgid "%s: bad arithmetic substitution" -#~ msgstr "%s: sustitución aritmética errónea" - -#~ msgid "-%s: binary operator expected" -#~ msgstr "-%s: se esperaba un operador binario" - -#~ msgid "%s[%s: bad subscript" -#~ msgstr "%s[%s: subíndice erróneo" - -#~ msgid "[%s: bad subscript" -#~ msgstr "[%s: subíndice erróneo" - -# Yo pondría "hay dígitos en dos elementos diferentes de argv". sv -# De acuerdo. cfuga -#~ msgid "digits occur in two different argv-elements.\n" -#~ msgstr "hay dígitos en dos elementos diferentes de argv.\n" - -#~ msgid "option %c\n" -#~ msgstr "opción %c\n" - -#~ msgid "option a\n" -#~ msgstr "opción a\n" - -#~ msgid "option b\n" -#~ msgstr "opción b\n" - -#~ msgid "option c with value `%s'\n" -#~ msgstr "opción c con el valor `%s'\n" - -#~ msgid "?? sh_getopt returned character code 0%o ??\n" -#~ msgstr "?? sh_getopt devolvió el código de carácter 0%o ??\n" - -#~ msgid "non-option ARGV-elements: " -#~ msgstr "elementos de ARGV que no son opciones: " - -#~ msgid "%s: Unknown flag %s.\n" -#~ msgstr "%s: Indicador desconocido %s.\n" - -#~ msgid "Unknown directive `%s'" -#~ msgstr "Directiva desconocida `%s'" - -#~ msgid "%s requires an argument" -#~ msgstr "%s requiere un argumento" - -#~ msgid "%s must be inside of a $BUILTIN block" -#~ msgstr "%s debe estar dentro de un bloque $BUILTIN" - -#~ msgid "%s found before $END" -#~ msgstr "%s encontrado antes de $END" - -#~ msgid "%s already has a function (%s)" -#~ msgstr "%s ya tiene una función (%s)" - -#~ msgid "%s already had a docname (%s)" -#~ msgstr "%s ya tiene un nombre de documento (%s)" - -#~ msgid "%s already has short documentation (%s)" -#~ msgstr "% ya tiene documentación corta (%s)" - -# Si traducimos con la gramática española, probablemente sería: -# ...una definición %s". sv -# De acuerdo. cfuga -#~ msgid "%s already has a %s definition" -#~ msgstr "%s ya tiene una definición %s" - -#~ msgid "mkbuiltins: Out of virtual memory!\n" -#~ msgstr "mkbuiltins: ¡Memoria agotada!\n" - -#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" -#~ msgstr "read [-r] [-p prompt] [-a matriz] [-e] [nombre ...]" - -#~ msgid ". filename" -#~ msgstr ". fichero" - -#~ msgid "%[DIGITS | WORD] [&]" -#~ msgstr "%[DÍGITOS | PALABRAS] [&]" - -#~ msgid "variables - Some variable names and meanings" -#~ msgstr "variables - Algunos nombres de variables y sus significados" - -#~ msgid "`alias' with no arguments or with the -p option prints the list" -#~ msgstr "`alias' sin argumentos o con la opción -p muestra la lista" - -#~ msgid "of aliases in the form alias NAME=VALUE on standard output." -#~ msgstr "de aliases en la forma alias NOMBRE=VALOR por la entrada estándar." - -# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv -# De acuerdo. cfuga -#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "" -#~ "De otra manera, se define un alias por cada NOMBRE cuyo VALOR se da." - -#~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "" -#~ "Un espacio final en VALOR causa que la siguiente palabra sea revisada para" - -# Lo mismo de antes: el alias es expandido -> el alias se expande. sv -# De acuerdo. cfuga -#~ msgid "alias substitution when the alias is expanded. Alias returns" -#~ msgstr "la sustitución del alias cuando el alias se expande. Alias devuelve" - -# no alias -> ningún alias. sv -# De acuerdo. cfuga -#~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "verdadero a menos que para un NOMBRE dado no se haya definido ningún " -#~ "alias." - -#~ msgid "then remove all alias definitions." -#~ msgstr "entonces borra todas las definiciones de alias." - -#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Asigna una secuencia de teclas a una función Readline, o a una macro. La" - -#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "" -#~ "sintaxis es equivalente a la encontrada en ~/.inputrc, pero debe ser" - -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "" -#~ "pasada como un solo argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." - -#~ msgid "Arguments we accept:" -#~ msgstr "Argumentos que se aceptan:" - -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m mapa_teclas Usa `mapa_teclas' como el mapa de teclas durante esta" - -#~ msgid " command. Acceptable keymap names are emacs," -#~ msgstr "" -#~ " orden. Los nombres de mapas de teclas aceptables son" - -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs, emacs-standard, emacs-meta, emacs-ctlx, vi," - -#~ msgid " vi-command, and vi-insert." -#~ msgstr " vi-move, vi-command y vi-insert." - -#~ msgid " -l List names of functions." -#~ msgstr " -l Muestra los nombres de las funciones." - -#~ msgid " -P List function names and bindings." -#~ msgstr "" -#~ " -P Muestra los nombres de funciones y asignaciones." - -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" -#~ msgstr "" -#~ " -p Muestra las funciones y asignaciones en un formato " -#~ "que" - -#~ msgid " reused as input." -#~ msgstr " puede reusarse como entrada." - -#~ msgid " -r keyseq Remove the binding for KEYSEQ." -#~ msgstr " -r sec_teclas Borra la asignación para SEC_TECLAS" - -# lee 'la'... em+ -#~ msgid " -f filename Read key bindings from FILENAME." -#~ msgstr " -f fichero Lee la asignación de teclas de FICHERO." - -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." -#~ msgstr "" -#~ " -q nombre-función Pregunta sobre qué teclas invocan la función " -#~ "nombrada." - -#~ msgid " -V List variable names and values" -#~ msgstr " -V Muestra los nombres de variables y valores" - -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Muestra los nombres de variables y valores de una " -#~ "forma que" - -#~ msgid " be reused as input." -#~ msgstr " puede reusarse como entrada." - -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" -#~ msgstr "" -#~ " -S Muestra las secuencias de teclas que invocan macros " -#~ "y sus\n" -#~ " valores" - -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" -#~ msgstr "" -#~ " -s Muestra las secuencias de teclas que invocan macros " -#~ "y sus" - -#~ msgid " a form that can be reused as input." -#~ msgstr "" -#~ " valores en una forma que puede reusarse como entrada." - -#~ msgid "break N levels." -#~ msgstr "sale N niveles." - -#~ msgid "If N is specified, resume at the N-th enclosing loop." -#~ msgstr "Si se especifica N, retoma en el N-ésimo ciclo." - -#~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "Ejecuta un shell interno. Esto es útil cuando desea renombrar un" - -#~ msgid "shell builtin to be a function, but need the functionality of the" -#~ msgstr "" -#~ "shell interno para que sea una función, pero necesita la funcionalidad" - -#~ msgid "builtin within the function itself." -#~ msgstr "interna dentro de la misma función." - -#~ msgid "Change the current directory to DIR. The variable $HOME is the" -#~ msgstr "Cambia el directorio actual a DIR. La variable $HOME es el DIR" - -#~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "por omisión. La variable $CDPATH define la ruta de búsqueda para" - -#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "el directorio que contiene DIR. Los nombres alternativos de directorio en" - -#~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "CDPATH son separados por dos puntos (:). Un nombre de directorio nulo es" - -# Slash lo venimos traduciendo por barra inclinada , y backslash -# por barra invertida em++ -#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "" -#~ "igual al directorio actual, p.e. `.'. Si DIR comienza con una barra " -#~ "inclinada" - -#~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "" -#~ "(/), entonces $CDPATH no se usa. Si el directorio no se encuentra, y" - -#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "la opción de shell `cdable_vars' está activa, entonces intenta la palabra" - -#~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "como nombre de variable. Si esa variable tiene un valor, entonces se " -#~ "cambia al" - -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "" -#~ "valor de esa variable. La opción -P indica el uso de la estructura física" - -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "del directorio en lugar de seguir enlaces simbólicos; la opción -L" - -# forza -> fuerza? cfuga -#~ msgid "to be followed." -#~ msgstr "fuerza que los vínculos simbólicos sean seguidos." - -#~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "" -#~ "Imprime el directorio actual de trabajo. Con la opción -P, pwd imprime" - -#~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "el directorio físico, sin ningún enlace simbólico; la opción -L" - -#~ msgid "makes pwd follow symbolic links." -#~ msgstr "hace que pwd siga los enlaces simbólicos." - -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "Ejecuta ORDEN con ARGUMENTOS ignorando las funciones del shell. Si" - -#~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "tiene una función de shell llamada `ls', y desea llamar a la orden `ls'," - -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "se puede decir \"command ls\". Si se especifica la opción -p, se usa un " -#~ "valor" - -# es usado -> se usa. sv -# De acuerdo. La corrección incluye también la línea anterior. cfuga -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "" -#~ "por omisión para PATH que garantiza encontrar todas las herramientas " -#~ "estándar." - -# es impresa -> se muestra una cadena em+ -# "Si se da la opcón -V o -v,..." sv -# De acuerdo. cfuga -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." -#~ msgstr "" -#~ "Si se da la opción -V o -v, se muestra una cadena describiendo la ORDEN." - -#~ msgid "The -V option produces a more verbose description." -#~ msgstr "La opción -V produce una descripción más completa." - -#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "" -#~ "Declara variables y/o les da atributos. Si no se proporcionan NOMBREs," - -#~ msgid "given, then display the values of variables instead. The -p option" -#~ msgstr "entonces muestra los valores de las variables. La opción -p" - -#~ msgid "will display the attributes and values of each NAME." -#~ msgstr "mostrará los atributos y valores de cada NOMBRE." - -#~ msgid "The flags are:" -#~ msgstr "Los indicadores son:" - -#~ msgid " -a\tto make NAMEs arrays (if supported)" -#~ msgstr " -a\thacer los NOMBREs matrices (si está soportado)" - -#~ msgid " -f\tto select from among function names only" -#~ msgstr " -f\tseleccionar sólo entre los nombres de funciones" - -#~ msgid " -F\tto display function names without definitions" -#~ msgstr " -F\tmostrar los nombres de funciones sin definiciones" - -#~ msgid " -r\tto make NAMEs readonly" -#~ msgstr " -r\thacer los NOMBREs de sólo lectura" - -#~ msgid " -x\tto make NAMEs export" -#~ msgstr " -x\thacer los NOMBREs exportables" - -#~ msgid " -i\tto make NAMEs have the `integer' attribute set" -#~ msgstr " -i\thacer que los NOMBREs tengan el atributo `entero' activado" - -#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" -#~ msgstr "Las variables con el atributo entero tienen evaluación aritmética" - -#~ msgid "`let') done when the variable is assigned to." -#~ msgstr "(ver `let') cuando la variable es asignada." - -#~ msgid "When displaying values of variables, -f displays a function's name" -#~ msgstr "Cuando se muestran valores de variables, -f muestra el nombre y" - -#~ msgid "and definition. The -F option restricts the display to function" -#~ msgstr "la definición de la función. La opción -F evita que se muestre" - -#~ msgid "name only." -#~ msgstr "solamente el nombre de la función." - -# apaga -> desactiva em+ -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" -#~ msgstr "" -#~ "Usar `+' en lugar de `-' desactiva el atributo dado. Cuando es usado" - -#~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "en una función, hace los NOMBREs locales, como con la orden `local'." - -# y le da -> y le asigna em+ -#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" -#~ msgstr "Crea una variable local llamada NOMBRE, y le asigna un VALOR. LOCAL" - -# tenga un alcance visible -> sea visible solo para la función y sus los hijos em+ -#~ msgid "have a visible scope restricted to that function and its children." -#~ msgstr "tenga visible sólo para la función y sus hijos." - -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" -#~ msgstr "Muestra los ARGumentos. Si -n es especificado, el carácter final de" - -#~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "" -#~ "fin de línea es eliminado. Si se especifica la opción -e, se activa la" - -#~ msgid "following backslash-escaped characters is turned on:" -#~ msgstr "interpretación de estos caracteres de escape con barras invertidas:" - -#~ msgid "\t\\a\talert (bell)" -#~ msgstr "\t\\a\talerta (campana)" - -#~ msgid "\t\\b\tbackspace" -#~ msgstr "\t\\b\tespacio hacia atrás" - -#~ msgid "\t\\c\tsuppress trailing newline" -#~ msgstr "\t\\c\tsuprime el carácter de fin de línea restante" - -#~ msgid "\t\\E\tescape character" -#~ msgstr "\t\\E\tcarácter de escape" - -#~ msgid "\t\\f\tform feed" -#~ msgstr "\t\\f\talimentación de papel" - -#~ msgid "\t\\n\tnew line" -#~ msgstr "\t\\n\tnueva línea" - -#~ msgid "\t\\r\tcarriage return" -#~ msgstr "\t\\r\tretorno de carro" - -#~ msgid "\t\\t\thorizontal tab" -#~ msgstr "\t\\t\ttabulador horizontal" - -#~ msgid "\t\\v\tvertical tab" -#~ msgstr "\t\\v\ttabulador vertical" - -#~ msgid "\t\\\\\tbackslash" -#~ msgstr "\t\\\\\tbarra invertida" - -#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." -#~ msgstr "\t\\num\tel carácter cuyo código ASCII es NÚM (octal)." - -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "Puede desactivar explícitamente la interpretación de los siguientes" - -#~ msgid "with the -E option." -#~ msgstr "caracteres con la opción -E ." - -#~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "Activa y desactiva las órdenes internas del shell. Esto permite" - -#~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "" -#~ "que use una orden del sistema que tenga el mismo nombre de una orden" - -#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "interna. Si se usa -n , los NOMBREs se desactivan; de otra forma" - -#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "se activan los NOMBREs. Por ejemplo, para usar `test' de la" - -#~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "" -#~ "ruta de acceso en lugar de la versión interna del shell, teclee\n" -#~ "`enable -n test'." - -# se puede usar. sv -#~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "En sistemas que soportan carga dinámica, la opción -f se puede usar" - -#~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "para cargar nuevas órdenes internas del objeto FICHERO compartido." - -#~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "La opción -d borrará una orden interna cargada con -f. Si no" - -#~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "" -#~ "se especifica ninguna opción, o se especifica la opción -p, se muestra " -#~ "una lista" - -# Se muestra una lista de órdenes internas. sv -# Hay muchos más mensajes que están en "pasiva" que quedarían mejor en -# forma "reflexiva". No comento más y te dejo que los mires despacio. -# Gracias por la observación. cfuga -#~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "de órdenes internas. La opción -a implica mostrar cada orden interno" - -#~ msgid "with an indication of whether or not it is enabled. The -s option" -#~ msgstr "con una indicación de si está activa o no. La opción -s impide" - -#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "la salida a las órdenes internas `especiales' Posix.2. La opción -n" - -#~ msgid "option displays a list of all disabled builtins." -#~ msgstr "muestra una lista de todos las órdenes internas desactivadas." - -#~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "" -#~ "Los procedimientos de shell usan getopts para decodificar parámetros\n" -#~ "de posición." - -# "a ser reconocidas" no está en español. -# Yo pondría "las letras de opción que se reconocen". sv -# De acuerdo. cfuga -#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" -#~ msgstr "" -#~ "La CADENA_OPCIONES contiene las letras de opción que se reconocen; si una" - -#~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "" -#~ "letra es seguida de dos puntos, se espera que la opción tenga un " -#~ "argumento," - -#~ msgid "which should be separated from it by white space." -#~ msgstr "que debe estar separado por espacios." - -#~ msgid "Each time it is invoked, getopts will place the next option in the" -#~ msgstr "Cada vez que se llama, getopts colocará la siguiente opción en" - -#~ msgid "shell variable $name, initializing name if it does not exist, and" -#~ msgstr "" -#~ "la variable de shell $nombre, creando nombre si no existe, y el índice" - -#~ msgid "the index of the next argument to be processed into the shell" -#~ msgstr "" -#~ "del siguiente argumento para procesarse dentro de la variable del shell" - -#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "OPTIND. OPTIND inicia con 1 cada vez que el shell o un guión de" - -#~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "shell es llamado. Cuando una opción requiere un argumento," - -#~ msgid "getopts places that argument into the shell variable OPTARG." -#~ msgstr "getopts coloca ese argumento en la variable de shell OPTARG." - -# en una de dos formas -> en una de las dos formas siguientes em+ -#~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "" -#~ "getopts comunica errores en una de las dos formas siguientes. Si el " -#~ "primer carácter" - -#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "" -#~ "de OPTSTRING es dos puntos, getopts usa el aviso de error silencioso." - -#~ msgid "this mode, no error messages are printed. If an illegal option is" -#~ msgstr "" -#~ "En este modo, no se muestran mensajes de error. Si se encuentra una " -#~ "opción" - -#~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "ilegal, getopts coloca el carácter de opción encontrado en OPTARG." - -#~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "" -#~ "Si un argumento necesario no se encuentra, getopts coloca ':' en NOMBRE" - -#~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "y establece a OPTARG con el carácter de opción encontrado. Si" - -#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "" -#~ "getopts no está en modo silencioso, y se encuentra una opción ilegal," - -#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "getopts coloca '?' en NOMBRE y borra OPTARG. Si no se encuentra" - -#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "una opción necesaria, se coloca un '?' en NOMBRE, se borra OPTARG," - -#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" -#~ msgstr "" -#~ "Si la variable de shell OPTERR tiene el valor 0, getopts deshabilita" - -#~ msgid "printing of error messages, even if the first character of" -#~ msgstr "la notificación de mensajes de error, aún si el primer carácter de" - -#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." -#~ msgstr "OPTSTRING no es ':'. OPTERR tiene el valor de 1 por omisión." - -#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "" -#~ "Getopts normalmente compara los parámetros de posición ($0 - $9), pero" - -# dar argumentos -> especificar em+ -#~ msgid "more arguments are given, they are parsed instead." -#~ msgstr "" -#~ "si se especifican más argumentos, se comparan en lugar de los primeros." - -#~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "" -#~ "Ejecuta el FICHERO, reemplazando este shell con el programa especificado." - -#~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "" -#~ "Si no se especifica un FICHERO, las redirecciones toman efecto en este" - -#~ msgid "shell. If the first argument is `-l', then place a dash in the" -#~ msgstr "shell. Si el primer argumento es `-l', entonces coloca un guión en" - -#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" -#~ msgstr "" -#~ "el argumento 0 pasado al FICHERO, como lo hace login. Si se especifica la " -#~ "opción" - -#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" -#~ msgstr "`-c', el FICHERO se ejecuta en un entorno nulo. La opción `-a'" - -#~ msgid "option means to make set argv[0] of the executed process to NAME." -#~ msgstr "hace que cambie el argv[0] del proceso ejecutado a NOMBRE." - -#~ msgid "If the file cannot be executed and the shell is not interactive," -#~ msgstr "Si el fichero no se puede ejecutar y el shell no es interactivo," - -#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "entonces el shell termina, a menos que la variable" - -#~ msgid "is set." -#~ msgstr "\"no_exit_on_failed_exec\" esté activada." - -#~ msgid "is that of the last command executed." -#~ msgstr "es el del último comando ejecutado." - -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "" -#~ "PRIMERO y ÚLTIMO pueden ser números especificando el rango, o PRIMERO" - -#~ msgid "string, which means the most recent command beginning with that" -#~ msgstr "puede ser una cadena, que representa el comando más reciente que" - -#~ msgid "string." -#~ msgstr "comience con dicha cadena." - -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e NOMBRE_E escoge qué editor emplear. Por omisión es FCEDIT, después" - -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" -#~ msgstr " EDITOR, después el editor que corresponde a la edición actual" - -#~ msgid " mode, then vi." -#~ msgstr " del modo de línea de comando, y finalmente vi." - -#~ msgid " -l means list lines instead of editing." -#~ msgstr " -l significa mostrar líneas en lugar de editarlas." - -#~ msgid " -n means no line numbers listed." -#~ msgstr " -n significa que no sean mostrados los números de línea." - -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." -#~ msgstr "" -#~ " -r significa invertir el orden de las líneas (líneas nuevas primero)." - -#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "Con el formato `fc -s [pat=rep ...] [orden]', la orden es" - -#~ msgid "re-executed after the substitution OLD=NEW is performed." -#~ msgstr "" -#~ "re-ejecutado después de que se realiza la sustitución ANTIGUA=NUEVA." - -#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "" -#~ "Un alias útil para usar con esto es r='fc -s', así que al teclear `r cc'" - -#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" -#~ msgstr "" -#~ "ejecuta la última orden que comenzó con `cc' y tecleando `r' re-ejecuta" - -#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "" -#~ "Si el IDTRABAJO no se encuentra, se usa la noción del shell de trabajo" - -#~ msgid "used." -#~ msgstr "actual." - -#~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "" -#~ "Ubica al IDTRABAJO en el background, como si hubiera sido iniciado con" - -#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "`&'. Si el IDTRABAJO no se encuentra, se usa la noción del shell" - -#~ msgid "job is used." -#~ msgstr "de trabajo actual." - -#~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "Para cada NOMBRE, se determina la ruta completa de la orden y se" - -#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "recuerda. Si se especifica la opción -p, se usa la RUTA_DE_ACCESO" - -#~ msgid "full pathname of NAME, and no path search is performed. The -r" -#~ msgstr "" -#~ "como la ruta completa de NOMBRE y no se realiza la búsqueda de ruta." - -#~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "" -#~ " La opción -r hace que el shell olvide todas las ubicaciones recordadas." - -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." -#~ msgstr "" -#~ " Si no se especifican argumentos, se muestra la información sobre las " -#~ "órdenes recordadas." - -#~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "Muestra información de ayuda acerca de las órdenes internas. Si se" - -#~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "" -#~ "especifica la PLANTILLA, da ayuda detallada de todas las órdenes que" - -#~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "" -#~ "coinciden con la PLANTILLA, de otra forma se muestra una lista de las " -#~ "órdenes internas." - -#~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "" -#~ "Muestra la lista de la historia con números de línea. Las líneas " -#~ "mostradas" - -#~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "" -#~ "con un `*' han sido modificadas. Un argumento de N indica que solo se" - -#~ msgid "the last N lines. The -c option causes the history list to be" -#~ msgstr "" -#~ "muestren las últimas N líneas. La opción -c hace que la lista de la " -#~ "historia" - -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "" -#~ "sea borrada eliminando todas las entradas. La opción `-w' escribe la " -#~ "historia" - -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" -#~ msgstr "" -#~ "actual al fichero de historia; `-r' al contrario, lee el fichero y agrega" - -#~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "el contenido a la lista de la historia. `-a' agrega las" - -#~ msgid "to append history lines from this session to the history file." -#~ msgstr "líneas de la historia de esta sesión al fichero de historia." - -#~ msgid "Argument `-n' means to read all history lines not already read" -#~ msgstr "El argumento `-n' lee todas las líneas de historia que no han sido" - -#~ msgid "from the history file and append them to the history list. If" -#~ msgstr "" -#~ "leídas aún del fichero de historia y las agrega a la lista de historia." - -#~ msgid "FILENAME is given, then that is used as the history file else" -#~ msgstr "" -#~ " Si se especifica un FICHERO, entonces se usa como el fichero de historia" - -#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "" -#~ "de otra manera si $HISTFILE tiene un valor, se utiliza, de otra forma se " -#~ "usa ~/.bash_history." - -#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "" -#~ "Si se especifica la opción -s, los ARGumentos que no son opciones se" - -#~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "" -#~ "agregan a la lista de historia como una sola entrada. La opción -p " -#~ "realiza" - -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" -#~ msgstr "" -#~ "una expansión de historia en cada ARGumento y muestra el resultado, sin " -#~ "guardar" - -#~ msgid "anything in the history list." -#~ msgstr "nada en la lista de historia." - -#~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "" -#~ "Muestra los trabajos activos. La opción -l muestra los id's de los " -#~ "procesos además" - -#~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "" -#~ "de la información normal; la opción -p solamente muestra los id's de los " -#~ "procesos." - -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" -#~ msgstr "" -#~ "Si se especifica -n, solamente se muestran los procesos que han cambiado" - -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "de estado desde la última notificación. IDJOB limita la salida a ese " -#~ "trabajo. Las" - -#~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "" -#~ "opciones -r y -s limitan la salida a mostrar sólo trabajos corriendo y " -#~ "detenidos," - -#~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "respectivamente. Sin opciones, se muestra el estado de todos los" - -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "trabajos activos. Si se especifica -x, la ORDEN se ejecuta después de " -#~ "que todas las especificaciones de trabajos" - -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "que aparecen en ARGS han sido reemplazadas por el ID de proceso del" - -#~ msgid "process group leader." -#~ msgstr "líder del grupo de procesos de dicho trabajo." - -#~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "Elimina cada argumento IDJOBS de la tabla de trabajos activos." - -#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "" -#~ "Manda a los procesos nombrados por PID (o TRABAJO) la señal SIGSPEC. Si" - -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "" -#~ "no se especifica SIGSPEC, entonces se asume SIGTERM. El argumento `-l'" - -#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "" -#~ "muestra los nombres de señales; si hay argumentos después de `-l', se" - -#~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "asume que son números de señales cuyos nombres deben mostrarse. Kill es " -#~ "una orden" - -#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "" -#~ "interna de shell por dos razones: permite que los IDs de trabajos sean " -#~ "usados en lugar de " - -#~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "IDs de procesos, y, si ha alcanzado el límite de procesos que" - -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." -#~ msgstr "puede crear, no tiene que iniciar un proceso para eliminar a otro." - -# "a ser evaluada" no está en español. sv -# Cierto. ¿Así está mejor? cfuga -#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" -#~ msgstr "" -#~ "Cada ARGumento es una expresión aritmética para evaluarse. La evaluación" - -# overflow -> desbordamiento o sobrepasamiento. nunca lo he visto -# traducido como sobreflujo. sv -# Corregido. cfuga -#~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "se hace en enteros long sin revisar desbordamientos, aunque la división" - -#~ msgid "by 0 is trapped and flagged as an error. The following list of" -#~ msgstr "por 0 es capturada y marcada como un error. La siguiente lista de" - -# No sé si existe precedencia en español, pero me suena fatal. -# Yo pondría simplemente "prioridad". sv -# Creo que si existe, pero tu sugerencia es mejor. cfuga -#~ msgid "operators is grouped into levels of equal-precedence operators." -#~ msgstr "" -#~ "operadores está agrupada en niveles de operadores de la misma prioridad." - -#~ msgid "The levels are listed in order of decreasing precedence." -#~ msgstr "Se muestran los niveles en orden de prioridad decreciente." - -#~ msgid "\t-, +\t\tunary minus, plus" -#~ msgstr "\t-, +\t\tmenos unario, más" - -#~ msgid "\t!, ~\t\tlogical and bitwise negation" -#~ msgstr "\t!, ~\t\tnegación lógica y basada en bits" - -#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" -#~ msgstr "\t*, /, %\t\tmultiplicación, división, residuo" - -#~ msgid "\t+, -\t\taddition, subtraction" -#~ msgstr "\t+, -\t\tadición, sustracción" - -#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" -#~ msgstr "\t<<, >>\t\tdesplazamientos de bits izquierdo y derecho" - -#~ msgid "\t<=, >=, <, >\tcomparison" -#~ msgstr "\t<=, >=, <, >\tcomparación" - -#~ msgid "\t==, !=\t\tequality, inequality" -#~ msgstr "\t==, !=\t\tequivalencia, inequivalencia" - -#~ msgid "\t&\t\tbitwise AND" -#~ msgstr "\t&\t\tAND de bits" - -#~ msgid "\t^\t\tbitwise XOR" -#~ msgstr "\t^\t\tXOR de bits" - -#~ msgid "\t|\t\tbitwise OR" -#~ msgstr "\t|\t\tOR de bits" - -#~ msgid "\t&&\t\tlogical AND" -#~ msgstr "\t&&\t\tAND lógico" - -#~ msgid "\t||\t\tlogical OR" -#~ msgstr "\t||\t\tOR lógico" - -#~ msgid "\texpr ? expr : expr" -#~ msgstr "\texpr ? expr : expr" - -#~ msgid "\t\t\tconditional expression" -#~ msgstr "\t\t\texpresión condicional" - -#~ msgid "\t=, *=, /=, %=," -#~ msgstr "\t=, *=, /=, %=," - -#~ msgid "\t+=, -=, <<=, >>=," -#~ msgstr "\t+=, -=, <<=, >>=," - -#~ msgid "\t&=, ^=, |=\tassignment" -#~ msgstr "asignaciones\t&=, ^=, |=" - -#~ msgid "is replaced by its value (coerced to a long integer) within" -#~ msgstr "de la variable por su valor (asignado a un entero long) dentro de" - -#~ msgid "an expression. The variable need not have its integer attribute" -#~ msgstr "una expresión. La variable no necesita tener activado su atributo" - -#~ msgid "turned on to be used in an expression." -#~ msgstr "entero para que se use en una expresión." - -#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "" -#~ "Los operadores se evalúan en orden de prioridad. Se evalúan en primer" - -#~ msgid "parentheses are evaluated first and may override the precedence" -#~ msgstr "lugar las sub-expresiones en paréntesis y pueden sobrepasar las" - -#~ msgid "rules above." -#~ msgstr "reglas de prioridad anteriores." - -#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" -#~ msgstr "Si el último ARGumento evalua a 0, let regresa 1; de otra manera" - -#~ msgid "otherwise." -#~ msgstr "se regresa 0." - -#~ msgid "One line is read from the standard input, and the first word is" -#~ msgstr "Una línea se lee de la entrada estándar, y la primera palabra se" - -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "" -#~ "asigna al primer NOMBRE, la segunda palabra al segundo NOMBRE, y así" - -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "" -#~ "con las palabras restantes asignadas al último NOMBRE. Solo los " -#~ "caracteres" - -#~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "" -#~ "que se encuentran en $IFS se reconocen como delimitadores de palabras. El" - -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "" -#~ "código de retorno es cero, a menos que se encuentre un fin-de-fichero. " -#~ "Si no" - -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "se establece ningún NOMBRE, la línea leída se guarda en la variable " -#~ "REPLY. Si" - -#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "se proporciona la opción -r, esto significa entrada `textual', y se " -#~ "desactiva" - -#~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "el escape de la barra invertida. Si se proporciona la opción `-p'," - -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "" -#~ "se muestra la cadena proporcionada como argumento sin un fín de línea " -#~ "terminal antes de intentar leerla." - -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "" -#~ "Si se da -a, se asignan las palabras leídas a índices secuenciales de " -#~ "MATRIZ" - -#~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "iniciando en cero. Si se da -e y el shell es interactivo," - -#~ msgid "readline is used to obtain the line." -#~ msgstr "se usa readline para obtener la línea." - -#~ msgid "is omitted, the return status is that of the last command." -#~ msgstr "se omite N, se utiliza el código de estado de la última orden." - -#~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Marca las variables que se modifican o crean para exportación." - -#~ msgid " -b Notify of job termination immediately." -#~ msgstr " -b Notifica el término de trabajos inmediatamente." - -#~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr "" -#~ " -e Termina inmediatamente si una orden termina con un estado " -#~ "diferente a cero." - -#~ msgid " -f Disable file name generation (globbing)." -#~ msgstr "" -#~ " -f Desactiva la generación de nombres de ficheros (englobamiento)." - -#~ msgid " -h Remember the location of commands as they are looked up." -#~ msgstr "" -#~ " -h Recuerda la ubicación de las órdenes como fueron localizadas." - -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" -#~ msgstr "" -#~ " -i Fuerza que el shell sea \"interactive\". Los shells interactivos" - -#~ msgid " always read `~/.bashrc' on startup." -#~ msgstr " siempre leen `~/.bashrc' al inicio." - -#~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr "" -#~ " -k Todos los argumentos de asignación se ubican en el ambiente para " -#~ "una" - -#~ msgid " command, not just those that precede the command name." -#~ msgstr "" -#~ " orden, no solamente aquéllos que preceden al nombre de la orden." - -#~ msgid " -m Job control is enabled." -#~ msgstr " -m Se activa el control de trabajos." - -#~ msgid " -n Read commands but do not execute them." -#~ msgstr " -n Lee órdenes pero no las ejecuta." - -#~ msgid " -o option-name" -#~ msgstr " -o nombre-opción" - -#~ msgid " Set the variable corresponding to option-name:" -#~ msgstr " Establece la variable correspondiente a nombre-opción:" - -#~ msgid " allexport same as -a" -#~ msgstr " allexport igual que -a" - -#~ msgid " braceexpand same as -B" -#~ msgstr " braceexpand igual que -B" - -#~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs usa una interfaz de edición de línea estilo emacs" - -#~ msgid " errexit same as -e" -#~ msgstr " errexit igual que -e" - -#~ msgid " hashall same as -h" -#~ msgstr " hashall igual que -h" - -#~ msgid " histexpand same as -H" -#~ msgstr " histexpand igual que -H" - -#~ msgid " ignoreeof the shell will not exit upon reading EOF" -#~ msgstr " ignoreeof el shell no terminará después de leer EOF" - -#~ msgid " interactive-comments" -#~ msgstr " interactive-comments" - -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " permite que los comentarios se muestren en " -#~ "órdenes interactivas" - -#~ msgid " keyword same as -k" -#~ msgstr " keyword igual que -k" - -#~ msgid " monitor same as -m" -#~ msgstr " monitor igual que -m" - -#~ msgid " noclobber same as -C" -#~ msgstr " noclobber igual que -C" - -#~ msgid " noexec same as -n" -#~ msgstr " noexec igual que -n" - -#~ msgid " noglob same as -f" -#~ msgstr " noglob igual que -f" - -#~ msgid " notify save as -b" -#~ msgstr " notify igual que -b" - -#~ msgid " nounset same as -u" -#~ msgstr " nounset igual que -u" - -#~ msgid " onecmd same as -t" -#~ msgstr " onecmd same as -t" - -#~ msgid " physical same as -P" -#~ msgstr " physical same as -P" - -#~ msgid "" -#~ " posix change the behavior of bash where the default" -#~ msgstr "" -#~ " posix cambia la conducta de bash donde por omisión" - -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" -#~ msgstr "" -#~ " la operación difiere del estándar 1003.2 para" - -#~ msgid " match the standard" -#~ msgstr " cumplir el estándar" - -#~ msgid " privileged same as -p" -#~ msgstr " privileged igual que -p" - -#~ msgid " verbose same as -v" -#~ msgstr " verbose igual que -v" - -#~ msgid " vi use a vi-style line editing interface" -#~ msgstr "" -#~ " vi usa una interfaz de edición de línea estilo vi" - -#~ msgid " xtrace same as -x" -#~ msgstr " xtrace igual que -x" - -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p Se activa cada vez que los ids real y efectivo no coinciden." - -# FIXME: $ENV es variable, no fichero. cfuga -#~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr "" -#~ " Desactiva el procesamiento del fichero $ENV y la importación de " -#~ "funciones" - -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr " de shell. Desactivar esta opción causa que el uid y el gid" - -#~ msgid " gid to be set to the real uid and gid." -#~ msgstr " efectivos sean iguales al uid y al gid reales." - -#~ msgid " -t Exit after reading and executing one command." -#~ msgstr " -t Terminar después de leer y ejecutar una orden." - -#~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr "" -#~ " -u Tratar las variables no establecidas como un error cuando se hace " -#~ "sustitución." - -#~ msgid " -v Print shell input lines as they are read." -#~ msgstr " -v Muestra las líneas de entrada del shell mientras se leen." - -#~ msgid " -x Print commands and their arguments as they are executed." -#~ msgstr " -x Muestra las órdenes y sus argumentos mientras se ejecutan." - -#~ msgid " -B the shell will perform brace expansion" -#~ msgstr " -B el shell hará expansión de llaves" - -#~ msgid " -H Enable ! style history substitution. This flag is on" -#~ msgstr "" -#~ " -H Activa el estilo ! de sustitución de la historia. Este indicador" - -#~ msgid " by default." -#~ msgstr " está activado por omisión." - -#~ msgid " -C If set, disallow existing regular files to be overwritten" -#~ msgstr "" -#~ " -C Si está establecido, evita que los ficheros regulares existentes " -#~ "sean sobreescritos" - -#~ msgid " by redirection of output." -#~ msgstr " por una redirección de salida." - -#~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr "" -#~ " -P Si está establecido, no se siguen los enlaces simbólicos cuando " -#~ "se ejecutan órdenes" - -#~ msgid " such as cd which change the current directory." -#~ msgstr " como cuando cd cambia al directorio actual." - -#~ msgid "Using + rather than - causes these flags to be turned off. The" -#~ msgstr "" -#~ "Usar + en lugar de - causa que estos indicadores sean desactivados. Los" - -#~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "" -#~ "indicadores también se pueden usar durante la invocación del shell. El " -#~ "conjunto" - -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "" -#~ "actual de indicadores se encuentra en $-. Los ARGumentos n restantes son " -#~ "parámetros" - -#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" -#~ msgstr "posicionales y se asignan, en orden, a $1, $2, .. $n. Si no" - -#~ msgid "ARGs are given, all shell variables are printed." -#~ msgstr "" -#~ "se establecen ARGumentos, se muestran todas las variables del shell." - -#~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "" -#~ "Para cada NOMBRE, se borra la variable o función correspondiente. Al usar" - -#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "`-v', unset sólo actuará en variables. Al usar el indicador `-f'," - -#~ msgid "unset will only act on functions. With neither flag, unset first" -#~ msgstr "" -#~ "unset sólo actuará en funciones. Sin ningún indicador, unset primero" - -#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" -#~ msgstr "" -#~ "intenta borrar una variable, y si eso falla, entonces intenta borrar una" - -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "" -#~ "función. Algunas variables (como PATH e IFS) no se pueden borrar; vea" - -#~ msgid "see readonly." -#~ msgstr "también readonly." - -#~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "los NOMBREs se marcan para exportación automática al ambiente de" - -#~ msgid "subsequently executed commands. If the -f option is given," -#~ msgstr "" -#~ "las órdenes ejecutadas subsecuentemente. Si se establece el indicador -f," - -#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "" -#~ "los NOMBREs se refieren a funciones. Si no se establecen NOMBREs, o si `-" -#~ "p'" - -#~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "" -#~ "se establece, se muestra una lista de todos los nombres que se exportan" - -#~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "" -#~ "en este shell. Un argumento `-n' indica que se borre la propiedad de " -#~ "exportación" - -#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" -#~ msgstr "" -#~ "de NOMBREs subsecuentes. Un argumento `--' desactiva el procesamiento" - -#~ msgid "processing." -#~ msgstr "posterior de opciones." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "" -#~ "Los NOMBREs dados se marcan como sólo-lectura y los valores de esos " -#~ "NOMBREs" - -#~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "" -#~ "no se pueden cambiar por asignaciones posteriores. Si se establece el " -#~ "indicador -f," - -#~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "" -#~ "entonces también se marcan las funciones correspondientes a los NOMBREs. " -#~ "Si no" - -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "" -#~ "se establecen argumentos, o si se establece `-p', se muestra una lista de " -#~ "todos los nombres" - -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "" -#~ "de sólo-lectura. Un argumento `-n' indica que se borre la propiedad de " -#~ "sólo-lectura" - -#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" -#~ msgstr "de los NOMBREs subsecuentes. La opción `-a' trata cada NOMBRE como" - -#~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "" -#~ "una variable de matriz. Un argumento de `--' desactiva opciones " -#~ "posteriores" - -#~ msgid "not given, it is assumed to be 1." -#~ msgstr "establece N, se asume que es 1." - -#~ msgid "Read and execute commands from FILENAME and return. The pathnames" -#~ msgstr "Lee y ejecuta órdenes del FICHERO y regresa. Los nombres de ruta" - -#~ msgid "in $PATH are used to find the directory containing FILENAME." -#~ msgstr "" -#~ "en $PATH se utilizan para encontrar al directorio que contiene el FICHERO." - -#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "Suspende la ejecución de este shell hasta que recive una señal" - -#~ msgid "signal. The `-f' if specified says not to complain about this" -#~ msgstr "SIGCONT. Si se especifica `-f' indica que no se queje si" - -#~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "es un shell de login; y solo suspender de cualquier forma." - -#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "Termina con un estado de 0 (verdad) ó 1 (falsedad) dependiendo de" - -#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "" -#~ "la evaluación de EXPR. Las expresiones pueden ser unarias o binarias. " -#~ "Las expresiones" - -#~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "" -#~ "unarias se utilizan con frecuencia para examinar el estado de un fichero." - -#~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "" -#~ "Hay operadores de cadenas también, y operadores de comparación numérica." - -#~ msgid "File operators:" -#~ msgstr "Operadores de fichero:" - -#~ msgid " -b FILE True if file is block special." -#~ msgstr " -b FICHERO Verdadero si el fichero es especial de bloques." - -#~ msgid " -c FILE True if file is character special." -#~ msgstr "" -#~ " -c FICHERO Verdadero si el fichero es especial de caracteres." - -#~ msgid " -d FILE True if file is a directory." -#~ msgstr " -d FICHERO Verdadero si el fichero es un directorio." - -#~ msgid " -e FILE True if file exists." -#~ msgstr " -e FICHERO Verdadero si el fichero existe." - -#~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr "" -#~ " -f FICHERO Verdadero si el fichero existe y es un fichero regular." - -#~ msgid " -g FILE True if file is set-group-id." -#~ msgstr "" -#~ " -g FICHERO Verdadero si el fichero tiene activado el set-group-id." - -#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h FICHERO Verdadero si el fichero es un enlace simbólico. Use " -#~ "\"-L\"." - -#~ msgid " -L FILE True if file is a symbolic link." -#~ msgstr " -L FICHERO Verdadero si el fichero es un enlace simbólico." - -#~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr "" -#~ " -k FICHERO Verdadero si el fichero tiene el bit \"sticky\" " -#~ "activado." - -#~ msgid " -p FILE True if file is a named pipe." -#~ msgstr " -p FICHERO Verdadero si el fichero es una tubería nombrada." - -#~ msgid " -r FILE True if file is readable by you." -#~ msgstr " -r FICHERO Verdadero si usted puede leer el fichero." - -#~ msgid " -s FILE True if file exists and is not empty." -#~ msgstr " -s FICHERO Verdadero si el fichero existe y no está vacío." - -#~ msgid " -S FILE True if file is a socket." -#~ msgstr " -S FICHERO Verdadero si el fichero es un `socket'." - -#~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr " -t DF Verdadero si DF está abierto en una terminal." - -#~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr "" -#~ " -u FICHERO Verdadero si el fichero tiene activado el set-user-id." - -#~ msgid " -w FILE True if the file is writable by you." -#~ msgstr " -w FICHERO Verdadero si usted puede modificar el fichero." - -#~ msgid " -x FILE True if the file is executable by you." -#~ msgstr " -x FICHERO Verdadero si usted puede ejecutar el fichero." - -#~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr "" -#~ " -O FICHERO Verdadero si usted efectivamente posee el fichero." - -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr "" -#~ " -G FICHERO Verdadero si su grupo efectivamente posee el fichero." - -#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr "" -#~ " FICH1 -nt FICH2 Verdadero si fich1 es más nuevo que (de acuerdo a" - -#~ msgid " modification date) file2." -#~ msgstr " la fecha de modificación) el fich2." - -#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." -#~ msgstr " FICH1 -ot FICH2 Verdadero si fich1 es más viejo que fich2." - -#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." -#~ msgstr " FICH1 -ef FICH2 Verdadero si fich1 es un enlace duro a fich2." - -#~ msgid "String operators:" -#~ msgstr "Operadores de cadenas:" - -#~ msgid " -z STRING True if string is empty." -#~ msgstr " -z CADENA Verdadero si la cadena está vacía." - -#~ msgid " -n STRING" -#~ msgstr " -n CADENA" - -#~ msgid " STRING True if string is not empty." -#~ msgstr " CADENA Verdadero si la cadena no está vacía." - -#~ msgid " STRING1 = STRING2" -#~ msgstr " CADENA1 = CADENA2" - -#~ msgid " True if the strings are equal." -#~ msgstr " Verdadero si las cadenas son iguales." - -#~ msgid " STRING1 != STRING2" -#~ msgstr " CADENA1 != CADENA2" - -#~ msgid " True if the strings are not equal." -#~ msgstr " Verdadero si las cadenas no son iguales." - -#~ msgid " STRING1 < STRING2" -#~ msgstr " CADENA1 < CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Verdadero si la CADENA1 se ordena antes que la CADENA2 " -#~ "lexicográficamente" - -#~ msgid " STRING1 > STRING2" -#~ msgstr " CADENA1 > CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Verdadero si la CADENA1 se ordena después que la " -#~ "CADENA2 lexicográficamente" - -#~ msgid "Other operators:" -#~ msgstr "Otros operadores:" - -#~ msgid " ! EXPR True if expr is false." -#~ msgstr " ! EXPR Verdadero si la expr es falsa" - -#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." -#~ msgstr " EXPR1 -a EXPR2 Verdadero si ambas expr1 Y expr2 son verdaderas." - -#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." -#~ msgstr "" -#~ " EXPR1 -o EXPR2 Verdadero si cualquiera de expr1 O expr2 es verdadera." - -#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," -#~ msgstr " arg1 OP arg2 Pruebas aritméticas. OP es uno de -eq, -ne," - -#~ msgid " -lt, -le, -gt, or -ge." -#~ msgstr " -lt, -le, -gt, ó -ge." - -#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "" -#~ "Los operadores binarios aritméticos devuelven verdadero si ARG1 es igual, " -#~ "no igual," - -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" -#~ msgstr "menor, menor o igual, mayor, ó mayor o igual" - -#~ msgid "than ARG2." -#~ msgstr "que ARG2." - -#~ msgid "This is a synonym for the \"test\" builtin, but the last" -#~ msgstr "Es un sinónimo para la orden interna \"test\", pero el último" - -#~ msgid "the shell." -#~ msgstr "ejecutados desde el shell." - -#~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "La orden ARG se lee y ejecuta cuando el shell recibe la(s)" - -#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "" -#~ "señal(es) ID_SEÑAL. Si ARG no está, todas las señales especificadas son" - -#~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "" -#~ "establecidas a sus valores originales. Si ARG es la cadena nula cada" - -#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "ID_SEÑAL es ignorada por el shell y por las órdenes que invoque." - -#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "Si ID_SEÑAL es EXIT (0) la orden ARG se ejecuta al terminar el" - -#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "shell. Si ID_SEÑAL es DEBUG, ARG se ejecuta después de cada" - -#~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "orden. Si ARG es `-p' entonces se muestran las órdenes de captura" - -#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" -#~ msgstr "asociadas con cada ID_SEÑAL. Si no se proporcionan argumentos o si" - -#~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "" -#~ "sólo se proporciona `-p', trap muestra la lista de órdenes asociadas" - -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "" -#~ "con cada número de señal. ID_SEÑAL es un nombre de señal en " - -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "" -#~ "o un número de señal. `trap -l' muestra una lista de nombres de señal y " -#~ "sus" - -#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "" -#~ "números correspondientes. Note que una señal se puede enviar al shell" - -#~ msgid "with \"kill -signal $$\"." -#~ msgstr "con \"kill -signal $$\"." - -#~ msgid "For each NAME, indicate how it would be interpreted if used as a" -#~ msgstr "Para cada NOMBRE, indica cómo sería interpretada si se usara como" - -#~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "Si se usa la opción -t, regresa una sola palabra que es una de" - -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "" -#~ "`alias', `keyword', `function', `builtin', `file' ó `', si el NOMBRE es un" - -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "" -#~ "alias, palabra reservada del shell, función del shell, orden interna del " -#~ "shell, fichero del disco," - -#~ msgid "or unfound, respectively." -#~ msgstr "o no encontrada, respectivamente." - -#~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "" -#~ "Si se usa el indicador -p, regresa el nombre del fichero del sistema" - -#~ msgid "that would be executed, or nothing if -t would not return `file'." -#~ msgstr "que sería ejecutado, o nada si -t no regresa algún `fichero'." - -#~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "" -#~ "Si se usa el indicador -a, muestra todos los lugares que contienen un" - -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "ejecutable llamado `fichero' Esto incluye a aliases y funciones, si y" - -#~ msgid "only if the -p flag is not also used." -#~ msgstr "sólo si el indicador -p no se especifica también." - -#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," -#~ msgstr "Type acepta -all, -path, y -type en lugar de -a, -p, y -t," - -#~ msgid "respectively." -#~ msgstr "respectivamente." - -#~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "" -#~ "ulimit provee control sobre los recursos disponibles para los procesos" - -#~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "" -#~ "iniciados por el shell, en sistemas que permiten dicho control. Si se" - -#~ msgid "option is given, it is interpreted as follows:" -#~ msgstr "establece una opción, se interpreta como sigue:" - -#~ msgid " -S\tuse the `soft' resource limit" -#~ msgstr " -S\tusa el límite de recurso `suave'" - -#~ msgid " -H\tuse the `hard' resource limit" -#~ msgstr " -H\tusa el límite de recurso `duro'" - -#~ msgid " -a\tall current limits are reported" -#~ msgstr " -a\tse muestran todos los límites actuales" - -#~ msgid " -c\tthe maximum size of core files created" -#~ msgstr " -c\tel tamaño máximo de los ficheros `core' creados" - -#~ msgid " -d\tthe maximum size of a process's data segment" -#~ msgstr " -d\tel tamaño máximo del segmento de datos de un proceso" - -#~ msgid " -m\tthe maximum resident set size" -#~ msgstr " -m\tel tamaño máximo para las variables residentes" - -#~ msgid " -s\tthe maximum stack size" -#~ msgstr " -s\tel tamaño máximo de la pila" - -#~ msgid " -t\tthe maximum amount of cpu time in seconds" -#~ msgstr " -t\tla cantidad máxima de tiempo de cpu en segundos" - -#~ msgid " -f\tthe maximum size of files created by the shell" -#~ msgstr " -f\tel número máximo de ficheros creados por el shell" - -#~ msgid " -p\tthe pipe buffer size" -#~ msgstr " -p\tel tamaño del almacenamiento intermedio para tuberías" - -#~ msgid " -n\tthe maximum number of open file descriptors" -#~ msgstr " -n\tel número máximo de descriptores de fichero abiertos" - -#~ msgid " -u\tthe maximum number of user processes" -#~ msgstr " -u\tel número máximo de procesos de usuario" - -#~ msgid " -v\tthe size of virtual memory" -#~ msgstr " -v\tel tamaño de la memoria virtual" - -#~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "" -#~ "Si se establece el LÍMITE, este es el nuevo valor del recurso " -#~ "especificado." - -#~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "" -#~ "De otra forma, se muestra la lista actual de los recursos especificados." - -#~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "" -#~ "Si no se establece una opción, entonces se asume -f. Los valores son en " -#~ "incrementos" - -#~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "de 1k, excepto para -t, que es en segundos, -p, que es en" - -#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" -#~ msgstr "incrementos de 512 bytes, y -u, que es un número no escalado de" - -#~ msgid "processes." -#~ msgstr "procesos." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "La máscara de creación de ficheros del usuario se establece a MODO. Si " -#~ "se omite el MODO, o si" - -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "se proporciona `-S', se muestra el valor actual de la máscara. La opción" - -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." -#~ msgstr "" -#~ "`-S' logra una salida simbólica; de otra forma la salida es un número " -#~ "octal." - -#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "" -#~ "Si el MODO comienza con un dígito, se interpreta como un número octal," - -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "" -#~ "de otra forma es una cadena de modo simbólico como la aceptada por chmod" -#~ "(1)." - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "Espera al proceso especificado y reporta su estado final. Si no se" - -#~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "" -#~ "proporciona N, espera a todos los procesos hijo activos actualmente," - -#~ msgid "and the return code is zero. N may be a process ID or a job" -#~ msgstr "" -#~ "y el código de regreso es cero. N puede ser un ID de proceso o una " -#~ "especificación" - -#~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "" -#~ "de trabajo; si se proporciona una especificación de trabajo, se espera a " -#~ "todos los procesos en la" - -#~ msgid "pipeline are waited for." -#~ msgstr "línea de ejecución del trabajo." - -#~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "" -#~ "y el código de regreso es cero. N es un ID de proceso; si no se " -#~ "proporcioan," - -#~ msgid "all child processes of the shell are waited for." -#~ msgstr "espera a todos los procesos hijos del shell." - -#~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "" -#~ "El ciclo `for' ejecuta una secuencia de órdenes para cada miembro en una" - -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "lista de elementos. Si `in PALABRAS ...;' no se encuentra, entonces se " -#~ "asume" - -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "" -#~ "`in \"$@\"'. Para cada elemento en PALABRAS, se establece NOMBRE a ese " -#~ "elemento y" - -#~ msgid "the COMMANDS are executed." -#~ msgstr "se ejecutan las ÓRDENES." - -#~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "Las PALABRAS se expanden, generando una lista de palabras. El" - -#~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "" -#~ "conjunto de palabras expandidas se muestra en la salida de error estándar" - -#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "" -#~ "cada una precedida por un número. Si `in PALABRAS' no se encuentra, se " -#~ "asume" - -#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "`in \"$@\"'. El prompt PS3 se muestra y se lee una línea de" - -#~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "la entrada estándar. Si la línea consiste del número" - -#~ msgid "corresponding to one of the displayed words, then NAME is set" -#~ msgstr "" -#~ "correspondiente a una de las palabras mostradas, entonces se establece " -#~ "NOMBRE" - -#~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "a esa palabra. Si la línea está vacía, se muestran de nuevo" - -#~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "" -#~ "las PALABRAS y el prompt. Si se lee EOF, la orden se completa. Cualquier " -#~ "otro" - -#~ msgid "value read causes NAME to be set to null. The line read is saved" -#~ msgstr "valor leído causa que NOMBRE sea nulo. La línea leída se salva en" - -#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" -#~ msgstr "" -#~ "la variable REPLY. Las ÓRDENES se ejecutan después de cada selección" - -#~ msgid "until a break or return command is executed." -#~ msgstr "hasta que se ejecute una orden break ó return." - -#~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "`|' se usa para separar plantillas múltiples." - -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "" -#~ "Las ÓRDENES if se ejecutan. Si el código de regreso es cero, entonces " -#~ "las ÓRDENES" - -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "" -#~ "then se ejecutan. De otra forma, cada uno de las ÓRDENES elif se ejecutan" - -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "" -#~ "en turno, y si el código de regreso es cero, las ÓRDENES then " -#~ "correspondientes" - -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "" -#~ "se ejecutan y la orden if se completa. De otra forma, las ÓRDENES else" - -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "" -#~ "se ejecutan, si se encuentran. El código de salida es el código de " -#~ "salida de la última" - -#~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "orden ejecutada, o cero si ninguna condición probada fue verdadera." - -#~ msgid "`while' COMMANDS has an exit status of zero." -#~ msgstr "`while' tenga un código de salida de cero." - -#~ msgid "`until' COMMANDS has an exit status which is not zero." -#~ msgstr "`until' tenga un código de salida que no sea cero." - -#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." -#~ msgstr "" -#~ "Crea un comando simple invocado por el NOMBRE que ejecuta las ÓRDENES." - -#~ msgid "Arguments on the command line along with NAME are passed to the" -#~ msgstr "" -#~ "Los argumentos en la línea de comando junto con el NOMBRE se pasan a la" - -#~ msgid "function as $0 .. $n." -#~ msgstr "función como $0 .. $n." - -#~ msgid "entire set of commands." -#~ msgstr "conjunto completo de órdenes" - -#~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "" -#~ "Esto es similar a la orden `fg'. Reinicia un trabajo detenido o en el" - -#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "background. Si especifica DÍGITOS, entonces se usa ese trabajo. Si " -#~ "proporciona" - -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "" -#~ "una PALABRA, entonces se usa el trabajo cuyo nombre comience con PALABRA." - -#~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "" -#~ "Al colocar una especificación de trabajo seguido de un `&', se coloca al " -#~ "trabajo en el background. " - -#~ msgid "BASH_VERSION The version numbers of this Bash." -#~ msgstr "BASH_VERSION Los números de versión de este Bash." - -#~ msgid "CDPATH A colon separated list of directories to search" -#~ msgstr "CDPATH Una lista separada por `:' de directorios a buscar" - -#~ msgid "\t\twhen the argument to `cd' is not found in the current" -#~ msgstr "\t\tcuando el argumento para `cd' no se encuentra en el directorio" - -#~ msgid "\t\tdirectory." -#~ msgstr "\t\tactual." - -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." -#~ msgstr "" -#~ "HISTFILE El nombre del fichero donde se guarda la historia de " -#~ "órdenes." - -#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "" -#~ "HISTFILESIZE El número máximo de líneas que este fichero puede " -#~ "contener." - -#~ msgid "HISTSIZE The maximum number of history lines that a running" -#~ msgstr "HISTSIZE El número máximo de líneas de historia que un shell" - -#~ msgid "\t\tshell can access." -#~ msgstr "\t\ten ejecución puede acceder." - -#~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "" -#~ "HOME La ruta completa a su directorio de entrada (login)." - -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE El tipo de CPU bajo el cual esta versión de Bash corre." - -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "" -#~ "IGNOREEOF Controla la acción del shell al recibir un carácter EOF" - -#~ msgid "\t\tcharacter as the sole input. If set, then the value" -#~ msgstr "\t\tcomo la única entrada. Si se establece, entonces el valor" - -#~ msgid "\t\tof it is the number of EOF characters that can be seen" -#~ msgstr "" -#~ "\t\tde esta variable es el número de caracteres EOF que se pueden recibir" - -#~ msgid "\t\tin a row on an empty line before the shell will exit" -#~ msgstr "" -#~ "\t\ten forma seguida en una línea vacía antes de que el shell termine" - -#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ "\t\t(10 por omisión). Cuando se desactiva, EOF significa el fin de la " -#~ "entrada." - -#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK\tQue tan seguido, en segundos, Bash revisa si hay correo nuevo." - -#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "" -#~ "MAILPATH\tUna lista de nombres de fichero separados por dos puntos que " -#~ "Bash revisa" - -#~ msgid "\t\tfor new mail." -#~ msgstr "\t\tpor correo nuevo." - -#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." -#~ msgstr "" -#~ "OSTYPE\t\tLa versión de Unix bajo la cual esta versión de Bash se ejecuta." - -#~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "" -#~ "PATH Una lista de directorios separada por dos puntos para " -#~ "buscar" - -#~ msgid "\t\tlooking for commands." -#~ msgstr "\t\tcuando se requieren órdenes." - -#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" -#~ msgstr "PROMPT_COMMAND Una orden a ejecutar antes de mostrar cada" - -#~ msgid "\t\tprimary prompt." -#~ msgstr "\t\tprompt primario." - -#~ msgid "PS1 The primary prompt string." -#~ msgstr "PS1 La cadena primaria de prompt." - -#~ msgid "PS2 The secondary prompt string." -#~ msgstr "PS2 La cadena secundaria de prompt." - -#~ msgid "TERM The name of the current terminal type." -#~ msgstr "TERM El nombre del tipo de terminal actual." - -#~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "" -#~ "auto_resume Si no es nulo significa que una palabra de orden que " -#~ "aparece en una línea" - -#~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "\t\tpor sí mismo se busca primero en la lista de trabajos detenidos" - -#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "" -#~ "\t\tactualmente. Si se encuentra ahí, ese trabajo se trae a primer plano." - -#~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr "\t\tEl valor `exact' significa que la palabra de la orden debe" - -#~ msgid "\t\texactly match a command in the list of stopped jobs. A" -#~ msgstr "" -#~ "\t\tcoincidir exactamente con una orden en la lista de trabajos " -#~ "detenidos. El" - -#~ msgid "\t\tvalue of `substring' means that the command word must" -#~ msgstr "\t\tvalor `substring' significa que la palabra de la orden debe" - -#~ msgid "\t\tmatch a substring of the job. Any other value means that" -#~ msgstr "" -#~ "\t\tcoincidir con una subcadena del trabajo. Cualquier otro valor " -#~ "significa que" - -#~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "\t\tla orden debe ser un prefijo de un trabajo detenido." - -#~ msgid "command_oriented_history" -#~ msgstr "command_oriented_history" - -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Si no es nulo significa que debe guardar órdenes de " -#~ "varias líneas juntas en" - -#~ msgid " a single history line." -#~ msgstr " una sola línea de historia." - -#~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "" -#~ "histchars Caracteres que controlan la expansión de la historia y la" - -#~ msgid "\t\tsubstitution. The first character is the history" -#~ msgstr "\t\tsustitución rápida. El primer carácter es el carácter de" - -#~ msgid "\t\tsubstitution character, usually `!'. The second is" -#~ msgstr "\t\tsustutución de historia, generalmente `!'. El segundo es" - -#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" -#~ msgstr "\t\tel carácter de `sustitución rápida', generalmente `^'. El" - -#~ msgid "\t\tthird is the `history comment' character, usually `#'." -#~ msgstr "" -#~ "\t\ttercero es el carácter de `comentario de historia', generalmente `#'." - -#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "" -#~ "HISTCONTROL\tEstablecido con el valor `ignorespace', significa que no " -#~ "agrega" - -#~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "\t\tlíneas que inicien con un espacio o tabulador a la lista de" - -#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" -#~ msgstr "\t\thistoria. Con el valor `ignoredups', significa que no agrega" - -#~ msgid "\t\tenter lines which match the last entered line. Set to" -#~ msgstr "\t\tlíneas que coincidan con la última línea introducida. Con" - -#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," -#~ msgstr "" -#~ "\t\t`ignoreboth' significa que combina las dos opciones. Sin establecer," - -#~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr "" -#~ "\t\to con cualquier otro valor diferente a los arriba mencionados " -#~ "significa" - -#~ msgid "\t\tall lines on the history list." -#~ msgstr "\t\tguardar todas las líneas en la lista de la historia." - -#~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "" -#~ "Cambia los valores de las variables que controlan conductas opcionales." - -#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" -#~ msgstr "" -#~ "El indicador -s significa establecer cada NOMBRE_OPCIÓN; el indicador -u" - -#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "" -#~ "borra cada NOMBRE_OPCIÓN. El indicador -q suprime la salida; el estado" - -#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" -#~ msgstr "de salida indica cuál NOMBRE_OPCIÓN está activado o no. La opción" - -#~ msgid "option restricts the OPTNAMEs to those defined for use with" -#~ msgstr "" -#~ "-o restringe a los NOMBRE_OPCIONes a aquéllos definidos para su uso con" - -#~ msgid "`set -o'. With no options, or with the -p option, a list of all" -#~ msgstr "" -#~ "`set -o'. Sin opciones, o con la opción -p, se muestra una lista de" - -#~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "todas las opciones activables, con una indicación de si se puede" - -#~ msgid "not each is set." -#~ msgstr "o no activar cada una." diff --git a/po/et.gmo b/po/et.gmo index fe7414264..961b1966d 100644 Binary files a/po/et.gmo and b/po/et.gmo differ diff --git a/po/et.po b/po/et.po index 02eb22a0e..e877abdec 100644 --- a/po/et.po +++ b/po/et.po @@ -6,128 +6,128 @@ msgid "" msgstr "" "Project-Id-Version: bash 3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2006-11-11 16:38+0200\n" "Last-Translator: Toomas Soome \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8-bit\n" -"Language: et\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "vigane massiivi indeks" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: vigane tegevuse nimi" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei saa luua: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "sulgev `%c' puudub %s sees" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: puudub eraldav koolon" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%s: vigane tegevuse nimi" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei saa lugeda: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': ei saa lahti siduda" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': tundmatu funktsiooni nimi" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole seotud ühegi klahviga.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s saab kasutada läbi " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ei saa lahti siduda" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "omab mõtet ainult `for', `while' või `until' tsüklis" @@ -139,165 +139,165 @@ msgid "" " Without EXPR, returns " msgstr "Tagastab jooksva alamprotseduuri konteksti." -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME pole seatud" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "liiga palju argumente" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "teist kataloogi pole" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD pole seatud" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, fuzzy, c-format msgid "warning: " msgstr "%s: hoiatus: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, fuzzy, c-format msgid "%s: usage: " msgstr "%s: hoiatus: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: võti nõuab argumenti" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: nõutakse numbrilist argumenti" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ei leitud" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: vigane võti" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: vigane võtme nimi" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': ei ole lubatud identifikaator" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "vigane signaali number" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "vigane number" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "vigane number" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: mittemuudetav muutuja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s on piiridest väljas" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s on piiridest väljas" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: sellist tööd pole" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: töökontroll puudub" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "töökontroll puudub" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: piiratud" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "piiratud" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole sisekäsk" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "kirjutamise viga: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: segane töö" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -306,69 +306,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: vigane tegevuse nimi" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "saab kasutada ainult funktsioonis" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: vigane tegevuse nimi" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funktsioon ei ole muudetav" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: masiivi muutujaid ei saa nii kustutada" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -402,68 +402,68 @@ msgstr "%s: pole d msgid "%s: cannot delete: %s" msgstr "%s: ei saa kustutada: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: on kataloog" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ei ole tavaline fail" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fail on liiga suur" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei saa käivitada: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "pole login shell: kasutage `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, fuzzy, c-format msgid "There are running jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "käsku ei ole" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ajutist faili ei saa avada: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -478,39 +478,38 @@ msgstr "%s: lubamatu v msgid "%s: option requires an argument -- %c\n" msgstr "%s: võti nõuab argumenti -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "viimane käsklus: %s\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei saa avada: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -522,20 +521,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: vigane number" +msgstr "%s: vigane võtme nimi" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -549,16 +549,16 @@ msgstr "%s: vigane teenus" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Tundmatu viga" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "oodati avaldist" @@ -567,70 +567,70 @@ msgstr "oodati avaldist" msgid "%s: not an indexed array" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: vigane võti" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: vigane võti" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: vigane tegevuse nimi" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 #, fuzzy msgid "empty array variable name" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: hoiatus: " -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -644,19 +644,19 @@ msgstr "teist kataloogi pole" msgid "%s: invalid argument" msgstr "%s: vigane number" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -680,7 +680,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -705,7 +705,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -726,45 +726,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "viga lugemisel: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: ei saa eemaldada" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: pole massiiv" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktsioon" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ei saa eemaldada" @@ -773,20 +773,20 @@ msgstr "%s: ei saa eemaldada" msgid "shift count" msgstr "shift arv" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: faili ei ole" @@ -799,61 +799,61 @@ msgstr "peatamine ei msgid "cannot suspend a login shell" msgstr "login shelli ei saa peatada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on shelli võtmesõna\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: on funktsioon\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s on shelli sisekäsk\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on shelli sisekäsk\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': halb käsklus" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ei õnnestu lugeda piirangut: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ei õnnestu muuta piirangut: %s" @@ -872,203 +872,208 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "viimane käsklus: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Katkestan..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "tundmatu viga käsus" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: sidumata muutuja" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 #, fuzzy msgid "pipe error" msgstr "kirjutamise viga: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: käsku ei ole" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: halb interpretaator" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on shelli sisekäsk\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "avaldise rekursioon on liiga sügav" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "süntaksi viga avaldises" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "üritati omistada mitte-muutujale" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "süntaksi viga avaldises" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "nulliga jagamine" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponent on väiksem kui 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "puudub `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "süntaksi viga: oodati operandi" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "süntaksi viga: vigane aritmeetiline operaator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "vigane aritmeetiline baas" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "väärtus on baasiks liiga suur" -#: expr.c:1546 +#: expr.c:1611 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: oodati täisarvude avaldist" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1077,193 +1082,197 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid puudub" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: töö %d on peatatud" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: töö on lõpetatud" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: töö %d on juba taustal" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: hoiatus: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 #, fuzzy msgid "unknown" msgstr "%s: tundmatu masin" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1305,22 +1314,22 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1338,147 +1347,147 @@ msgstr "Teil on uus kiri kaustas $_" msgid "The mail in %s has been read\n" msgstr "Kiri kaustas %s on loetud\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "süntaksi viga: ootamatu `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "süntaksi viga: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "süntaksi viga tingimuslikus avaldises" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "ootamatu märk `%s', oodati `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "oodati `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "süntaksi viga kohal `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "süntaksi viga: ootamatu faililõpp" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "süntaksi viga" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1488,109 +1497,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "faili deskriptor on piiridest väljas" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: segane ümbersuunamine" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: fail on olemas, ei kirjuta üle" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: piiratud: väljundit ei saa ümber suunata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "$%s: sedasi ei saa omistada" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp puudub, palun looge see!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp peab olema kataloogi nimi" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: vigane võti" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on kataloog" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Mul ei ole nime!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1599,50 +1612,50 @@ msgstr "" "Kasuta:\t%s [GNU pikk võti] [võti] ...\n" "\t%s [GNU pikk võti] [võti] skript-fail ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU pikad võtmed:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Käsuinterpretaatori võtmed:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s või -o võti\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: vigane operatsioon" @@ -1818,21 +1831,21 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "" @@ -1851,70 +1864,74 @@ msgstr "" msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "sulgev `%c' puudub %s sees" +msgstr "" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: halb asendus" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: vigane võti" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "%s: vigane tegevuse nimi" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameeter on null või pole seatud" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: halb asendus" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: sedasi ei saa omistada" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sulgev `%c' puudub %s sees" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "ei leitud: %s" @@ -1937,107 +1954,107 @@ msgstr "oodati `)'" msgid "`)' expected, found %s" msgstr "oodati `)', saadi %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: eeldati unaarset operaatorit" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: eeldati binaarset operaatorit" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "puudub `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "vigane signaali number" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: vigane signaal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "$%s: sedasi ei saa omistada" +msgstr "" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" -#: variables.c:4218 +#: variables.c:4437 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameeter on null või pole seatud" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: pole global_variables kontekst" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:5862 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei saa avada: %s" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s on piiridest väljas" @@ -2066,22 +2083,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ei saa luua: %s" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: ei saa luua: %s" @@ -2285,7 +2302,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:177 -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "" #: builtins.c:181 @@ -2401,8 +2418,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2654,11 +2671,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2959,7 +2976,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -2975,7 +2992,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3000,7 +3018,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3024,7 +3042,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3041,7 +3059,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3064,7 +3082,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3109,7 +3127,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3130,7 +3148,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3161,7 +3179,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3173,7 +3191,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3259,7 +3277,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3281,7 +3299,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3300,7 +3318,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3321,7 +3339,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3332,7 +3350,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3346,7 +3364,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3360,7 +3378,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3443,7 +3461,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3451,7 +3469,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3463,7 +3481,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3507,7 +3525,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3537,7 +3555,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3586,7 +3604,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3604,7 +3622,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3612,19 +3630,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3639,7 +3659,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3652,7 +3672,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3669,7 +3689,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3689,7 +3709,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3705,7 +3725,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3716,7 +3736,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3737,7 +3757,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3748,7 +3768,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3759,7 +3779,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3772,7 +3792,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3786,7 +3806,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3797,7 +3817,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3811,7 +3831,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3822,7 +3842,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3850,7 +3870,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3904,7 +3924,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -3935,7 +3955,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -3962,7 +3982,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -3991,14 +4011,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4012,7 +4031,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4051,7 +4070,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4078,7 +4097,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4091,7 +4110,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4122,7 +4141,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4164,25 +4183,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - #~ msgid " " #~ msgstr " " diff --git a/po/fi.gmo b/po/fi.gmo index 96ee531ac..9cd7563b1 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 5fb8cc48c..06237a16a 100644 --- a/po/fi.po +++ b/po/fi.po @@ -9,132 +9,132 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2009-05-09 15:13+0300\n" "Last-Translator: Pekka Niemi \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: fi\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 0.3\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "virheellinen taulukkoindeksi" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: virheellinen assosiatiivinen indeksi" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää " "avainindeksiä" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei voida luoda: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole ”\"”" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "ei loppumerkkiä ”%c” rivissä %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: puuttuva kaksoispiste-erotin" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "”%s”: virheellinen näppäinkartan nimi" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "rivieditointi ei ole käytössä" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "”%s”: virheellinen näppäinkartan nimi" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei voida lukea: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "”%s”: ei voida irrottaa" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "”%s”: tuntematon funktio" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole sidottu mihinkään näppäimeen.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s voidaan käynnistää näppäinkomennolla " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "”%s”: ei voida irrottaa" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "toistolaskuri" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "voidaan käyttää vain ”for”-, ”while”- tai ”until”-silmukoissa" @@ -148,163 +148,163 @@ msgstr "" " \n" " Ilman LAUSEKETTA palauttaa" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME-ympäristömuuttujaa ei ole asetettu" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "liian monta argumenttia" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "ei toista hakemistoa" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "rivi %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varoitus: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: käyttö: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: valitsin vaatii argumentin" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vaaditaan numeerinen argumentti" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ei löytynyt" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: virheellinen valitsin" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: virheellinen valitsimen nimi" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: virheellinen tunniste" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "virheellinen oktaaliluku" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "virheellinen heksadesimaaliluku" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "virheellinen luku" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: virheellinen signaalimääritys" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "”%s”: ei ole prosessitunnus eikä kelvollinen työtunniste" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: kirjoitussuojattu muuttuja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s rajojen ulkopuolella" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentti" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s rajojen ulkopuolella" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: työtä ei löydy" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ei työnohjausta" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ei työnohjausta" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: rajoitettu" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "rajoitettu" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole komentotulkin sisäänrakennettu komento" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "kirjoitusvirhe: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "pääteasetuksia luettaessa tapahtui virhe: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ei ole yksiselitteinen työtunniste" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -313,69 +313,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: virheellinen toiminnon nimi" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: ei lavennusmääritystä" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "voidaan käyttää ainoastaan funktiossa" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: kirjoitussuojattu funktio" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: taulukkomuuttujia ei voi tuhota näin" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" @@ -409,68 +409,68 @@ msgstr "%s: ei dynaamisesti ladattu" msgid "%s: cannot delete: %s" msgstr "%s: ei voida poistaa: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: on hakemisto" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ei tavallinen tiedosto" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tiedosto on liian iso" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei voida suorittaa: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "lopetus\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ei ole sisäänkirjautumiskomentotulkki: käytä komentoa ”exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Töitä on pysäytettynä.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Töitä on ajossa.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "ei löytynyt komentoa" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "komentohistoriamääritys" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: väliaikaistiedostoa ei voitu avata: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "nykyinen" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "työ %d käynnistyi ilman työnohjausta" @@ -485,28 +485,27 @@ msgstr "%s: virheellinen valitsin – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hajautus kytketty pois" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hajautustaulukko on tyhjä\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "osumia\tkomento\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Sopivat komennot avainsanaan `" msgstr[1] "Sopivat komennot avainsanoihin `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -514,12 +513,12 @@ msgstr "" "Ohjeita kohteelle ”%s” ei löydy. Kokeile ”help help”, ”man -k %s” tai \n" "”info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei voida avata: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -540,20 +539,21 @@ msgstr "" "Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "valitsimista -anrw voidaan käyttää vain yhtä" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "sijainti komentohistoriassa" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: virheellinen rajoitusargumentti" +msgstr "%s: virheellinen valitsimen nimi" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historiaviittaus epäonnistui" @@ -567,16 +567,16 @@ msgstr "%s: inlib epäonnistui" msgid "no other options allowed with `-x'" msgstr "”-x”:n kanssa ei voida käyttää muita valitsimia" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Tuntematon virhe" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "odotettiin lauseketta" @@ -585,69 +585,69 @@ msgstr "odotettiin lauseketta" msgid "%s: not an indexed array" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: virheellinen tiedostokahvamääritys" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: virheellinen tiedostokahva: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: virheellinen rivimäärä" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: virheellinen taulukkoindeksi" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: virheellinen paluukutsumäärä" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tyhjä taulukkomuuttujan nimi" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "vaaditaan tukea taulukkomuuttujille" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "”%s”: puuttuva muotoilumerkki" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: virheellinen muotoilumerkki" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "varoitus: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "\\x:stä puuttuu heksadesimaalinumero" @@ -661,19 +661,19 @@ msgstr "ei toista hakemistoa" msgid "%s: invalid argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "hakemistopino on tyhjä" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "hakemistopinon indeksi" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -715,7 +715,7 @@ msgstr "" " -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n" " \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -757,7 +757,7 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -795,45 +795,45 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon sisällön." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "lukuvirhe: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "”return” on käytettävissä vain funktiossa tai ladatussa skriptissä" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: ei voida poistaa" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktio" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ei voida poistaa" @@ -842,22 +842,22 @@ msgstr "%s: ei voida poistaa" msgid "shift count" msgstr "siirtolaskuri" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä " "samanaikaisesti" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: virheellinen komentotulkin valitsimen nimi" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vaaditaan tiedostonimi argumentiksi" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: tiedostoa ei löytynyt" @@ -870,61 +870,61 @@ msgstr "ei voida keskeyttää" msgid "cannot suspend a login shell" msgstr "sisäänkirjautumiskomentotulkkia ei voi keskeyttää" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s on aliasioitu ”%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on komentotulkin avainsana\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s on funktio\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s on hajautettu (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "”%c”: virheellinen komento" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: rajoitusta ei saada: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "rajoitus" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: rajoitusta ei voida muokata: %s" @@ -943,202 +943,207 @@ msgstr "”%c”: virheellinen symbolisen tilan operaattori" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: virheellinen symbolisen tilan merkki" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " rivi " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "viimeinen komento: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Keskeytetään..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "tuntematon komentovirhe" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "virheellinen komentotyyppi" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "virheellinen liittäjä" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "virheellinen hyppy" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: sitomaton muuttuja" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "AJAN MUOTOMÄÄRITYS: ”%c”: virheellinen muotoilumerkki" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "putkitusvirhe" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää ”/”-merkkiä" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löydy" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: virheellinen tulkki" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "lausekkeen rekursiomäärä ylittyi" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursiopinon alivuoto" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "lauseoppivirhe lausekkeessa" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lauseoppivirhe lausekkeessa" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "jako nollalla" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bugi: virheellinen sijoitusavainsana" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "”:”:ttä odotettiin ehdolliseen lausekkeeseen" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponentti on pienempi kuin 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "puuttuva ”)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "lauseoppivirhe: odotettiin operandia" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (virheellinen avainsana on ”%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "virheellinen lukujärjestelmä" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "liian iso luku lukujärjestelmälle" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: virhe lausekkeessa\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ylempiin hakemistoihin ei päästä" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "bashin syötteeksi ei voida avata uutta tiedostokahvaa kahvasta %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" @@ -1147,153 +1152,158 @@ msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-putki" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosessi %5ld (%s) putkijonossa" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: prosessitunnusta ei löydy." -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signaali %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Valmis" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Pysäytetty" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Pysäytetty(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Ajossa" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Valmis(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Poistui %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Tuntematon tila" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(luotiin core-tiedosto)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (työhakemisto: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "lapsiprosessin setpgid (%ld => %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Prosessista %ld ei ole tietoja" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: työ %d on pysäytetty" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: työ on lopetettu" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: työ %d on jo taustalla" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: rivi %d:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (luotiin core-tiedosto)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(työhakemisto nyt: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp epäonnistui" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vuonhallinta" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "tällä komentotulkilla ei ole työnohjausta" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: varmistus epäonnistui: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1302,39 +1312,39 @@ msgstr "" "\r\n" "malloc: %s:%d: varmistus epäonnistui\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "tuntematon" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: vapaitten listan lohko ylikirjoittui" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: kutsuttiin argumenttina jo vapautettu lohko" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: kutsuttuun argumenttina varaamaton lohko" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: kutsuargumentti on varaamaton lohko" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: alku- ja loppulohkojen koot eroavat" @@ -1376,22 +1386,22 @@ msgstr "%s: virheellinen verkkopolkumääritys" msgid "network operations not supported" msgstr "verkko-operaatioita ei ole tuettu" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" @@ -1409,149 +1419,149 @@ msgstr "Sinulla on uutta postia laatikossa $_" msgid "The mail in %s has been read\n" msgstr "Posti laatikossa %s on luettu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "lauseoppivirhe: odottamaton ”;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "lauseoppivirhe: ”((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: virheellinen käskytyyppi %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin ”%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: uudelleenohjaus ”%d” rajojen ulkopuolella" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa ”%c”" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "odottamaton EOF odotettaessa ”]]”" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana ”%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "lauseoppivirhe ehdollisessa lausekkeessa" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "odottamaton avainsana ”%s”, odotettiin ”)”" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "odototettiin ”)”" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle unaariselle operaattorille" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "odottamaton avainsana ”%s”, odotettiin ehdollista binääristä operaattoria" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "odotettiin ehdollista binääristä operaattoria" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle binääriselle operaattorille" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "odottamaton avainsana ”%c” ehdollisessa komennossa" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "odottamaton avainsana ”%s” ehdollisessa komennossa" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "odottamaton avainsana %d ehdollisessa komennossa" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa ”%s”" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "lauseoppivirhe lähellä ”%s”" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "lauseoppivirhe: odottamaton tiedostonloppu" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "lauseoppivirhe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kirjoita ”%s” poistuaksesi komentotulkista.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "Odottamaton EOF odotettaessa vastaavaa ”)”" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "täydennys: funktiota ”%s” ei löytynyt" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1561,109 +1571,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: tyhjä COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: virheellinen yhdistin ”%d”" -#: print_cmd.c:375 +#: print_cmd.c:373 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: virheellinen muotoilumerkki" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "tiedostokahva rajojen ulkopuolella" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: epämääräinen uudelleenohjaus" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp-hakemistoa ei löytynyt, luo se!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: virheellinen valitsin" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: on hakemisto" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Minulla ei ole nimeä!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versio %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,55 +1686,55 @@ msgstr "" "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU:n pitkät valitsimet:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Komentotulkin valitsimet:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s tai -o -valitsin\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kirjoita ”%s -c 'help set'” saadaksesi lisätietoja komentotulkin " "valitsimista.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kirjoita ”%s -c help” saadaksesi lisätietoja komentotulkin " "sisäänrakennetuista komennoista.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Raportoi virheet komennolla ”bashbug”.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: virheellinen operaatio" @@ -1894,21 +1908,21 @@ msgstr "Tuntematon signaali #" msgid "Unknown Signal #%d" msgstr "Tuntematon signaali #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "virheellinen korvaus: ei sulkevaa ”%s” jonossa %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "putkea ei voida luoda prosessin korvaamista varten" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" @@ -1927,70 +1941,75 @@ msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" msgid "cannot duplicate named pipe %s as fd %d" msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "putkea ei voida luoda komennon korvaamista varten" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format -msgid "%s: invalid variable name for name reference" -msgstr "%d: virheellinen tiedostokahva: %s" - -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6641 subst.c:9483 #, c-format -msgid "%s: bad substitution" -msgstr "%s: virheellinen korvaus" +msgid "%s: invalid variable name for name reference" +msgstr "" -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: virheellinen rivimäärä" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "”%s”: virheellinen näppäinkartan nimi" +msgstr "%s: virheellinen toiminnon nimi" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: alimerkkijonolauseke < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: virheellinen korvaus" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ei voida asettaa näin" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "ei osumia: %s" @@ -2013,30 +2032,30 @@ msgstr "odotettiin ”)”" msgid "`)' expected, found %s" msgstr "odotettiin ”)”, löydettiin %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: odotettiin unaarista operaattoria" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: odotettiin binääristä operaattoria" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "puuttuva ”]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "virheellinen signaalinumero" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2044,79 +2063,79 @@ msgstr "" "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " "itselleni" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: virheellinen signaali %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "virhe tuotaessa ”%s”:n funktiomääritystä" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ei funktiokontekstia nykytilassa" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" +msgstr "" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: virheellinen tiedostokahva: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ei funktiokontekstia nykytilassa" -#: variables.c:4218 +#: variables.c:4437 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "virheellinen merkki %d %s:n exportstr:ssä" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "ei =:ä kohteen %s exportstr:ssä" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ei global_variables-kontekstia" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien " "ympäristössä" -#: variables.c:5619 +#: variables.c:5862 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei voida avata: %s" -#: variables.c:5624 +#: variables.c:5867 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s rajojen ulkopuolella" @@ -2149,22 +2168,22 @@ msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Takuuta ei ole lain määräämissä rajoissa.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: ei voida varata %lu tavua (varattiin %lu tavua)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: ei voitu varata %lu tavua" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: ei voida varata %lu tavua (varattiin %lu tavua)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: ei voida varata %lu tavua" @@ -2388,13 +2407,13 @@ msgstr "umask [-p] [-S] [tila]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2516,9 +2535,10 @@ msgstr "" "[-C paluukutsu] [-c määrä] [taulukko]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u " "tiedostokahva] \n" @@ -2944,11 +2964,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3508,7 +3528,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3544,7 +3564,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3600,7 +3621,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin " "tai tapahtuu virhe." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3645,7 +3666,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3678,7 +3699,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on " "virheellinen." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3722,7 +3743,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai " "tapahtuu virhe." -#: builtins.c:942 +#: builtins.c:943 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3811,7 +3832,7 @@ msgstr "" " Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n" " tapauksessa 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3833,7 +3854,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3902,7 +3923,7 @@ msgstr "" " Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" " ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3926,7 +3947,7 @@ msgstr "" "suorittamassa\n" " funktiota tai skriptiä." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4097,7 +4118,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4136,7 +4157,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on kirjoitussuojattu." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4170,7 +4191,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4209,7 +4230,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4228,7 +4249,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4253,7 +4274,7 @@ msgstr "" "epäonnistuu\n" " mikäli TIEDOSTOA ei voida lukea." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4280,7 +4301,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4443,7 +4464,7 @@ msgstr "" " Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" " LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4455,7 +4476,7 @@ msgstr "" " Tämä on sisäänrakennetun ”test”-komennon synonyymi, mutta viimeisen\n" " argumentin pitää olla ”]”, joka sulkee avaavan ”[”:n." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4475,7 +4496,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:1357 +#: builtins.c:1358 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4557,7 +4578,7 @@ msgstr "" "annettu\n" " virheellinen valitsin." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4614,7 +4635,7 @@ msgstr "" " Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" " epäonnistuu." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4705,7 +4726,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4740,7 +4761,7 @@ msgstr "" " Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" " virheellinen valitsin." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4749,13 +4770,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4774,7 +4797,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4800,7 +4823,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4822,7 +4845,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4854,7 +4877,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4891,7 +4914,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4920,7 +4943,7 @@ msgstr "" " Paluuarvo:\n" " KOMENTOKETJUN paluuarvo." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4939,7 +4962,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4973,7 +4996,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4991,7 +5014,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen komennon paluuarvo." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5009,7 +5032,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5032,7 +5055,7 @@ msgstr "" " Paluuarvo:\n" " KOMENNON paluuarvo." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5055,7 +5078,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu, ellei NIMI ole kirjoitussuojattu." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5074,7 +5097,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5100,7 +5123,7 @@ msgstr "" " Paluuarvo:\n" " Työn tila." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5118,7 +5141,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5172,7 +5195,7 @@ msgstr "" " Paluuarvo:\n" " 0 tai 1 riippuen LAUSEKKEEN arvosta." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5275,7 +5298,7 @@ msgstr "" " HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" " \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5334,7 +5357,7 @@ msgstr "" "tai\n" " hakemiston vaihtaminen epäonnistuu." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5382,7 +5405,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" " hakemiston vaihto epäonnistuu." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5437,14 +5460,14 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5475,7 +5498,7 @@ msgstr "" " Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n" " annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5535,7 +5558,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu kirjoitus- tai sijoitusvirhe." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5583,7 +5606,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5606,7 +5629,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu virhe." -#: builtins.c:1996 +#: builtins.c:2000 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5660,7 +5683,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " NIMELLE ei ole määritetty täydennysmääritystä." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5734,7 +5757,7 @@ msgstr "" " tai TAULUKKO on kirjoitussuojattu." # Changed " characters into ”... -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5744,9 +5767,15 @@ msgstr "" " \n" " ”mapfile”:n synonyymi." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: ei voida varata %lu tavua" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" #~ msgid ":" #~ msgstr ":" @@ -5759,32 +5788,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: ei voida varata %lu tavua" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: %s:%d: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)" diff --git a/po/fr.gmo b/po/fr.gmo index 7c7a736f1..5f81d1970 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 4816b052f..ec3f6c164 100644 --- a/po/fr.po +++ b/po/fr.po @@ -1,140 +1,141 @@ # Messages français pour GNU concernant bash. -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Michel Robitaille , 2004 # Christophe Combelles , 2008, 2009, 2010, 2011 -# Frédéric Marchal , 2015 +# Frédéric Marchal , 2016 msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-17 13:49+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-11-10 15:55+0100\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "mauvais indice de tableau" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: retire l'attribut nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s : impossible de convertir un tableau indexé en associatif" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s : clé non valable pour le tableau associatif" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s : impossible d'assigner à un index non numérique" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s : impossible de créer : %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command : impossible de trouver le mappage clavier pour la " "commande" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s : le premier caractère non vide n'est pas « \" »" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "pas de « %c » de fermeture dans %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s : virgule de séparation manquante" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "expansion des accolades : échec lors de l'allocation mémoire pour %d éléments" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "« %s » : nom d'alias non valable" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "édition de ligne non activée" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "« %s » : nom du mappage clavier invalide" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s : impossible de lire : %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "« %s » : impossible à délier" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "« %s » : nom de fonction inconnu" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s n'est lié à aucune touche.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s peut être appelé via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "« %s » : impossible à délier" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "nombre de boucles" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ceci n'a un sens que dans une boucle « for », « while » ou « until »" @@ -148,164 +149,163 @@ msgstr "" " \n" " Sans EXPR, renvoie" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "« HOME » non défini" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "trop d'arguments" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "de répertoire se fait vers le nouveau répertoire supérieur." +msgstr "répertoire nul" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "« OLDPWD » non défini" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "ligne %d : " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "avertissement :" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s : utilisation :" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s : l'option nécessite un argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s : argument numérique nécessaire" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s : non trouvé" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s : option non valable" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s : nom d'option non valable" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "« %s » : identifiant non valable" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nombre octal non valable" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nombre hexadécimal non valable" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "nombre non valable" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s : indication de signal non valable" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" "« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s : variable en lecture seule" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s : %s hors plage" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s hors plage" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s : tâche inexistante" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s : pas de contrôle de tâche" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "pas de contrôle de tâche" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s : restreint" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restreint" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s : ceci n'est pas une primitive du shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erreur d'écriture : %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erreur lors de la définition de l'attribut du terminal : %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erreur lors de la récupération de l'attribut du terminal : %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s : spécification de tâche ambiguë" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "l'aide n'est pas disponible dans cette version" @@ -314,74 +314,74 @@ msgstr "l'aide n'est pas disponible dans cette version" msgid "%s: invalid action name" msgstr "%s : nom d'action non valable" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s : pas d'indication de complètement" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "fonction de complétion actuellement non en cours d'exécution" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "utilisable seulement dans une fonction" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s : la variable de référence ne peut pas être un tableau" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s : références bouclées sur la même variable interdites" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s : référence de nom circulaire" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s : nom de variable invalide pour une référence de nom" +msgstr "« %s » : nom de variable invalide pour une référence de nom" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s : fonction en lecture seule" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s : impossible de détruire des variables tableaux de cette façon" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" @@ -415,68 +415,68 @@ msgstr "%s : non chargé dynamiquement" msgid "%s: cannot delete: %s" msgstr "%s : impossible d'effacer : %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s : ceci est un répertoire" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s : ceci n'est pas un fichier régulier" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s : le fichier est trop grand" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s : ne peut exécuter le fichier binaire" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s : impossible d'exécuter : %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "déconnexion\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ce n'est pas un shell de connexion : utilisez « exit »" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Il y a des tâches stoppées.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Il y a des tâches en cours d'exécution.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "aucune commande trouvée" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "indication d'historique" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s : impossible d'ouvrir le fichier temporaire : %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "courant" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "tâche %d démarrée sans contrôle de tâche" @@ -491,28 +491,27 @@ msgstr "%s : option non permise -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option nécessite un argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hachage désactivé" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s : table de hachage vide\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "occurrences\tcommande\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Commandes du shell correspondant au mot-clé « " msgstr[1] "Commandes du shell correspondant aux mots-clés « " -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %" "s » ou « info %s »." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s : impossible d'ouvrir : %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -546,20 +545,21 @@ msgstr "" "Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "position dans l'historique" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s : argument non valable" +msgstr "%s : horodatage non valable" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s : l'expansion de l'historique a échoué" @@ -573,17 +573,17 @@ msgstr "%s : « inlib » a échoué" msgid "no other options allowed with `-x'" msgstr "pas d'autre option permise avec « -x »" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" "%s : les arguments doivent être des identifiants de tâche ou de processus" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Erreur inconnue" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "une expression est attendue" @@ -592,69 +592,69 @@ msgstr "une expression est attendue" msgid "%s: not an indexed array" msgstr "%s : n'est pas un tableau indexé" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s : spécification de descripteur de fichier non valable" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d : descripteur de fichier non valable : %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s : nombre de lignes non valable" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s : origine de tableau non valable" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s : quantum de callback non valable" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nom de variable tableau vide" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "nécessité de prise en charge des variables tableaux" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "« %s » : caractère de format manquant" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "« %c » : spécification de format d'heure incorrecte" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "« %c » : caractère de format non permis" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "avertissement : %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "problème d'analyse du format : %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "chiffre hexadécimal manquant pour \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "chiffre unicode manquant pour \\%c" @@ -668,19 +668,19 @@ msgstr "pas d'autre répertoire" msgid "%s: invalid argument" msgstr "%s : argument non valable" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pile de répertoire vide" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indice de pile de répertoire" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -723,7 +723,7 @@ msgstr "" " -N\tAffiche le Nième élément en comptant de zéro depuis la droite de la\n" " liste affichée par « dirs » lorsque celle-ci est appelée sans option." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -769,7 +769,7 @@ msgstr "" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -808,49 +808,49 @@ msgstr "" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s : spécification de délai d'expiration non valable" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "erreur de lecture : %d : %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "« return » n'est possible que depuis une fonction ou depuis un script exécuté " "par « source »" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" "« unset » ne peut pas s'appliquer simultanément à une fonction et à une " "variable" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s : « unset » impossible" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s : « unset » impossible : %s est en lecture seule" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s : n'est pas une variable tableau" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s : n'est pas une fonction" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s : impossible d'exporter" @@ -859,22 +859,22 @@ msgstr "%s : impossible d'exporter" msgid "shift count" msgstr "nombre de « shift »" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "les options du shell ne peuvent pas être simultanément activées et " "désactivées" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s : nom d'option du shell non valable" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "nom de fichier nécessaire en argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s : fichier introuvable" @@ -887,61 +887,61 @@ msgstr "suspension impossible" msgid "cannot suspend a login shell" msgstr "un shell de connexion ne peut pas être suspendu" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s est un alias vers « %s »\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s est un mot-clé du shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s est une fonction\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s est une primitive spéciale du shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s est une primitive du shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s est %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s est haché (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s : argument de limite non valable" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "« %c » : mauvaise commande" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s : impossible d'obtenir la limite : %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s : impossible de modifier la limite : %s" @@ -960,208 +960,213 @@ msgstr "« %c » : opérateur de mode symbolique non valable" msgid "`%c': invalid symbolic mode character" msgstr "« %c » : caractère de mode symbolique non valable" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ligne " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "dernière commande : %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Annulation…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erreur de commande inconnue" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "mauvais type de commande" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "mauvais connecteur" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "mauvais saut" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s : variable sans liaison" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aattente de données expirée : déconnexion automatique\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT : « %c » : caractère de format non valable" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] existe encore" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "erreur de tube" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" "eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" "%s : dépassement de la profondeur maximum d'imbrication de sources (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" "%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s : %s : mauvais interpréteur" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s : impossible d'exécuter le fichier binaire : %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "« %s » : est une primitive spéciale" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossible de dupliquer le fd %d vers le fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "dépassement du niveau de récursivité dans l'expression" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "débordement négatif de la pile de récursivité" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "erreur de syntaxe dans l'expression" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "tentative d'affectation à une non-variable" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erreur de syntaxe dans l'expression" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "division par 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bogue : mauvais symbole pour expassign" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "« : » attendu pour une expression conditionnelle" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exposant négatif" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifiant attendu après un pré-incrément ou un pré-décrément" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "« ) » manquante" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "erreur de syntaxe : opérande attendu" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "erreur de syntaxe : opérateur arithmétique non valable" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s : %s (le symbole erroné est « %s »)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "base arithmétique non valable" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valeur trop grande pour la base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s : erreur d'expression\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd : ne peut accéder aux répertoires parents" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossible d'allouer un nouveau descripteur de fichier pour l'entrée de bash " "depuis le fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d" @@ -1170,153 +1175,158 @@ 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:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process : processus %5ld (%s) dans le_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process : pid %5ld (%s) signalé toujours en vie" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid : %ld : n° de processus inexistant" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Fini" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stoppé" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stoppé(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "En cours d'exécution" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Fini(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Termine %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "État inconnu" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd : %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "fils setpgid (%ld à %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait : le processus n°%ld n'est pas un fils de ce shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for : Aucun enregistrement du processus n°%ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job : la tâche %d est stoppée" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s : la tâche s'est terminée" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s : la tâche %d est déjà en arrière plan" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s : ligne %d : " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(maintenant, wd : %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control : getpgrp a échoué" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control : discipline de ligne" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control : discipline de ligne" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control : setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossible de régler le groupe de processus du terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "pas de contrôle de tâche dans ce shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc : échec de l'assertion : %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1325,39 +1335,39 @@ msgstr "" "\r\n" "malloc : %s:%d : assertion manquée\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "inconnu" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc : bloc écrasé sur liste libre" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free : appelé avec un bloc déjà libéré comme argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free : les tailles de fragment au début et à la fin sont différentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc : les tailles de fragment au début et à la fin sont différentes" @@ -1400,23 +1410,23 @@ msgstr "%s : mauvaise spécification de chemin réseau" msgid "network operations not supported" msgstr "opérations sur le réseau non prises en charge" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" @@ -1435,268 +1445,274 @@ msgstr "Vous avez du nouveau courrier dans $_" msgid "The mail in %s has been read\n" msgstr "Le courrier dans %s a été lu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "erreur de syntaxe : expression arithmétique nécessaire" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "erreur de syntaxe : « ; » non attendu" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erreur de syntaxe : « ((%s)) »" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document : le type d'instruction %d est incorrect" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %" "s »)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne " +"tronquée" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "nombre maximum de documents en ligne (« here-document ») dépassé" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "erreur de syntaxe dans une expression conditionnelle : symbole « %s » " "inattendu" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "erreur de syntaxe dans une expression conditionnelle" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "symbole inattendu « %s » au lieu de « ) »" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "« ) » attendu" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argument inattendu pour l'opérateur conditionnel à un argument" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "opérateur binaire conditionnel attendu" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argument inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "symbole « %c » inattendu dans la commande conditionnelle" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "symbole « %s » inattendu dans la commande conditionnelle" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "symbole « %d » inattendu dans la commande conditionnelle" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erreur de syntaxe près du symbole inattendu « %s »" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "erreur de syntaxe près de « %s »" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "erreur de syntaxe : fin de fichier prématurée" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "erreur de syntaxe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilisez « %s » pour quitter le shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "" "fin de fichier (EOF) prématurée lors de la recherche d'une « ) » " "correspondante" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "complètement : fonction « %s » non trouvée" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: boucle de ré-essai possible" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert : %s : NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command : mauvais connecteur « %d »" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set : %d : descripteur de fichier non valable" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set : pointeur de fichier NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf : « %c » : caractère de format invalide" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descripteur de fichier hors plage" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s : redirection ambiguë" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s : impossible d'écraser le fichier existant" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s : restreint : impossible de rediriger la sortie" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" "impossible de créer un fichier temporaire pour le « here-document » : %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "" "erreur de redirection : impossible de dupliquer le descripteur de fichier" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "« /tmp » introuvable, veuillez le créer !" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "« /tmp » doit être un nom de répertoire valable" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c : option non valable" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossible de changer le uid en %d : uid effectif %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossible de changer le gid en %d: gid effectif %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "impossible de démarrer le débogueur: mode déboguage désactivé" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s : Ceci est un répertoire" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Je n'ai pas de nom !" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1705,54 +1721,54 @@ msgstr "" "Utilisation :\t%s [option longue GNU] [option] ...\n" "\t%s [option longue GNU] [option] fichier-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Options longues GNU :\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Options du shell :\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o option\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" " "».\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "page d'accueil de bash : \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Aide générale sur l'utilisation de logiciels GNU : \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask : %d : opération non valable" @@ -1926,21 +1942,21 @@ msgstr "N° de signal inconnu" msgid "Unknown Signal #%d" msgstr "Signal n°%d inconnu" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s : impossible d'affecter une liste à un élément de tableau" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "impossible de fabriquer un tube pour une substitution de processus" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "impossible de fabriquer un fils pour une substitution de processus" @@ -1959,60 +1975,64 @@ msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" +msgstr "substitution de commande: octet nul ignoré en entrée" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "impossible de fabriquer un tube pour une substitution de commande" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "" "impossible de fabriquer un processus fils pour une substitution de commande" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s : nom de variable invalide pour une référence de nom" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s : mauvaise substitution" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s : expansion indirecte invalide" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: nom de variable invalide" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s : paramètre vide ou non défini" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s : paramètre vide ou non défini" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s : expression de sous-chaîne négative" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s : mauvaise substitution" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s : affectation impossible de cette façon" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2020,12 +2040,12 @@ msgstr "" "les versions futures du shell forceront l'évaluation comme une substitution " "arithmétique" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "pas de correspondance : %s" @@ -2048,30 +2068,30 @@ msgstr "« ) » attendue" msgid "`)' expected, found %s" msgstr "« ) » attendue au lieu de %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s : opérateur unaire attendu" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s : opérateur binaire attendu" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "« ] » manquant" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "numéro de signal non valable" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2079,93 +2099,92 @@ msgstr "" "run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) " "à moi-même" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler : mauvais signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "erreur lors de l'importation de la définition de fonction pour « %s »" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "niveau de shell trop élevé (%d), initialisation à 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s : la variable ne peut se voir assigner une valeur" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s : nom de variable invalide pour une référence de nom" +msgstr "%s : assigne un entier à la référence de nom" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s a un « exportstr » nul" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractère %d non valable dans « exportstr » pour %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "pas de « = » dans « exportstr » pour %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context : le début de « shell_variables » n'est pas un contexte de " "fonction" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context : aucun contexte à « global_variables »" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope : le début de « shell_variables » n'est pas un champ d'application " "temporaire d'environnement" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s : %s : impossible d'ouvrir comme FILE" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s : %s : valeur de compatibilité hors plage" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2190,22 +2209,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s : impossible d'allouer %lu octets" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s : %s:%d : impossible d'allouer %lu octets" @@ -2333,9 +2352,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2418,7 +2436,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2541,9 +2560,10 @@ msgstr "" "callback] [-c quantum] [tableau]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C callback] [-" "c quantum] [tableau]" @@ -2992,6 +3012,7 @@ msgstr "" "COMMANDE est introuvable." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3010,11 +3031,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3076,15 +3097,14 @@ msgstr "" " erreur survienne lors de l'assignation d'une variable." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Définit des valeurs ou des attributs de variables.\n" +"Définit des valeurs et des attributs de variables.\n" " \n" -" Obsolète. Essayez « help declare »." +" Un synonyme de « déclare ». Consultez « help declare »." #: builtins.c:538 msgid "" @@ -3605,6 +3625,7 @@ msgstr "" " qu'une option non valable ne soit donnée." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3619,7 +3640,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3655,7 +3676,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3694,10 +3716,10 @@ msgstr "" "d'historique\n" " -n\tlit toutes les lignes d'historique non déjà lues depuis le fichier " "d'historique\n" +" \t\tet les ajoute à la liste de l'historique\n" " -r\tlit le fichier d'historique et ajoute le contenu à la liste " "d'historique\n" -" -w\técrit l'historique actuel dans le fichier d'historique\n" -" \t\tet l'ajoute à la liste d'historique\n" +" -w\técrit l'historique actuelle dans le fichier d'historique\n" " \n" " -p\teffectue un développement de l'historique sur chaque ARG et " "affiche le résultat\n" @@ -3720,7 +3742,7 @@ msgstr "" "ou\n" " qu'une erreur ne survienne." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3770,7 +3792,7 @@ msgstr "" "de\n" " la COMMANDE est renvoyé." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3802,8 +3824,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option ou un JOBSPEC non\n" " valable ne soit donné." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3840,6 +3861,7 @@ msgstr "" " \t\tils sont supposés être des numéros de signaux pour lesquels les noms " "doivent\n" " \t\têtre affichés\n" +" -L\tsynonyme de -l\n" " \n" " « kill » est une commande intégrée pour deux raisons : elle permet aux " "IDs de\n" @@ -3854,7 +3876,7 @@ msgstr "" "ou qu'une\n" " erreur ne survienne." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3943,7 +3965,8 @@ msgstr "" " Code de sortie :\n" " Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3964,7 +3987,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4058,7 +4081,7 @@ msgstr "" " ou qu'un descripteur de fichier non valable ne soit fourni comme " "argument à « -u »." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -4080,8 +4103,7 @@ msgstr "" " Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n" " une fonction ou un script." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4251,11 +4273,11 @@ msgstr "" " -P Si défini, les liens symboliques ne sont pas suivis lors de " "l'exécution des\n" " commandes telles que « cd » qui changent le répertoire courant.\n" -" -T Si défini, l'interception DEBUG est héritée par les fonctions du " -"shell.\n" +" -T Si défini, l'interception de DEBUG et RETURN est héritée par les " +"fonctions du shell.\n" " -- Affecte tous les arguments restants aux paramètres de position.\n" -" S'il n'y a plus d'argument, les paramètres de position sont " -"indéfinis.\n" +" S'il n'y a plus d'argument, les paramètres de position sont\n" +" indéfinis.\n" " - Affecter tous les arguments restants aux paramètres de " "position.\n" " Les options « -x » et « -v » sont désactivées.\n" @@ -4274,7 +4296,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit " "donnée." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4316,7 +4338,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM soit en lecture seule." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4353,7 +4375,7 @@ msgstr "" "données\n" " ou que NOM ne soit pas valable." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4395,7 +4417,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " donnée ou que NOM ne soit pas valable." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4414,7 +4436,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4442,7 +4464,7 @@ msgstr "" "code\n" " d'échec si NOMFICHIER ne peut pas être lu." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4470,7 +4492,7 @@ msgstr "" "activé\n" " ou qu'une erreur survienne." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4642,7 +4664,7 @@ msgstr "" "fausse ou si\n" " un argument non valable est donné." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4654,7 +4676,7 @@ msgstr "" " Ceci est un synonyme de la primitive « test », mais le dernier argument\n" " doit être le caractère « ] », pour fermer le « [ » correspondant." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4673,7 +4695,7 @@ msgstr "" " Code de retour :\n" " Toujours le code de succès." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4758,7 +4780,7 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4822,7 +4844,7 @@ msgstr "" "si l'un\n" " d'entre eux n'est pas trouvé." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4925,7 +4947,7 @@ msgstr "" "fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4963,7 +4985,8 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4971,13 +4994,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -5003,7 +5028,7 @@ msgstr "" "valable\n" " ou en cas d'option non valable." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -5031,7 +5056,7 @@ msgstr "" "valable ou\n" " si une option non valable est donnée." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -5054,7 +5079,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -5085,7 +5110,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5121,7 +5146,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5152,7 +5177,7 @@ msgstr "" " Code de sortie :\n" " Le code de retour est celui du PIPELINE." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5172,7 +5197,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5210,7 +5235,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5229,7 +5254,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5248,8 +5273,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5270,9 +5294,9 @@ msgstr "" " cours d'exécution. Le NOM par défaut est « COPROC ».\n" " \n" " Code de retour :\n" -" Renvoie le même code de retour que la COMMANDE." +" La commande coproc renvoie le code de sortie 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5298,7 +5322,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que NOM ne soit en lecture seule." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5316,7 +5340,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5342,7 +5366,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la commande reprise." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5360,7 +5384,7 @@ msgstr "" " Code de sortie :\n" " Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5415,7 +5439,7 @@ msgstr "" " Code de sortie :\n" " 0 ou 1 selon la valeur de l'EXPRESSION." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5540,7 +5564,7 @@ msgstr "" " \t\tdécider quelles commandes doivent être conservées dans la liste " "d'historique.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5603,7 +5627,7 @@ msgstr "" "fourni\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5655,7 +5679,7 @@ msgstr "" "donné\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5714,14 +5738,14 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5755,7 +5779,7 @@ msgstr "" "valable\n" " est donnée ou si NOMOPT est inactive." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5833,7 +5857,7 @@ msgstr "" "donnée ou qu'une\n" " erreur d'écriture ou d'affectation ne survienne." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5889,7 +5913,7 @@ msgstr "" "fournie ou\n" " qu'une erreur ne survienne." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5911,7 +5935,7 @@ msgstr "" " Renvoie le code de succès à moins qu'une option non valable ne soit\n" " fournie ou qu'une erreur ne survienne." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5976,7 +6000,7 @@ msgstr "" "fournie\n" " ou que NOM n'ait aucun réglage d'auto-complètement." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -6059,7 +6083,7 @@ msgstr "" "donnée ou que\n" " le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/ga.gmo b/po/ga.gmo index 692913440..1d7dec6a5 100644 Binary files a/po/ga.gmo and b/po/ga.gmo differ diff --git a/po/ga.po b/po/ga.po index 805c0d21c..ddc421651 100644 --- a/po/ga.po +++ b/po/ga.po @@ -1,142 +1,144 @@ -# translation of bash4.po to Irish -# Copyright (C) 2009 Free Software Foundation, Inc. +# translation of bash.po to Irish +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Séamus Ó Ciardhuáin , 2009. +# Séamus Ó Ciardhuáin , 2009, 2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-02-05 17:02-0000\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-11-20 22:38+0000\n" "Last-Translator: Séamus Ó Ciardhuáin \n" "Language-Team: Irish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ga\n" -"X-Generator: Poedit 1.7.4\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" "(n>6 && n<11) ? 3 : 4;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: aitreabúid nameref (tagairt athróga) á baint" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" "%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ní \" é an chéad charachtar nach spás bán é." +msgstr "%s: ní \" an chéad charachtar nach spás bán é." -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" -msgstr "Níl \"%c\" dúnta i %s" +msgstr "Níl '%c' dúnta i %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" +"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %d eilimint" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "níl eagarthóireacht líne cumasaithe" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach " +msgstr "'%s': ainm neamhbhailí ar mhapa eochrach " -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ní féidir léamh: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": ní féidir dícheangail" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "\"%s\": ainm feidhme neamhaithnid" +msgstr "'%s': ainm feidhme neamhaithnid" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "Níl %s ceangailte le heochair ar bith.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "Is féidir %s a ghlaoigh trí " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': ní féidir dícheangail" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "comhaireamh lúibe" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "Gan chiall ach i lúb \"for\", \"while\" nó \"until\"" +msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'" #: builtins/caller.def:136 msgid "" @@ -148,236 +150,236 @@ msgstr "" " \n" " Gan SLONN, aischuirtear " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "An iomarca argóintí" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "Níl comhadlann eile ann" +msgstr "comhadlann neamhnitheach" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Níl OLDPWD socruithe" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "líne %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "rabhadh: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: argóint uimhriúil de dhíth" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ainm neamhbhailí rogha" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" -msgstr "\"%s\": ní aitheantóir bailí é" +msgstr "'%s': ní aitheantóir bailí é" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "uimhir ochtnártha neamhbhailí" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "uimhir neamhbhailí" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sonrú neamhbhailí comhartha" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "\"%s\": ní aitheantas próisis nó sonrú jab bailí é" +msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: athróg inléite amháin" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s as raon" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argóint" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s as raon" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: níl a léithéid de jab ann." +msgstr "%s: níl a léithéid de tasc ann." -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: gan rialú jabanna." +msgstr "%s: gan rialú tascanna." -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" -msgstr "Gan rialú jabanna." +msgstr "Gan rialú tascanna." -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: srianta" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "srianta" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ní ordú ionsuite blaoisce é." -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "earráid scríofa: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á socrú: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á fáil: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: sonrú jab athbhríoch" +msgstr "%s: sonrú taisc athbhríoch" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "Níl cabhair ar fáil sa leagan seo." #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: ainm neamhbhailí gnímh" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: níl sonrú iomlánaithe ann." -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" +"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: tagairt ainm ciorclach" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" -msgstr "Ní féidir \"-f\" a úsáid chun feidhmeanna a dhéanamh" +msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: feidhm inléite amháin" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ní féidir athróga eagair a scrios mar seo." -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -401,6 +403,8 @@ msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" #, c-format msgid "load function for %s returns failure (%d): not loaded" msgstr "" +"theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor " +"luchtáladh é" #: builtins/enable.def:512 #, c-format @@ -412,71 +416,71 @@ msgstr "%s: níl sé luchtaithe go dinimiciúil" msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ní gnáthchomhad é" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ní féidir rith: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" -msgstr "Ní blaosc logála isteach é seo: úsáid \"exit\"" +msgstr "Ní blaosc logála isteach é seo: úsáid 'exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" -msgstr "Tá jabanna stoptha ann.\n" +msgstr "Tá tascanna stoptha ann.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" -msgstr "Tá jabanna ag rith.\n" +msgstr "Tá tascanna ag rith.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "Níor aimsíodh ordú" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Sonrú staire" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ní féidir comhad sealadach a oscailt: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "reatha" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" -msgstr "Thosaigh jab %d gan rialú jabanna." +msgstr "Tosaíodh tasc %d gan rialú tascanna." #: builtins/getopt.c:110 #, c-format @@ -488,44 +492,43 @@ msgstr "%s: rogha neamhdhleathach -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: tá argóint riachtanach don rogha -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "Tá haiseáil díchumasaithe." -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tá an tábla haiseála folamh.\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "amais\tordú\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal \"" -msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail \"" +msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal '" +msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[2] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[3] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" msgstr[4] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" " -"nó \"man -k %s\" nó \"info %s\"." +"Ní mheaitseálann ábhar cabhrach ar bith '%s'. Bain triail as 'help help' nó " +"'man -k %s' nó 'info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,28 +540,29 @@ msgid "" "\n" msgstr "" "Tá na horduithe blaoisce seo sainmhínithe go hinmheánach.\n" -"Usáid \"help\" leis an liosta seo a thaispeáint.\n" -"Úsáid \"help ainm\" chun tuilleadh eolais a fháil faoin bhfeidhm \"ainm\".\n" -"Úsáid \"info bash\" chun tuilleadh eolais a fháil faoin mblaosc féin.\n" -"Úsáid \"man -k\" nó \"info\" chun tuilleadh eolais a fháil faoi ordaithe " -"nach bhfuil sa liosta seo.\n" +"Usáid 'help' leis an liosta seo a thaispeáint.\n" +"Úsáid 'help ainm' chun tuilleadh eolais a fháil faoin bhfeidhm 'ainm'.\n" +"Úsáid 'info bash' chun tuilleadh eolais a fháil faoin mblaosc féin.\n" +"Úsáid 'man -k' nó 'info' chun tuilleadh eolais a fháil faoi ordaithe nach " +"bhfuil sa liosta seo.\n" "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid." -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "suíomh staire" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: argóint neamhbhailí" +msgstr "%s: stampa ama neamhbhailí" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: theip ar fhairsingiú staire." @@ -570,18 +574,18 @@ msgstr "%s: theip ar inlib" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "Níl roghanna eile ceadaithe le \"-x\"" +msgstr "Níl roghanna eile ceadaithe le '-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó jab" +msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "Ag súil le slonn" @@ -590,69 +594,69 @@ msgstr "Ag súil le slonn" msgid "%s: not an indexed array" msgstr "%s: ní eagar innéacsaithe é" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" -msgstr "\"%s\": carachtar formáide ar iarraidh." +msgstr "'%s': carachtar formáide ar iarraidh." -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" -msgstr "\"%c\": sonrú neamhbhailí formáide ama" +msgstr "'%c': sonrú neamhbhailí formáide ama" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" -msgstr "\"%c\": carachtar formáide neamhbhailí." +msgstr "'%c': carachtar formáide neamhbhailí." -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "fadhb i bpársáil formáide: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "digit Unicode ar iarraidh le haghaidh \\%c" @@ -666,19 +670,19 @@ msgstr "Níl comhadlann eile ann" msgid "%s: invalid argument" msgstr "%s: argóint neamhbhailí" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" -msgstr "cruach fholamh chomhadlainne" +msgstr "cruach chomhadlainne fholamh" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" -msgstr "innéacs cruaiche comhadlainne" +msgstr "innéacs chruach na gcomhadlann" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -701,8 +705,28 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" - -#: builtins/pushd.def:718 +"Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú 'pushd'. Is féidir dul\n" +" siar trín liosta leis an ordú 'popd'.\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid. -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó " +"thaobh deas\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó náid." + +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -727,7 +751,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -748,68 +772,68 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "earráid léite: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -"ní féidir \"return\" a dhéanamh ach ó fheidhm nó ó script rite le \"source\"" +"ní féidir 'return' a dhéanamh ach ó fheidhm nó ó script rite le 'source'" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna." -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ní feidhm é." -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: ní féidir díshocrú" +msgstr "%s: ní féidir easpórtáil" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna." -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "Is gá don argóint bheith ina ainm comhaid." -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: níor aimsíodh an comhad" @@ -822,61 +846,61 @@ msgstr "Ní féidir cur ar fionraí." msgid "cannot suspend a login shell" msgstr "Ní féidir blaosc logála isteach a chur ar fionraí." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "Tá %s ailiasáilte go \"%s\".\n" +msgstr "Tá %s ailiasáilte go '%s'.\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "Is eochairfhocal blaoisce é %s.\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "Is feidhm é %s.\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "Is ordú ionsuite blaoisce é %s\n" +msgstr "Is ordú ionsuite blaoisce speisialta é %s\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "Is ordú ionsuite blaoisce é %s\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "Tá %s %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "Tá %s haiseáilte (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argóint teorann neamhbhailí" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "\"%c\": droch-ordú" +msgstr "'%c': droch-ordú" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ní féidir teorainn a fháil: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "teorainn" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ní féidir teorainn a athrú: %s" @@ -888,214 +912,219 @@ msgstr "uimhir ochtnártha" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "\"%c\": oibreoir neamhbhailí móid shiombalaigh" +msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "\"%c\": carachtar neamhbhailí móid shiombalaigh" +msgstr "'%c': carachtar neamhbhailí móid shiombalaigh" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " líne " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "Ordú deireanach: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ag tobscor..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "EOLAS: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "earráid ordaithe neamhaithnid" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "droch-chineál ordaithe" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "drochnascóir" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "drochléim" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aimithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "FORMÁID_AMA: \"%c\": carachtar formáide neamhbhaií." +msgstr "FORMÁID_AMA: '%c': carachtar formáide neamhbhaií." -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "" +msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "" +msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" +msgstr "%s: srianta: ní féidir '/' a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ní féidir comhad dénártha a rith: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" -msgstr "Is ordú ionsuite speisialta é \"%s\"" +msgstr "Is ordú ionsuite speisialta é '%s'" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" "Ní féidir an tuairisceoir comhaid %d a dhúbailt mar thuairisceoir comhaid %d." -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "imithe thar leibhéal athchursála sloinn" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "gannsreabhadh na cruaiche athchúrsála" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "Earráid chomhréire sa slonn." -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "Deineadh iarracht sannadh go rud nach athróg é." -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "Earráid chomhréire sa slonn." + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "roinnt ar 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "fabht: droch-chomhartha expassign" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" -msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh." +msgstr "Bhíothas ag súil le ':' le haghaidh sloinn choinníollaigh." -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "Easpónant níos lú ná 0." -#: expr.c:976 +#: expr.c:1004 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:1002 +#: expr.c:1030 msgid "missing `)'" -msgstr "\")\" ar iarraidh" +msgstr "')' ar iarraidh" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (comhartha earráide \"%s\")" +msgstr "%s%s%s: %s (comhartha earráide '%s')" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" "ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " "%d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "Ní féidir tuairisceoir comhaid nua a leithdháileadh le haghaidh ionchur bash " "ón tuairisceoir comhaid %d." -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1106,153 +1135,158 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "tá an aitheantas an phróisis ghabhlaithe %d sa jab %d atá ag rith" +msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "Tá an jab stoptha %d leis an ngrúpa próisis %ld á scrios." +msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios." -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: próiseas %5ld (%s) sa phíblíne" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Déanta" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo." -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: tá an jab %d stoptha." +msgstr "wait_for_job: tá an tasc %d stoptha." -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" -msgstr "%s: tá an jab críochnaithe." +msgstr "%s: tá an tasc críochnaithe." -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" -msgstr "%s: tá an jab %d sa chúlra cheana." +msgstr "%s: tá an tasc %d sa chúlra cheana." -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: araíonacht líne" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "ní féidir grúpa próisis teirminéil a shocrú (%d)" +msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" -msgstr "Níl rialú jabanna sa bhlaosc seo." +msgstr "Níl rialú tascanna sa bhlaosc seo." -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: dearbhú teipthe: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1261,39 +1295,39 @@ msgstr "" "\r\n" "malloc: %s:%d: dearbhú ina phraiseach\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "neamhaithnid" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc ar an liosta saor scriosta" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: glaoite le argóint bhloic á saoradh cheana" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: ní ionann méid na smután túis agus deiridh" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" @@ -1336,22 +1370,22 @@ msgstr "%s: drochshonrú conaire líonra" msgid "network operations not supported" msgstr "Ní thacaítear le oibríochtaí líonra." -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" @@ -1369,269 +1403,273 @@ msgstr "Tá ríomhphost nua agat i $_" msgid "The mail in %s has been read\n" msgstr "Tá an ríomhphost i %s léite\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "Earráid chomhréire: \";\" gan súil leis." +msgstr "Earráid chomhréire: ';' gan súil leis." -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "Earráid chomhréire: \"((%s))\"" +msgstr "Earráid chomhréire: '((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: drochchineál ordaithe %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -"cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " -"lorg)" +"cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid ('%s' á lorg)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." +msgstr "make_redirection: ordú atreoraithe '%d' as raon." -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX (%" +"lu): líne giorraithe" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "imithe thar uasfhad na cáipéise-anseo" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg." +msgstr "Deireadh comhaid gan súil leis agus '%c' a mheaitseálann á lorg." -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" -msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." +msgstr "Deireadh comhaid gan súil leis agus ']]' á lorg." -#: parse.y:4415 +#: parse.y:4586 #, 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." +msgstr "Earráid chomhréire i slonn coinníollach: comhartha '%s' gan suil leis." -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "Comhartha \"%s\" gan súil leis; ag súil le \")\"." +msgstr "Comhartha '%s' gan súil leis; ag súil le ')'." -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" -msgstr "Ag súil le \")\"" +msgstr "Ag súil le ')'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach." +msgstr "Argóint '%s' gan súil lei go hoibreoir aonártha coinníollach." -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4579 +#: parse.y:4750 #, 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 " +"Comhartha '%s' gan súil leis. Bhíothas ag súil le hoibreoir coinníollach " "dénártha." -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "Argóint \"%s\" gan súil lei go hoibreoir dénártha coinníollach." +msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "Comhartha \"%c\" gan súil leis in ordú coinníollach." +msgstr "Comhartha '%c' gan súil leis in ordú coinníollach." -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." +msgstr "Comhartha '%s' gan súil leis in ordú coinníollach." -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "" -"Earráid chomhréire in aice comhartha \"%s\" nach rabhthas ag súil leis." +msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis." -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" -msgstr "Earráid chomhréire in aice \"%s\"" +msgstr "Earráid chomhréire in aice '%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Úsáid \"%s\" le scoir den mblaosc.\n" +msgstr "Úsáid '%s' le scoir den mblaosc.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" -msgstr "Deireadh comhaid gan súil leis agus \")\" á lorg le meaitseáil." +msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil." -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "Iomlánú: níor aimsíodh an fheidhm \"%s\"." +msgstr "Iomlánú: níor aimsíodh an fheidhm '%s'." -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith ann" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: drochnascóir \"%d\"" +msgstr "print_command: drochnascóir '%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: pointeoir folamh comhaid" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: \"%c\": carachtar formáide neamhbhailí" +msgstr "cprintf: '%c': carachtar formáide neamhbhailí" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú." -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " -"%d" +"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir " +"éifeachtach %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " -"%d" +"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir " +"éifeachtach %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" +"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe." -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: is comhadlann é" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1640,53 +1678,52 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -"Úsáid %s -c \"help set\" le haghaidh tuilleadh eolais faoi roghanna " -"blaoisce.\n" +"Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -"Úsáid \"%s -c help\" le haghaidh tuilleadh eolais faoi orduithe ionsuite " +"Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite " "blaoisce.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Úsáid an t-ordú \"bashbug\" le tuarascáil a sheoladh faoi fhabht.\n" +msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "leathanach baile bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Cabhair ghinearálta le bogearraí GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" @@ -1860,21 +1897,21 @@ msgstr "Comhartha neamhaithnid #" msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "Drochionadú: níl \"%s\" dúnta i %s" +msgstr "Drochionadú: níl '%s' dúnta i %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." @@ -1894,72 +1931,78 @@ msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "drochionadú: níl \"`\" dúnta i %s" +msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid " "1." -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: drochionadú" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: comhaireamh neamhbhailí línte" +msgstr "%s: fairsingiú neamhbhailí indíreach" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" +msgstr "%s: ainm neamhbhailí athróige" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: slonn fotheaghráin < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: drochionadú" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta " +"éigeantach" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "drochionadú: níl \"`\" dúnta i %s" +msgstr "drochionadú: níl '`' dúnta i %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" @@ -1975,37 +2018,37 @@ msgstr "%s: ag súil le slonn slánuimhreach." #: test.c:265 msgid "`)' expected" -msgstr "Ag súil le \")\"" +msgstr "Ag súil le ')'" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "Ag súil le \")\", ach fuarthas %s." +msgstr "Ag súil le ')', ach fuarthas %s." -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:869 +#: test.c:873 msgid "missing `]'" -msgstr "\"]\" ar iarraidh" +msgstr "']' ar iarraidh" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2013,85 +2056,84 @@ msgstr "" "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " "athsheoladh chugam féin." -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" -msgstr "Earráid agus sainmhíniú na feidhme \"%s\" á iompórtáil." +msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil." -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1." -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha." -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ní féidir luach a shannadh ar an athróg" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" -msgstr "" +msgstr "%s: slánuimhir a sannadh go tagairt ainm" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha" -#: variables.c:4218 -#, fuzzy, c-format +#: variables.c:4437 +#, c-format msgid "%s has null exportstr" -msgstr "%s: paraiméadar neamhnitheach nó gan socrú." +msgstr "Tá teaghrán easpórtála neamhnitheach ag %s" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" -msgstr "Níl \"=\" sa teaghrán easpórtála le haghaidh %s." +msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" -#: variables.c:5624 -#, fuzzy, c-format +#: variables.c:5867 +#, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" +msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe" -#: variables.c:5669 -#, fuzzy, c-format +#: variables.c:5912 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s as raon" +msgstr "%s: %s: luach comhoiriúnachta as raon" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Cóipcheart © 2013 Free Software Foundation, Inc." +msgstr "Cóipcheart © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2115,23 +2157,23 @@ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" "Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ní féidir %lu beart a leithdháileadh" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" "%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh" @@ -2149,6 +2191,9 @@ msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" +"bind [-lpsvPSVX] [-m MAPA_EOCHRACH] [-f AINM_CHOMHAID] [-q AINM] [-u AINM] [-" +"r SRAITH_EOCHRACHA] [-x SRAITH_EOCHRACHA:ORDÚ_BLAOISCE] [SRAITH_EOCHRACHA:" +"GNÍOMH_readline nó ORDÚ_readline]" #: builtins.c:56 msgid "break [n]" @@ -2180,12 +2225,11 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" #: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [ainm[=luach] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] ainm[=luach] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] ainm[=luach] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2213,7 +2257,7 @@ msgstr "getopts teaghrán_roghanna ainm [argóint]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a ainm] [ordú [argóintí ...]] [atreorú ...]" +msgstr "exec [-cl] [-a AINM] [ORDÚ [ARGÓINTÍ ...]] [ATREORÚ ...]" #: builtins.c:100 msgid "exit [n]" @@ -2230,11 +2274,11 @@ msgstr "" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [SONRÚ_JAB]" +msgstr "fg [SONRÚ_TAISC]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [SONRÚ_JAB ...]" +msgstr "bg [SONRÚ_TAISC ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2254,20 +2298,19 @@ msgstr "" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [SONRÚ_JAB ...] nó jobs -x ORDÚ [ARGÓINTÍ]" +msgstr "jobs [-lnprs] [SONRÚ_TAISC ...] nó jobs -x ORDÚ [ARGÓINTÍ]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [SONRÚ_JAB ...]" +msgstr "disown [-h] [-ar] [SONRÚ_TAISC ... | AITHEANTAS_PRÓISIS ...]" #: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s sonrú_comhartha | -n uimhir_chomhartha | -sonrú_comhartha] " -"aitheantóir_próisis | sonrú_jab ... nó kill -l [sonrú_comhartha]" +"kill [-s SONRÚ_COMHARTHA | -n UIMHIR_CHOMHARTHA | -SONRÚ_COMHARTHA] " +"AITHEANTAS_PRÓISIS | SONRÚ_TAISC ... nó kill -l [SONRÚ_COMHARTHA]" #: builtins.c:136 msgid "let arg [arg ...]" @@ -2296,7 +2339,7 @@ msgstr "unset [-f] [-v] [-n] [ainm ...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [ainm[=luach] ...] nó export -p" +msgstr "export [-fn] [AINM[=LUACH] ...] nó export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" @@ -2308,7 +2351,7 @@ msgstr "shift [n]" #: builtins.c:152 msgid "source filename [arguments]" -msgstr "source comhadainm [argóintí]" +msgstr "source AINM_COMHAID [ARGÓINTÍ]" #: builtins.c:154 msgid ". filename [arguments]" @@ -2335,21 +2378,21 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ainm [ainm ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [teorainn]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "umask [-p] [-S] [mód]" +msgstr "umask [-p] [-S] [MÓD]" #: builtins.c:177 -msgid "wait [-n] [id ...]" -msgstr "wait [-n] [aitheantas ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" +msgstr "wait [-n] [AITHEANTAS ...]" #: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [aitheantas_próisis ...]" +msgstr "wait [AITHEANTAS_PRÓISIS ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2381,7 +2424,7 @@ msgstr "" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" -msgstr "while ORDUITHE; do ORDUITHE; done" +msgstr "while ORDUITHE1; do ORDUITHE2; done" #: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" @@ -2389,7 +2432,7 @@ msgstr "until ORDUITHE; do ORDUITHE; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [AINM] ordú [atreoruithe]" +msgstr "coproc [AINM] ORDÚ [ATREORUITHE]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" @@ -2401,7 +2444,7 @@ msgstr "{ ORDUITHE ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "sonrú_jab [&]" +msgstr "SONRÚ_TAISC [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2429,7 +2472,7 @@ msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o] [ainm_rogha ...]" +msgstr "shopt [-pqsu] [-o] [AINM_ROGHA ...]" #: builtins.c:228 msgid "printf [-v var] format [arguments]" @@ -2446,34 +2489,36 @@ msgstr "" "iarmhír] [ainm ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o rogha] [-A gníomh] [-G patrún] [-W " "liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " -"iarmhír] [FOCAL]" +"iarmhír] [focal]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o rogha] [-DE] [ainm ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" -msgstr "a" +msgstr "" +"mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] " +"[-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "t" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] [-u " +"TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2494,22 +2539,20 @@ msgid "" msgstr "" "Sainigh nó taispeáin ailiasanna.\n" " \n" -" Gan argóintí, priontálann \"alias\" an liosta ailiasanna san fhoirm\n" -" \"alias LUACH=VALUE\" ar an ngnáth-aschur.\n" +" Gan argóintí, priontáiltear an liosta ailiasanna san fhoirm\n" +" ath-inúsáidte 'alias AINM=LUACH' ar an ngnáth-aschur.\n" " \n" " I ngach cás eile, sainítear ailias do gach AINM a thugtar LUACH dó.\n" " Má tá spás chun deiridh LUACH, déantar an chéad fhocal eile a sheiceáil\n" " le haghaidh ionadú ailias nuair a fhairsingítear an ailias.\n" " \n" " Roghanna:\n" -" -p\tPriontáil gach ailias sainithe i bhfoirm inathúsáidte.\n" +" -p\tPriontáiltear gach ailias sainithe i bhfoirm ath-inúsáidte.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear an luach true mura thugtar AINM nach bhfuil\n" -" ailias sainithe dó." +" Aischuirtear fíor mura dtugtar AINM nach bhfuil ailias sainithe dó." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2521,7 +2564,7 @@ msgstr "" "Bain gach AINM de liosta na n-ailiasanna sainithe.\n" " \n" " Roghanna:\n" -" -a\tbain gach sainiú ailias.\n" +" -a\tbaintear gach sainiú ailias.\n" " \n" " Aischuirtear rath ach sa chás nach bhfuil AINM ann." @@ -2579,7 +2622,7 @@ msgid "" msgstr "" "Scoir de lúba for, while nó until.\n" " \n" -" Scoir de lúb \"for\", \"while\" \"nó \"until\". Má shonraítear N, scoir\n" +" Scoir de lúb 'for', 'while' nó 'until'. Má shonraítear N, scoir\n" " de N lúb mhórthimpeall.\n" " \n" " Stádas Scortha:\n" @@ -2597,8 +2640,8 @@ msgid "" msgstr "" "Lean ar aghaidh le lúba for, while nó until.\n" " \n" -" Tosaigh an chéad atriall eile den lúb mhórthimpeall \"for\", \"while\" " -"nó \"until\".\n" +" Tosaigh an chéad atriall eile den lúb mhórthimpeall 'for', 'while' nó " +"'until'.\n" " Má shonraítear N, tosaigh an Nú lúb mhórthimpeall.\n" " \n" " Stádas Scortha:\n" @@ -2619,15 +2662,15 @@ msgid "" msgstr "" "Rith orduithe ionsuite na blaoisce.\n" " \n" -" Rith ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n" -" ordaithe a dhéanamh. Tá sé seo úsáideach más mian leat ordú blaoisce a\n" +" Ritear ORDÚ-IONSUITE-BLAOISCE leis na hargóintí ARGÓINTÍ gan cuardach\n" +" ordaithe a dhéanamh. Tá sé seo úsáideach más mian ordú blaoisce a\n" " athshainiú mar fheidhm bhlaoisce agus gur ghá an t-ordú ionsuite a rith\n" " laistigh den fheidhm.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa mura " -"bhfuil\n" -" ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." +" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa sa chás " +"nach\n" +" bhfuil ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." #: builtins.c:369 msgid "" @@ -2646,12 +2689,12 @@ msgid "" msgstr "" "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" " \n" -" Gan SLONN, aischuirtear \"$line $filename\". Le SLONN, aischuirtear\n" -" \"$line $subroutine $filename\"; is féidir lorg cruaiche a sholáthar " +" Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n" +" '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar " "leis an\n" " fhaisnéis bhreise seo.\n" " \n" -" Taispeánann an luach atá ag SLONN an méis frámaí glaoigh le dul siar\n" +" Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n" " roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n" " \n" " Stádas Scortha:\n" @@ -2705,7 +2748,6 @@ msgid "" msgstr "" #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2724,13 +2766,14 @@ msgstr "" " \n" " Roghanna:\n" " -L\tpriontáil luach $PWD má thugann sé ainm na comhadlainne\n" -" \toibre reatha. -P\tpriontáil an chomhadlann fhisiciúil, gan naisc " -"shiombalacha\n" +" \toibre reatha.\n" +" -P\tpriontáil an chomhadlann fhisiciúil, gan naisc shiombalacha\n" " \n" -" Mar réamhshocrú, oibríonn \"pwd\" faoi mar a bheadh \"-L\" sonraithe.\n" +" Mar réamhshocrú, oibríonn 'pwd' faoi mar a bheadh '-L' sonraithe.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear luach de 0 mura thugtar rogha neamhbhailí nó mura féidir\n" +" Aischuirtear luach de 0 ach sa chás go dtugtar rogha neamhbhailí nó nach " +"féidir\n" " an chomhadlann reatha a léamh." #: builtins.c:442 @@ -2774,7 +2817,6 @@ msgstr "" " Teipeann air i gcónaí." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2794,21 +2836,21 @@ msgid "" msgstr "" "Rith ordú simplí nó taispeáin eolas maidir le horduithe.\n" " \n" -" Ritheann ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó " -"taispeánann\n" +" Ritear ORDÚ le hARGÓINTÍ gan cuardach feidhme blaoisce, nó taispeántar\n" " eolas maidir leis na horduithe sonraithe. Is féidir é seo a úsáid chun " "orduithe ar\n" " diosca a rith má tá feidhm leis an ainm céanna ann.\n" " \n" " Roghanna:\n" -" -p\túsáid luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " +" -p\túsáidtear luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " "cinnte\n" " \tgach ceann de na gnáthríomhchláir áirge.\n" -" -v\ttaispeáin cur síos ar ORDÚ cosúil leis an ordú ionsuite \"type\"\n" -" -V\ttaispeáin cur síos níos faide de gach ORDÚ\n" +" -v\ttaispeántar cur síos ar ORDÚ cosúil leis an ordú ionsuite 'type'\n" +" -V\ttaispeántar cur síos níos faide ar gach ORDÚ\n" " \n" " Stádas Scortha:\n" -" Aischuirtear an stádas scortha ó ORDÚ, nó teip mura aimsítear ORDÚ." +" Aischuirtear an stádas scortha ó ORDÚ, nó teip sa chás nach n-aimsítear " +"ORDÚ." #: builtins.c:490 msgid "" @@ -2829,11 +2871,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2851,7 +2893,6 @@ msgid "" msgstr "" #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2859,10 +2900,9 @@ msgid "" msgstr "" "Socraigh luachanna agus airíonna athróg.\n" " \n" -" Imithe i léig. Feic \"help declare\"." +" Comhchiallach de 'declare'. Feic 'help declare'." #: builtins.c:538 -#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2881,19 +2921,18 @@ msgstr "" " Cruthaítear athróg logánta darbh ainm AINM, agus cuirtear LUACH leis. " "Is\n" " féidir le ROGHA a bheith ceann ar bith de na roghanna a ghlacann " -"\"declare\" leo.\n" +"'declare' leo.\n" " \n" " Ní féidir athróga logánta a úsáid ach laistigh de fheidhm. Tá siad " "infheicthe\n" " san fheidhm ina shainítear iad agus a mic amháin.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath mura thugtar rogha neamhbhailí, nó mura tharlaíonn " -"earráid,\n" -" nó mura bhfuil an bhlaosc ag rith feidhme." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go " +"dtarlaíonn earráid,\n" +" nó go bhfuil an bhlaosc ag rith feidhme." #: builtins.c:555 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2928,17 +2967,20 @@ msgid "" msgstr "" "Scríobh na hargóintí ar an ngnáthaschur.\n" " \n" -" Taispeáin na hARGÓINTÍ ar an ngnáthaschur agus líne nua ina ndiadh.\n" +" Taispeántar na hARGÓINTÍ ar an ngnáthaschur le carachtair spáis eatarthu " +"agus\n" +" líne nua ina ndiadh.\n" " \n" " Roghanna:\n" -" -n\tná hiarcheangail líne nua\n" -" -n\tcumasaigh na héaluithe cúlslaise -E\tdíchumasaigh na " -"héaluithe cúlslaise \n" -" Tuigeann \"echo\" na carachtair éalaithe le cúlslais seo a leanas:\n" +" -n\tní hiarcheanglaítear líne nua\n" +" -e\tcumasaítear na héaluithe cúlslaise thíos\n" +" -E\tdíchumasaítear na héaluithe cúlslaise\n" +" Tuigeann 'echo' na carachtair éalaithe le cúlslais seo a leanas:\n" " \\a\tairdeall (clog)\n" " \\b\tcúlspás\n" " \\c\tcur deireadh le aschur\n" " \\e\tcaractar éalaithe\n" +" \\E\tcaractar éalaithe\n" " \\f\tfotha foirme\n" " \\n\tlíne nua\n" " \\r\taisfhilleadh carráiste\n" @@ -3087,6 +3129,25 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Cuir an t-ordú sonraithe in áit na blaoisce.\n" +" \n" +" Ritear ORDÚ, agus an ríomhchlár sonraithe curtha in áit na blaoisce " +"seo.\n" +" Úsáidtear na hARGÓINTÍ mar argóintí don ORDÚ. Gan ÓRDÚ, cuirtear\n" +" atreoruithe i bhfeidhm sa bhlaosc reatha.\n" +" \n" +" Roghanna:\n" +" -a AINM\túsáidtear AINM mar argóint uimhir a náid don ORDÚ.\n" +" -c\tritear ORDÚ le timpeallacht fholamh\n" +" -l\tcuirtear fleiscín mar argóint uimhir a náid don ORDÚ.\n" +" \n" +" Sa chás nach féidir an t-ordú a rith, scoirfidh blaosc " +"neamhidirghníomhach,\n" +" mura bhfuil an rogha blaoisce 'execfail' socruithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfaightear ORDÚ nó go dtarlaíonn\n" +" earráid atreoraithe." #: builtins.c:709 msgid "" @@ -3158,12 +3219,12 @@ msgstr "" " -n\tfág uimhreacha na línte ar lár agus liosta á thaispeáint\n" " -r\taisiompaigh ord na línte (.i. liostaigh an ceann is nuaí ar dtús)\n" " \n" -" San fhormáid \"fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]\", ath-ritear ORDÚ\n" +" San fhormáid 'fc -s [PATRÚN=IONADAÍ ...] [ORDÚ]', ath-ritear ORDÚ\n" " tar éis an t-ionadú SEAN=NUA a dhéanamh.\n" " \n" -" Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann \"r cc\" an t-" -"ordú is deireanaí\n" -" a thosaíonn le \"cc\", agus ath-ritheann \"r\" an t-ordú is deireanaí.\n" +" Ailias úsáideach is ea r='fc -s', sa chaoi go ritheann 'r cc' an t-ordú " +"is deireanaí\n" +" a thosaíonn le 'cc', agus ath-ritheann 'r' an t-ordú is deireanaí.\n" " \n" " Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; " "neamh-nialas má tharlaíonn earráid." @@ -3179,15 +3240,16 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Bog jab go dtí an tulra.\n" +"Bog tasc go dtí an tulra.\n" " \n" -" Cuir an jab a shonraítear le SONRÚ_JAB sa tulra agus é mar an jab " +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc " "reatha.\n" -" Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na " +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " "blaoisce.\n" " \n" " Stádas Scortha:\n" -" Stádas an ordaithe curtha sa tulra, nó teip má tharlaíonn earráid." +" Aischuirtear stádas an ordaithe a cuireadh sa tulra, nó teip má " +"tharlaíonn earráid." #: builtins.c:773 msgid "" @@ -3202,16 +3264,16 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Bog jabanna go dtí an cúlra.\n" +"Bog tascanna go dtí an cúlra.\n" " \n" -" Cuir an jab a shonraítear le SONRÚ_JAB sa chúlra cosúil le é a thosú le " -"\"&\".\n" -" Mura bhfuil SONRÚ_JAB ann, úsáidtear cibé jab atá reatha de réir na " +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa chúlra cosúil le é a " +"thosú le '&'.\n" +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " "blaoisce.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath ach má tharlaíonn earráid nó mura bhfuil\n" -" rialú jabanna cumasaithe." +" Aischuirtear rath ach sa chás go dtarlaíonn earráid nó nach bhfuil\n" +" rialú tascanna cumasaithe." #: builtins.c:787 msgid "" @@ -3253,7 +3315,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3267,9 +3329,10 @@ msgstr "" " i gcásanna eile taispeántar liosta na n-ábhar cabhrach.\n" " \n" " Roghanna:\n" -" -d\ttaispeáin cur síos gairid ar gach ábhar\n" -" -m\ttaispeáin úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n" -" -s\tná taispeáin ach achoimre gairid úsáide le haghaidh gach ábhair a\n" +" -d\ttaispeántar cur síos gairid ar gach ábhar\n" +" -m\ttaispeántar úsáid i bhformáid cosúil leis an lámhleabhar man(1)\n" +" -s\tní thaispeántar ach achoimre gairid úsáide le haghaidh gach ábhair " +"a\n" " \tmheatseálann PATRÚN\n" " \n" " Argóintí:\n" @@ -3288,7 +3351,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3313,7 +3377,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3336,9 +3400,31 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" - -#: builtins.c:899 -#, fuzzy +"Taispeáin stádas tascanna.\n" +" \n" +" Liostáiltear na tascanna gníomhacha. Le SONRÚ_TAISC, ní thaispeántar ach " +"an tasc sin.\n" +" Gan roghanna, taispeántar stádas gach tasc gníomhach.\n" +" \n" +" Roghanna:\n" +" -l\tliostáiltear aitheantais na bpróiseas chomh maith leis an ngnáth-" +"eolas.\n" +" -n\tní liostáiltear ach na próisis le stádas athruithe ón chéad fógra " +"roimhe seo\n" +" -p\tliostáiltear aitheantais na bpróiseas amháin\n" +" -r\tní liostáiltear ach tascanna atá ag rith\n" +" -s\tní liostáiltear ach tascanna atá stoptha\n" +" \n" +" Le -x, ritear ORDÚ tar éis gach SONRÚ_TAISC atá in ARGÓINTÍ a athrú go " +"aitheantas\n" +" próisis an phríomh-phróisis i ngrúpa próiseas an taisc sin.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbailí nó go " +"dtarlaíonn earráid.\n" +" Má úsáidtear -x, aischuirtear an stádas scortha ó ORDÚ. " + +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3354,22 +3440,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Bain jabanna den mblaosc reatha.\n" +"Bain tascanna den mblaosc reatha.\n" " \n" -" Baintear gach SONRÚ_JAB den tábla de jabanna gníomhacha. Gan\n" -" SONRÚ_JAB ar bith úsáidtear an jab atá reatha dar leis an mblaosc.\n" +" Baintear gach SONRÚ_TAISC den tábla de tascanna gníomhacha. Gan\n" +" SONRÚ_TAISC ar bith úsáidtear an tasc atá reatha dar leis an mblaosc.\n" " \n" " Roghanna:\n" -" -a\tbain gach jab mura sholáraítear SONRÚ_JAB\n" -" -h\tmarcáil gach SONRÚ_JAB sa chaoi nach seolfar SIGHUP chuige má\n" +" -a\tbaintear gach tasc mura sholáraítear SONRÚ_TAISC\n" +" -h\tmarcáiltear gach SONRÚ_TAISC sa chaoi nach seolfar SIGHUP chuige " +"má\n" " \tfhaigheann an bhlaosc féin SIGHUP\n" -" -r\tná bain ach jabanna atá ag rith\n" +" -r\tní bhaintear ach tascanna atá ag rith\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí\n" -" nó SONRÚ_JAB neamhbhailí." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó " +"SONRÚ_TAISC neamhbhailí." -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3392,7 +3479,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3437,7 +3524,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3458,7 +3545,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3489,7 +3576,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3511,7 +3598,7 @@ msgstr "" " Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " "nó scripte." -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3597,7 +3684,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3619,7 +3706,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3637,8 +3724,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Socraigh an aitreabúid easpórtála le haghaidh athróga blaoisce.\n" +" \n" +" Marcáiltear gach AINM le haghaidh easpórtáil uathoibríoch go dtí " +"timpeallacht\n" +" na n-orduithe a ritear ina dhiaidh sin. Má sonraítear LUACH, sann LUACH\n" +" roimh easpórtáil.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear an aitreabúid i bhfeidhm ar feidhmeanna blaoisce\n" +" -n\tbaintear an aitreabúid ó gach AINM\n" +" -p\tpriontáiltear liosta de athróga agus feidhmeanna easpórtáilte\n" +" \n" +" Cuireann argóint de '--' deireadh le próiseáil na hargóintí.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil " +"AINM neamhbhailí." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3659,7 +3763,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3670,7 +3774,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3683,8 +3787,19 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Rith orduithe ó chomhad sa bhlaosc reatha.\n" +" \n" +" Léitear agus ritear orduithe ó AINM_CHOMHAID sa bhlaosc reatha.\n" +" Úsáidtear na hiontrálacha i $PATH chun an chomhadlann ina bhfuil\n" +" AINM_CHOMHAID a aimsiú. Má shonraítear ARGÓINTÍ, cuirtear iad mar\n" +" paraiméadair ionaid agus AINM_CHOMHAID á rith.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh in " +"AINM_COMHAID.\n" +" Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3697,8 +3812,21 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Cuir rith na blaoisce ar fionraí.\n" +" \n" +" Cuirtear rith na blaoisce seo ar fionraí go dtí go bhfaigheann sí\n" +" comhartha SIGCONT. Gan iallach, ní féidir blaosc logála isteach a\n" +" chur ar fionraí.\n" +" \n" +" Roghanna:\n" +" -f\tcuirtear iallach ar an t-ordú, fiú más blaosc logála isteach atá " +"ann.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n" +" nó go dtarlaíonn earráid." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3781,7 +3909,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3790,11 +3918,11 @@ msgid "" msgstr "" "Luacháil slonn coinníollach.\n" " \n" -" Leasainm é seo ar an ordú blaoisce ionsuite \"test\", ach\n" -" caithfear \"]\" go díreach a bheith ann mar an argóint\n" -" dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús." +" Leasainm é seo ar an ordú blaoisce ionsuite 'test', ach\n" +" caithfear ']' go díreach a bheith ann mar an argóint\n" +" dheireanach, le bheith comhoiriúnach leis an '[' ag an tús." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3814,7 +3942,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3858,7 +3986,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3888,7 +4016,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3937,7 +4065,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3954,8 +4082,25 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Taispeáin nó socraigh masc mhód na gcomhad.\n" +" \n" +" Athraítear masc cruthaithe comhaid an úsáideora go MÓD. Gan MÓD,\n" +" taispeáintear luach reatha an mhaisc.\n" +" \n" +" Ma thosaíonn MÓD le digit, glactar leis mar uimhir ochtnártha;\n" +" i gcásanna eile is teaghrán móid shiombalaigh é cosúil leis na cinn\n" +" a ghlacann chmod(1) leo.\n" +" \n" +" Roghanna:\n" +" -p\tgan mód, bíodh an aschur i bhformáid atá inúsáidte mar ionchur\n" +" -S\taschur siombalach; seachas sin aschuirfear uimhir ochtnártha\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n" +" nó go sonraítear rogha neamhbhailí." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3963,19 +4108,41 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Fan go gcríochnaíonn tasc agus aischuir an stádas scortha.\n" +" \n" +" Fantar le gach próiseas ata sonraithe le AITHEANTAS, a d'fhéadann a " +"bheith\n" +" ina aitheantas próisis nó sonrú taisc, agus tuairiscítear a stádais " +"chríochnaithe.\n" +" Gan AITHEANTAS, fantar le gach macphróiseas gníomhach reatha, agus " +"aischuirtear 0.\n" +" Más sonrú taisc atá in AITHEANTAS, fantar le gach próiseas i bpíblíne an " +"taisc sin.\n" +" \n" +" Má sonraítear an rogha -n, fantar leis an gcéad tasc eile a stopann " +"agus\n" +" aischuirtear a stádais scortha.\n" +" \n" +" \n" +"Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " +"tá\n" +" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3989,8 +4156,21 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Fan go gcríochnaíonn próiseas agus aischuir an stádas scortha.\n" +" \n" +" Fantar le gach próiseas ata sonraithe le AITHEANTAS, agus tuairiscítear\n" +" a stádais chríochnaithe. Gan AITHEANTAS, fantar le gach macphróiseas " +"gníomhach\n" +" reatha, agus aischuirtear 0. Ní mór d'AITHEANTAS bheith ina aitheantas " +"próisis.\n" +" \n" +" \n" +"Stádas Scortha:\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " +"tá\n" +" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4002,8 +4182,17 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe le haghaidh gach mír i liosta.\n" +" \n" +" Ritheann an lúb 'for' sraith ordaithe le haghaidh gach mír i liosta\n" +" míreanna. Gan 'in WORDS ...;', úsáidtear 'in \"$@\"'.\n" +" Le haghaidh gach eilimint i bhFOCAIL, tugtar an luach sin do AINM agus\n" +" ritear na hORDUITHE.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4024,7 +4213,7 @@ msgstr "" " Mar an gcéanna le\n" " \t(( SLONN1 ))\n" " \twhile (( SLONN2 )); do\n" -" \t\tORDAITHE\n" +" \t\tORDUITHE\n" " \t\t(( SLONN3 ))\n" " \tdone\n" " Is sloinn uimhreachtúla iad SLONN1, SLONN2 agus SLONN3.\n" @@ -4034,7 +4223,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4054,7 +4243,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4070,7 +4259,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4080,8 +4269,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe de réir mheaitseála patrún.\n" +" \n" +" Ritear ORDUITHE de réir mar a mheaitseálann FOCAL an PATRÚN.\n" +" Úsáidtear '|' chun na patrúin a dheighilt.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4102,7 +4298,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4112,8 +4308,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe chomh fada agus a éiríonn le tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE2 chomh fada agus atá stádas scortha\n" +" de náid ag an t-ordú deireanach sna hORDUITHE1 a leanann 'while'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4123,8 +4326,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Rith orduithe chomh fada agus a theipeann ar tástáil.\n" +" \n" +" Fairsingítear agus ritear ORDUITHE chomh fada agus atá stádas scortha\n" +" nach náid é ag an t-ordú deireanach sna hORDUITHE 'until'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4136,8 +4346,17 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" +"Cruthaigh comhphróiseas ainmnithe AINM.\n" +" \n" +" Ritear ORDÚ go haisioncronach. Beidh gnáthaschur agus gnáthionchur\n" +" an ordaithe ceangailte trí phíopa le tuairisceoirí comhaid a bheidh\n" +" sannta do innéacsanna 0 agus 1 de eagar athróga ainmnithe AINM sa\n" +" bhlaosc atá ag rith. Is é \"COPROC\" an tAINM réamhshocraithe.\n" +" \n" +" Stádas Scortha:\n" +" Aischuireann an t-ordú coproc stádas scortha de 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4161,7 +4380,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4179,7 +4398,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4192,8 +4411,17 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" - -#: builtins.c:1708 +"Tosaigh tasc arís sa tulra.\n" +"\n" +" Is ionann é seo agus an argóint SONRÚ_TAISC don ordú 'fg'.\n" +" Atosaítear tasc atá stoptha nó sa chúlra. Sonraíonnn SONRÚ_TAISC\n" +" ainm nó uimhir taisc. Má leanann '&' SONRÚ_TAISC, ritear an tasc sa\n" +" chúlra, cosúil leis an tasc a chur mar argóint le 'bg'.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear stádas an taisc atosaithe." + +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4204,7 +4432,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -4232,7 +4460,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4286,7 +4514,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -4317,7 +4545,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4344,7 +4572,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4372,15 +4600,43 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Taispeáin cruach na gcomhadlann.\n" +" \n" +" Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" +" Cuirtear comhadlanna ar an liosta leis an ordú 'pushd'. Is féidir dul\n" +" siar trín liosta leis an ordú 'popd'.\n" +" \n" +" Roghanna:\n" +" -c\tglantar cruach na gcomhadlann trí gach mhír a bhaint de\n" +" -l\tná priontáiltear na comhadlanna i gcoibhneas le do chomhadlann " +"bhaile\n" +" \tagus le tilde rompu\n" +" -p\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne\n" +" -v\tpriontáiltear cruach na gcomhadlann, mír amháin ar gach líne agus\n" +" \ta háit sa chruach roimpi\n" +" \n" +" Argóintí:\n" +" +N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"clé\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" -N\tTaispeántar mír N, agus uimhrithe curtha ar na míreanna ó thaobh " +"deas\n" +" \tan liosta a thaispeántar le 'dirs' rite gan argóintí, ag tosú ó " +"náid.\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla " +"earráid." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4393,8 +4649,25 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"Socraigh agus díshocraigh roghanna na blaoisce.\n" +" \n" +" Athraítear socrú gach rogha blaoisce AINM_ROGHA. Gan argóintí roghnacha " +"ar bith,\n" +" liostáiltear gach rogha blaoisce lena stádas socruithe nó díshocraithe.\n" +" \n" +" Roghanna:\n" +" -o\tbíodh AINM_ROGHA srianta dóibh siúd atá inúsáidte le 'set -o'\n" +" -p\tpriontáiltear gach rogha blaoisce le comhartha dá stádas\n" +" -q\tcuir cosc ar aschur\n" +" -s\tcumasaigh (socraigh) gach AINM_ROGHA\n" +" -u\tdíchumasaigh (díshocraigh) gach AINM_ROGHA\n" +" \n" +" Stádas Scortha:\n" +" Aischuirtear rath má tá AINM_ROGHA cumasaithe. Teipeann ar shopt má " +"thugtar\n" +" rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4433,7 +4706,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4460,7 +4733,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4474,16 +4747,16 @@ msgid "" msgstr "" "Taispeáin na hiomlánaithe atá ar fáil de réir na roghanna.\n" " \n" -" Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a chruthaíonn " +" Tá sé seo ceaptha le húsáid i bhfeidmeanna blaoisce a dhéanann " "iomlánaithe.\n" -" Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n" -" atá comhoiriúnach le FOCAL.\n" +" Má thugtar an argóint roghnach FOCAL, cruthaítear iomlánaithe\n" +" atá comhoiriúnach le FOCAL.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear rath mura thugtar rogha neamhbhailí agus mura tharlaíonn " -"earráid." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go " +"dtarlaíonn earráid." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4514,7 +4787,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4556,7 +4829,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4564,11 +4837,10 @@ msgid "" msgstr "" "Léigh línte ó chomhad agus cuir in athróg eagair iad.\n" " \n" -" Comhchiallach le \"mapfile\"." +" Comhchiallach le 'mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Cóipcheart © 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -4582,9 +4854,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." - #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" diff --git a/po/gl.gmo b/po/gl.gmo index de9d0aedb..eb001f926 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 7e101ced4..53c4ef182 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2012-02-23 14:38+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" @@ -21,123 +21,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa non válido" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: non é posíbel asignar a un índice que non é numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: non foi posíbel crear: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: non foi posíbel atopar a combinación de teclas " "para a orde" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "no hai un `%c' que peche en %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de alias non válido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "no se activó a edición de liña" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de combinación de teclas non válido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: non se pode leer: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "%s: non se pode borrar a asignación" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de función descoñecido" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non está asignado a ningunha tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pódese invocar a través de " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "%s: non se pode borrar a asignación" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "contía de ciclo" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "só ten significado nun ciclo `for', `while' ou `until'" @@ -151,163 +152,163 @@ msgstr "" " \n" " Sen EXPR, devovle " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME non está definido" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "non hai outro directorio" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD non está definido" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "liña %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opción require un argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: requírese un argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: non se atopou" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opción non válida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opción non válido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': non é un identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal non válido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número hexadecimal non válido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "número non válido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificación de sinal non válida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': no é un pid ou unha especificación válida de traballo" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variábel de só lectura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fóra de rango" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fóra de rango" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: non existe ese traballo" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: no hai control de traballos" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "no ha control de traballos" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restrinxido" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restrinxido" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no é una orde interna do shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erro de escritura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao estabelecer os atributos da terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obtener os atributos da terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obtener o directorio actual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de traballo ambigüa" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -316,69 +317,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: nome de acción non válido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: non hai completado de especificación" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "aviso: é posíbel que a opción -F non funcione como se espera" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "aviso: é posíbel que a opción -C non funcione como se espera" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "non se está executando a función de completado" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "só se pode usar dentro dunha función" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "`%s': nome de alias non válido" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "non se pode use `-f' para facer funcións" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: función de só lectura" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: non é posíbel destruír variábeis de matriz desta forma" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" @@ -412,68 +413,68 @@ msgstr "%s: non foi cargado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: non foi posíbel eliminar: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: é un directorio" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: non é un ficheiro regular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: o ficheiro é demasiado grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: non é posíbel executar o ficheiro binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: non foi posíbel executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "non é un shell de entrada: use `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Hai traballos pendentes.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Hay traballos en execución.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "non foi posíbel atopar a orde" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificación de historial" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: non é posíbel abrir o ficheiro temporal: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "o traballo %d iniciou sen control de traballo" @@ -488,28 +489,27 @@ msgstr "%s: opción ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opción require un argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: táboa de asociación baleira\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "coinc\torde\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Orde do shell que coincide coa palabra `" msgstr[1] "Orde do shell que coincide coas palabras `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -517,12 +517,12 @@ msgstr "" "non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k %s» " "ou «info %s»" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: non foi posíbel abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -543,20 +543,21 @@ msgstr "" "Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "non foi posíbel usar máis dun de -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posición no historial" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: límite de argumento non válido" +msgstr "%s: nome de opción non válido" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: fallou a expansión do historial" @@ -570,16 +571,16 @@ msgstr "%s: fallou inlib" msgid "no other options allowed with `-x'" msgstr "non se permiten outras opcións con «-x»" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: os argumentos deben ser procesos ou IDs de traballos" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Erro descoñecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "agardábase unha expresión" @@ -588,69 +589,69 @@ msgstr "agardábase unha expresión" msgid "%s: not an indexed array" msgstr "%s: non é unha matriz indizada" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descritor de ficheiro non válida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro non válido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: conta de liñas non válida" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: orixe de matriz non válido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de chamada non válido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome de variábel de matriz baleiro" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "requírese a compatibilidade de variábel de matriz" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta o carácter de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tempo non válida" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato non válido" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "falta o díxito hexadecimal para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta o díxito unicode para \\%c" @@ -664,19 +665,19 @@ msgstr "non hai outro directorio" msgid "%s: invalid argument" msgstr "%s: límite de argumento non válido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "a pila de directorios está baleira" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índice da pila de directorios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -720,7 +721,7 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -762,7 +763,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -802,45 +803,45 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tempo de expiración non válida" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "erro de lectura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "só se pode usar «return» nunha función ou guión lido con «source»" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: non é posíbel borrar" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: non é posíbel borrar: %s é de só lectura" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: non é unha variábel de matriz" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: non é unha función" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: non é posíbel borrar" @@ -849,20 +850,20 @@ msgstr "%s: non é posíbel borrar" msgid "shift count" msgstr "conta de shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opción do shell non válido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "requírese un argumento de nome de ficheiro" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: non se atopou o ficheiro" @@ -875,61 +876,61 @@ msgstr "non é posíbel suspender" msgid "cannot suspend a login shell" msgstr "non é posíbel suspender un shell de entrada" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s é un alias de `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é unha palabra chave do shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s é unha función\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s é unha orde interna do shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é unha orde interna do shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento non válido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': orde errónea" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: non é posíbel obter o límite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: non é posíbel modificar o límite: %s" @@ -948,205 +949,210 @@ msgstr "`%c': operador de modo simbólico non válido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico non válido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " liña " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "última orde: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erro de orde descoñecido" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo de orde erróneo" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "conector erróneo" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salto erróneo" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sen asignar" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato non válido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "erro de canalización" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: non se atopou a orde" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: non é posíbel executar o ficheiro binario" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s é unha orde interna do shell\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se pode duplicar o df %d ao df %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "excedeuse o nivel de recursión da expresión" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "desbordamento da base da pila de recursión" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "erro de sintaxe na expresión" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "tentouse asignar a algo que non é unha variábel" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na expresión" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "división entre 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "erro: elemento de asignación de expresión erróneo" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "agardábase `:' para a expresión condicional" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "expoñente menor que 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "agardábase un identificador despois do pre-incremento ou pre-decremento" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "erro de sintaxe: agardábase un operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético non válido" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "base aritmética non válida" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valor demasiado grande para a base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expresión\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: non é posíbel acceder aos directorios pai" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "non é posíbel asignar un novo descritor de ficheiros para a entrada de bash " "desde o fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1156,153 +1162,158 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "o pid `forked' %d aparece no traballo en execución %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando o trabajo detido %d con grupo de proceso %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: o proceso %5ld (%s) en the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) márcase como vivo aínda" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: non existe tal pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Feito" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Detido" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Detido(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "En execución" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Saída %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Estado descoñecido" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(«core» xerado) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (dir agora: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid fillo (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld non é un proceso fillo desta shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Non hai un rexistro do proceso %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: o traballo %d está detido" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: o traballo rematou" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabajo %d xa está en segundo plano" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: liña %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " («core» generado)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(dir agora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: fallou getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_jobs_control: disciplina de liña" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "non hai control de trabalos nesta shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: fallou a aserción: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1311,40 +1322,40 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "descoñecido" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque na lista libre sobreescrito" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: chamouse cun argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: os tamaños dos anacos de inicio e fin son diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes" @@ -1386,23 +1397,23 @@ msgstr "%s: especificación de ruta de rede errónea" msgid "network operations not supported" msgstr "non hai compatibilidade para operacións de rede" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" "setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s" @@ -1420,149 +1431,149 @@ msgstr "Ten unha nova mensaxe en $_" msgid "The mail in %s has been read\n" msgstr "O correo en %s foi lido\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxe: requírese unha expresión aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' non esperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrución %d erróneo" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `%" "s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mentres se buscaba `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "error sintáctico na expresión condicional" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', agardábase `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "agardábase `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para o operador unario condicional" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para o operador unario condicional" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', agardábase un operador binario condicional" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "agardábase un operador binario condicional" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para o operador binario condicional" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para o operador binario condicional" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' na orde condicional" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' na orde condicional" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d na orde condicional" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxe perto do elemento inesperado `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe cerca de «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "error de sintaxe: non se agardaba o final do fichero" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use «%s» para deixar o shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non agardado mentres se buscaba un «)» coincidente" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: non se atopa a función `%s'" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1572,109 +1583,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC nulo" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector erróneo `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descriptor de fichero non válido" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: punteiro a ficheiro NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato non válido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descritor de ficheiro fóra de rango" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambigüo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: non se pode sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrinxido: no se pode redirixir a saída" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "non se pode crear un fichero temporal para o documento-aquí: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: non é posíbel asignar o gd á variábel" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirección: non é posíbel duplicar o fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "non é posíbel atopar /tmp, por favor creeo!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nome de directorio válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción non válida" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: é un directorio" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Non teño nome!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,54 +1698,54 @@ msgstr "" "Uso:\t%s [opción GNU longa] [opción] ...\n" "\t%s [opción GNU longa] [opción] guión-do-shell\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opcións GNU longas:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcións do shell:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opción\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Escriba `%s -c \"help set\"' para máis información sobre as opcións do " "shell.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Escriba `%s -c help' para máis información sobre as ordes internas do " "shell.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use a orden `bashbug' para reportar erros.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación non válida" @@ -1904,21 +1919,21 @@ msgstr "Sinal descoñecido #" msgid "Unknown Signal #%d" msgstr "Sinal descoñecido #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "susbtitución errónea: non hai un `%s' que peche en %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no é posíbel asignar unha lista a un membro da matriz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "non é posíbel crear a tubería para a sustitución do proceso" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" @@ -1937,59 +1952,64 @@ msgstr "non é posíbel abrir a tubería chamada %s para escritura" msgid "cannot duplicate named pipe %s as fd %d" msgstr "non é posíbel duplicar a tubería chamada %s como df %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "non é posíble crear a tubería para a substitución da orde" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "non é posíbel crear un proceso fillo para a substitución da orde" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substitución errónea" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: conta de liñas non válida" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': nome de alias non válido" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parámetro nulo ou non estabelecido" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo ou non estabelecido" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadea < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitución errónea" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: non é posíbel asignar de esta forma" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1997,12 +2017,12 @@ msgstr "" "versiones futuras do intérprete obligarán a evaluación como unha " "substitución aritmética" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "non hai concidencia: %s" @@ -2025,30 +2045,30 @@ msgstr "agardábase `)'" msgid "`)' expected, found %s" msgstr "`)' agardábase, atopouse %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: agardábase un operador unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: agardábase un operador binario" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "falta un «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de sinal non válido" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2056,79 +2076,79 @@ msgstr "" "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " "mesmo" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errónea %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definición da función para «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: non hai contexto de función no ámbito actual" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: non é posíbel asignar o gd á variábel" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: non hai contexto de función no ámbito actual" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s ten exportstr nulo" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter non válido %d en exportsrt para %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "non hai «=» en exportstr para %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: a cabezak de shell_variables non é un contexto de función" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: non é un contexto global_variables " -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: non é posíbel abrir como FICHEIRO" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fóra de rango" @@ -2161,22 +2181,22 @@ msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non hai GARANTÍA, á extensión permitida pola ley.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: non é posíbel asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: non é posíbel asignar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: non é posíbel asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: non é posíbel asignar %lu bytes" @@ -2395,13 +2415,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2519,9 +2539,10 @@ msgstr "" "quantum] [matriz]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " "quantum] [matriz]" @@ -2904,11 +2925,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3249,7 +3270,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3265,7 +3286,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3290,7 +3312,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3314,7 +3336,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3331,7 +3353,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3354,7 +3376,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3399,7 +3421,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3420,7 +3442,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3451,7 +3473,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3463,7 +3485,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3549,7 +3571,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3571,7 +3593,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3590,7 +3612,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3611,7 +3633,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3622,7 +3644,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3636,7 +3658,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3662,7 +3684,7 @@ msgstr "" " Devolve con éxito a menos que non estea activo o control de traballos o\n" " se produza un erro." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3745,7 +3767,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3757,7 +3779,7 @@ msgstr "" " Este é un sinónimo para a orde interna \"test\", pero o último\n" " argumento debe ser un `]' literal, que coincida co `[' inicial." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3776,7 +3798,7 @@ msgstr "" " Estado de saída:\n" " Sempre con éxito." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3820,7 +3842,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3850,7 +3872,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3899,7 +3921,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3917,8 +3939,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 -#, fuzzy +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3926,28 +3947,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -"Agarda a terminación do traballo e devolve o estado de saída.\n" -" \n" -" Espera ao proceso especificado e reporta o seu estado de saída. Se\n" -" non se fornece un PID, agarda a todos os procesos fillo activos,\n" -" e o código de devolución é cero. PID debe ser un ID de proceso.\n" -" \n" -" Estado de Saída:\n" -" Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" -" opción non válida." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -3972,7 +3986,7 @@ msgstr "" " Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n" " opción non válida." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3994,7 +4008,7 @@ msgstr "" " Estado de Saída:\n" " Devuelve o estado da última orden executada." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4024,7 +4038,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4044,7 +4058,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4060,7 +4074,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4078,7 +4092,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4099,7 +4113,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4117,7 +4131,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4135,7 +4149,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4158,7 +4172,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado de saída da ORDE." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4172,7 +4186,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4190,7 +4204,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4204,7 +4218,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4222,7 +4236,7 @@ msgstr "" " Estado de Saída:\n" " Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -4250,7 +4264,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4304,7 +4318,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4353,7 +4367,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4400,7 +4414,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -4450,14 +4464,14 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4487,7 +4501,7 @@ msgstr "" " Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n" " unha opción non válida ou NOME_OPCIÓN está desactivado." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4526,7 +4540,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4553,7 +4567,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4575,7 +4589,7 @@ msgstr "" " Devolve con éxito a menos que se forneza unha opción non válida o\n" " se produza un erro." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4606,7 +4620,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4648,7 +4662,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4658,9 +4672,15 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" #~ msgid ":" #~ msgstr ":" @@ -4673,20 +4693,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" diff --git a/po/hr.gmo b/po/hr.gmo index cc117fe74..18f860f22 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index f914d13a3..7d2125b91 100644 --- a/po/hr.po +++ b/po/hr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2013-04-18 01:00+0200\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" @@ -15,123 +15,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Gtranslator 2.91.6\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "neispravan indeks polja" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ne mogu pretvoriti indeksirano u asocijativno polje" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neispravan ključ asocijativnog polja" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ne mogu pridružiti nenumeričkom indeksu" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: mora koristiti indeks pri pridruživanju asocijativnog polja" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ne mogu napraviti: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: ne mogu pronaći tipkovničku mapu za naredbu" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak različit od praznine nije „\"”" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "nema zatvorene „%c” u %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: nedostaje dvotočje za razdvajanje" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s”: neispravno drugo ime" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "uređivanje redaka nije omogućeno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s”: neispravno ime tipkovničke mape" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ne mogu čitati: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s”: ne mogu ukloniti vezu" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s”: nepoznato ime funkcije" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nije pridružen nijednoj tipki.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se može pozvati pomoću " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s”: ne mogu ukloniti vezu" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "broj ponavljanja" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ima značenje samo u petljama „for”, „while” ili „until”" @@ -145,163 +146,163 @@ msgstr "" " \n" " Bez IZRAZA vraća " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME nije postavljen" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "previÅ¡e argumenata" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "nema drugog direktorija" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD nije postavljen" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "redak %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "upozorenje: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: potreban je numerički argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nije pronađen" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: neispravna opcija" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: neispravno ime opcije" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s”: nije ispravan identifikator" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neispravan oktalni broj" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "neispravan heksadekadski broj" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "neispravan broj" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neispravno naveden signal" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s”: nije pid ili ispravno naveden zadatak" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: varijabla samo za čitanje" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je izvan granica" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s je izvan granica" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: nema takvog zadatka" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nema kontrole zadataka" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nema kontrole zadataka" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ograničeno" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ograničeno" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nije ugrađen u ljusku" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "greÅ¡ka pisanja: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "greÅ¡ka pri postavljanju svojstava terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "greÅ¡ka pri preuzimanju svojstava terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: greÅ¡ka pri otkrivanju trenutnog direktorija: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: viÅ¡eznačan navod zadatka" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -310,69 +311,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: neispravno ime radnje" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: nije navedeno nadopunjavanje" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "upozorenje: opcija -F možda neće raditi kako želite" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "upozorenje: opcija -C možda neće raditi kako želite" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "trenutno ne izvrÅ¡avam funkciju nadopunjavanja" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "„%s”: neispravno drugo ime" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "ne mogu koristiti „-f” za izradu funkcija" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za čitanje" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ne mogu uniÅ¡titi varijable polja na ovaj način" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ne mogu pretvoriti asocijativno u indeksirano polje" @@ -406,68 +407,68 @@ msgstr "%s: nije dinamički učitan" msgid "%s: cannot delete: %s" msgstr "%s: ne mogu ukloniti: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: to je direktorij" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obična datoteka" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ne mogu izvrÅ¡iti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "nije prijavna ljuska: koristite „exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Ima zaustavljenih zadataka.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Ima pokrenutih zadataka.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "naredba nije pronađena" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "specifikacija povijesti" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ne mogu otvoriti privremenu datoteku: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "trenutno" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "zadatak %d pokrenut bez kontrole zadataka" @@ -482,29 +483,28 @@ msgstr "%s: nedozvoljena opcija -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcija zahtijeva argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "rasprÅ¡ivanje onemogućeno" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tablica rasprÅ¡ivanja prazna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "pogoci\tnaredba\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Naredbe ljuske koje odgovaraju ključnoj riječi „" msgstr[1] "Naredbe ljuske koje odgovaraju ključnim riječima „" msgstr[2] "Naredbe ljuske koje odgovaraju ključnim riječima „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -512,12 +512,12 @@ msgstr "" "nisu pronađene teme pomoći za „%s”. PokuÅ¡ajte „help help”, „man -k %s” ili " "„info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ne mogu otvoriti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "Zvjezdica (*) pokraj imena označava onemogućenu naredbu.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "ne mogu koristiti viÅ¡e od jedne od opcija -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "mjesto u povijesti" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: neispravan argument ograničenja" +msgstr "%s: neispravno ime opcije" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: proÅ¡irenje povijesti nije uspjelo" @@ -564,16 +565,16 @@ msgstr "%s: inlib nije uspio" msgid "no other options allowed with `-x'" msgstr "nisu dozvoljene druge opcije uz „-x”" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenti moraju biti identifikatori procesa ili zadataka" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nepoznata greÅ¡ka" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "očekujem izraz" @@ -582,69 +583,69 @@ msgstr "očekujem izraz" msgid "%s: not an indexed array" msgstr "%s: nije indeksirano polje" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neispravno naveden opisnik datoteke" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neispravan opisnik datoteke: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: neispravan broj redaka" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: neispravan izvor polja" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neispravan element povratnog poziva" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "potrebna je podrÅ¡ka varijable polja" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s”: nedostaje znak oblika" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c”: neispravno naveden oblik vremena" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: neispravan znak oblika" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "nedostaje heksadekadska znamenka za \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unicode znamenka za \\%c" @@ -658,19 +659,19 @@ msgstr "nema drugog direktorija" msgid "%s: invalid argument" msgstr "%s: neispravan argument ograničenja" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "stog direktorija je prazan" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indeks stoga direktorija" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -714,7 +715,7 @@ msgstr "" "naredba\n" "\t„dirs” pozvana bez opcija, počevÅ¡i od nule." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -739,7 +740,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -760,45 +761,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neispravno navedeno vremensko ograničenje" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "greÅ¡ka čitanja: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "pozivanje „return” je moguće samo iz funkcije ili pokrenute skripte" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "ne mogu istovremeno poniÅ¡titi funkciju i varijablu" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: ne mogu poniÅ¡titi" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ne mogu poniÅ¡titi: %s je samo za čitanje" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla polja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nije funkcija" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ne mogu poniÅ¡titi" @@ -807,20 +808,20 @@ msgstr "%s: ne mogu poniÅ¡titi" msgid "shift count" msgstr "broj pomaka" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "ne mogu istovremeno postaviti i poniÅ¡titi opcije ljuske" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neispravno ime opcije ljuske" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "potrebno je ime datoteke kao argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: datoteka nije pronađena" @@ -833,61 +834,61 @@ msgstr "ne mogu zaustaviti" msgid "cannot suspend a login shell" msgstr "ne mogu zaustaviti prijavnu ljusku" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je drugo ime za „%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je ključna riječ ljuske\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s je ugrađen u ljusku\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je ugrađen u ljusku\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je rasprÅ¡en (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neispravan argument ograničenja" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c”: neispravna naredba" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ne mogu otkriti ograničenje: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ograničenje" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ne mogu urediti ograničenje: %s" @@ -906,202 +907,207 @@ msgstr "„%c”: neispravan operator simboličkog načina" msgid "`%c': invalid symbolic mode character" msgstr "„%c”: neispravan znak simboličkog načina" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " redak " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "posljednja naredba: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Prekidam..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nepoznata greÅ¡ka naredbe" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "neispravna vrsta naredbe" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "neispravno spajanje" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "neispravan skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nepovezana varijabla" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\avrijeme čekanja ulaza je isteklo: automatska-odjava\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ne mogu preusmjeriti standardni ulaz iz /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c”: neispravan znak oblika" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "greÅ¡ka cjevovoda" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograničeno: ne možete navesti „/” u imenu naredbe" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: neispravan tumač" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je ugrađen u ljusku\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ne mogu udvostručiti opisnik datoteke %d u opisnik datoteke %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "razina rekurzije izraza je prekoračena" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "podljev stoga rekurzije" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "sintaksna greÅ¡ka u izrazu" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "pokuÅ¡aj pridruživanja ne-varijabli" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "sintaksna greÅ¡ka u izrazu" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "dijeljenje s 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "greÅ¡ka: neispravan simbol expassign" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "očekujem „:” za uvjetni izraz" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponent je manji od 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "očekujem identifikator nakon pred-povećanja ili pred-smanjenja" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "nedostaje „)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "sintaksna greÅ¡ka: očekujem operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksna greÅ¡ka: neispravan aritmetički operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (simbol greÅ¡ke je „%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "neispravna aritmetička baza" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: greÅ¡ka izraza\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ne mogu pristupiti nadređenim direktorijima" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "ne mogu alocirati novi datotečni opisnik za bash ulaz iz fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: međuspremnik već postoji za novi fd %d" @@ -1110,192 +1116,197 @@ msgstr "save_bash_input: međuspremnik već postoji za novi fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razdvojen pid %d se javlja u pokrenutom zadatku %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "uklanjam zaustavljeni zadatak %d s grupom procesa %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) u the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) označen kao joÅ¡ živ" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ne postoji takav pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Gotovo" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Zaustavljen" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljen(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Pokrenut" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Nepoznato stanje" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(jezgra izbačena) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nije dijete ove ljuske" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ne postoji zapis o procesu %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadatak %d je zaustavljen" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: zadatak je dovrÅ¡en" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadatak %d je već u pozadini" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (jezgra izbačena)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(sadaÅ¡nji wd: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nije uspio" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne mogu postaviti grupu procesa terminala (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "nema kontrole zadataka u ovoj ljusci" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "nepoznato" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: pozvan s argumentom već oslobođenog bloka" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: pozvan s argumentom nealociranog bloka" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: otkriven podljev, mh_nbytes izvan granica" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: pozvan s argumentom nealociranog bloka" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: otkriven podljev, mh_nbytes izvan granica" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1337,22 +1348,22 @@ msgstr "%s: neispravno navedena mrežna putanja" msgid "network operations not supported" msgstr "mrežne operacije nisu podržane" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ne mogu promijeniti lokal (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne mogu promijeniti lokal (%s): %s" @@ -1370,147 +1381,147 @@ msgstr "Imate novu poÅ¡tu u $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta u %s je pročitana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "sintaksna greÅ¡ka: potreban aritmetički izraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "sintaksna greÅ¡ka: neočekivana „;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksna greÅ¡ka: „((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: neispravna vrsta instrukcije %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekivani EOF pri traženju odgovarajućeg „%c”" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "neočekivani EOF pri traženju „]]”" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu: neočekivani simbol „%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekivani simbol „%s”, očekujem „)”" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "očekujem „)”" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekivani argument „%s” uvjetnom unarnom operatoru" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "neočekivani argument uvjetnom unarnom operatoru" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekivani simbol „%s”, očekujem uvjetni binarni operator" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "očekujem uvjetni binarni operator" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekivani argument „%s” uvjetnom binarnom operatoru" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "neočekivani argument uvjetnom binarnom operatoru" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekivani simbol „%c” u uvjetnoj naredbi" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekivani simbol „%s” u uvjetnoj naredbi" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekivani simbol %d u uvjetnoj naredbi" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksna greÅ¡ka kod neočekivanog simbola „%s”" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "sintaksna greÅ¡ka kod „%s”" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "sintaksna greÅ¡ka: neočekivani kraj datoteke" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "sintaksna greÅ¡ka" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Koristite „%s” za napuÅ¡tanje ljuske.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "neočekivani EOF pri traženju odgovarajuće „)”" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s” nije pronađena" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1520,109 +1531,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neispravan opisnik datoteke" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL pokazivač na datoteku" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "opisnik datoteke izvan granica" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: viÅ¡eznačno preusmjeravanje" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ne mogu pisati preko postojeće datoteke" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograničeno: ne mogu preusmjeriti izlaz" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ne mogu napraviti privremenu datoteku za here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "greÅ¡ka preusmjeravanja: ne mogu udvostručiti opisnik datoteke" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "ne mogu pronaći /tmp, molim, napravite ga!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti ispravno ime direktorija" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neispravna opcija" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: to je direktorij" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inačica %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1631,49 +1646,49 @@ msgstr "" "Uporaba: %s [GNU dugačka opcija] [opcija] ...\n" "\t %s [GNU dugačka opcija] [opcija] skripta ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU dugačke opcije:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcije ljuske:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Koristite naredbu „bashbug” za prijavljivanje greÅ¡aka.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1847,21 +1862,21 @@ msgstr "Nepoznat signal #" msgid "Unknown Signal #%d" msgstr "Nepoznat signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "neispravna zamjena: nema zatvorene „%s” u %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ne mogu pridružiti popis elementu polja" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "ne mogu napraviti cjevovod za zamjenu procesa" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "ne mogu napraviti dijete za zamjenu procesa" @@ -1880,71 +1895,76 @@ msgstr "ne mogu otvoriti imenovani cjevovod %s za pisanje" msgid "cannot duplicate named pipe %s as fd %d" msgstr "ne mogu udvostručiti imenovani cjevovod %s kao opisnik datoteke %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "neispravna zamjena: nema zatvorenog „`” u %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "ne mogu napraviti cjevovod za zamjenu naredbi" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "ne mogu napraviti dijete za zamjenu naredbi" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: neispravna zamjena" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neispravan broj redaka" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "„%s”: neispravno drugo ime" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametar prazan ili nije postavljen" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametar prazan ili nije postavljen" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: izraz podniza < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: neispravna zamjena" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ne mogu pridružiti na ovaj način" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "buduće inačice ljuske će prisiliti procjenu kao aritmetičku zamjenu" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "neispravna zamjena: nema zatvorenog „`” u %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "nema podudaranja: %s" @@ -1967,106 +1987,106 @@ msgstr "očekujem „)”" msgid "`)' expected, found %s" msgstr "očekujem „)”, naÅ¡ao %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekujem unarni operator" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekujem binarni operator" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "nedostaje „]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neispravan broj signala" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: neispravan signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "greÅ¡ka pri uvozu definicije funkcije za „%s”" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "razina ljuske (%d) je previsoka, vraćam na 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazan exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ne mogu otvoriti kao DATOTEKU" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je izvan granica" @@ -2099,22 +2119,22 @@ msgstr "Ovo je slobodan softver, slobodno ga smijete mijenjati i dijeliti.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ne mogu alocirati %lu bajtova" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova" @@ -2319,7 +2339,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:177 -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "" #: builtins.c:181 @@ -2433,8 +2453,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2700,11 +2720,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3017,7 +3037,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3033,7 +3053,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3058,7 +3079,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3082,7 +3103,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3099,7 +3120,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3122,7 +3143,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3167,7 +3188,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3188,7 +3209,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3219,7 +3240,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3231,7 +3252,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3317,7 +3338,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3339,7 +3360,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3358,7 +3379,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3379,7 +3400,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3390,7 +3411,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3404,7 +3425,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3418,7 +3439,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3501,7 +3522,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3509,7 +3530,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3521,7 +3542,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3565,7 +3586,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3595,7 +3616,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3644,7 +3665,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3662,7 +3683,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3670,19 +3691,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3697,7 +3720,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3710,7 +3733,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3727,7 +3750,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3747,7 +3770,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3763,7 +3786,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3774,7 +3797,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3795,7 +3818,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3806,7 +3829,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3817,7 +3840,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3830,7 +3853,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3844,7 +3867,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3855,7 +3878,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3869,7 +3892,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3880,7 +3903,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3908,7 +3931,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3962,7 +3985,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -3993,7 +4016,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4020,7 +4043,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -4070,14 +4093,13 @@ msgstr "" "naredba\n" "\t„dirs” pozvana bez opcija, počevÅ¡i od nule." -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4091,7 +4113,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4130,7 +4152,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4157,7 +4179,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4170,7 +4192,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4201,7 +4223,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4243,7 +4265,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4253,17 +4275,6 @@ msgstr "" " \n" " Sinonim za „mapfile”." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." - #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" @@ -4273,3 +4284,6 @@ msgstr "" #~ msgstr "" #~ "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" + +#~ msgid ":" +#~ msgstr ":" diff --git a/po/hu.gmo b/po/hu.gmo index a1b022e36..803da0399 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index c206a0eff..6000bd82e 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,140 +1,142 @@ # Hungarian translation for bash. -# Copyright (C) 2010, 2016 Free Software Foundation, Inc. +# Copyright (C) 2010, 2016, 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # # Mate Ory , 2010, 2016. # Gabor Kelemen , 2016. +# Balázs Úr , 2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-01-03 23:59+0100\n" -"Last-Translator: Mate Ory \n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-04-27 21:42+0200\n" +"Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hu\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 1.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "Hibás tömbindex" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: névhivatkozás attribútum eltávolítása" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: érvénytelen asszociatívtömb-index" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nem hozható létre: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nem található billentyűkiosztás a parancshoz" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: az első nem szóközkarakter nem „\"”" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "nincs záró „%c” a következőben: %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: hiányzó kettőspont-elválasztó" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %d elem számára" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" "szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s” számára" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s”: érvénytelen alias-név" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "nincs engedélyezve a sorszerkesztés" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s”: érvénytelen billentyűkiosztás-név" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nem olvasható a következő: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s”: nem lehetséges a kötés megszüntetése" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s”: ismeretlen függvénynév" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nincs kötve egy billentyűhöz sem.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s a következő módon hajtható végre: " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s”: nem lehetséges a kötés megszüntetése" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "ciklusszám" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "csak „for”, „while” és „until” ciklusokban értelmezhető" @@ -149,163 +151,162 @@ msgstr "" " \n" " EXPR nélkül a " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Nincs beállítva HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "túl sok argumentum" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "nincs másik könyvtár" +msgstr "null könyvtár" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Nincs beállítva OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d. sor: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "figyelmeztetés: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: használat: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a kapcsolónak kötelező argumentuma van" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: a kötelező argumentum egy szám" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nem található" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: érvénytelen kapcsoló" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: érvénytelen kapcsolónév" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s”: érvénytelen azonosító" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "érvénytelen oktális szám" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "érvénytelen hexadecimális szám" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "érvénytelen szám" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: érvénytelen szignálmegadás" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s”: nem pid vagy munkaazonosító" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: csak olvasható változó" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s kívül esik a tartományon" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentum" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s kívül esik a tartományon" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: nincs ilyen munka" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nincs munkakezelés" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nincs munkakezelés" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: korlátozott" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "korlátozott" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nem beépített parancs" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "írási hiba: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "hiba a terminálattribútum beállításakor: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "hiba a terminálattribútum lekérdezésekor: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: kétértelmű munkamegadás" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "ebben a verzióban nem érhető el súgó" @@ -314,69 +315,69 @@ msgstr "ebben a verzióban nem érhető el súgó" msgid "%s: invalid action name" msgstr "%s: érvénytelen műveletnév" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: nincs kiegészítés meghatározva" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "csak függvényben használható" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: a referenciaváltozó nem lehet tömb" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: körkörös névhivatkozás" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" +msgstr "„%s”: érvénytelen változónév a névhivatkozáshoz" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "nem használható a „-f” függvény létrehozására" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: csak olvasható függvény" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: az idézőjelezett összetett tömb értékadása elavult" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ilyen módon nem lehet tömböt megszüntetni" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" @@ -410,68 +411,68 @@ msgstr "%s: nem dinamikusan van betöltve" msgid "%s: cannot delete: %s" msgstr "%s: nem törölhető: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s egy könyvtár" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nem normál fájl" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: a fájl túl nagy" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: bináris nem hajtható végre" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nem hajtható végre: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "kijelentkezés\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "nem bejelentkező parancsértelmező: használja az „exit”-et" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Vannak leállított munkák.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Vannak futó munkák.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nincs ilyen parancs" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "előzményválasztás" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: az átmeneti fájl nem nyitható meg: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuális" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "a(z) %d. munka munkakezelés nélkül indult" @@ -486,28 +487,27 @@ msgstr "%s: érvénytelen kapcsoló – %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a kapcsolónak kötelező argumentuma van – %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "a hashelés le van tiltva" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: a hashtábla üres\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "t.szám\tparancs\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "A következő kifejezésre illeszkedő parancsok: „" msgstr[1] "A következő kifejezésekre illeszkedő parancsok: „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +515,12 @@ msgstr "" "nem illeszkedik egy szócikk sem a következőre: „%s”.\n" "A „help help”, „man -k '%s'” vagy „info '%s'” parancsok segíthetnek." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nem nyitható meg: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -539,20 +539,21 @@ msgstr "" "A parancs nevét követő csillag (*) azt jelzi, hogy le van tiltva.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "a következő kapcsolók kizárják egymást: -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "előzménypozíció" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: érvénytelen argumentum" +msgstr "%s: érvénytelen időbélyeg" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: sikertelen előzményből való kiegészítés" @@ -566,16 +567,16 @@ msgstr "%s: sikertelen inlib" msgid "no other options allowed with `-x'" msgstr "a „-x” mellett nem használható más kapcsoló" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Ismeretlen hiba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "az értelmező kifejezést várt" @@ -584,69 +585,69 @@ msgstr "az értelmező kifejezést várt" msgid "%s: not an indexed array" msgstr "%s: nem egy indexelt tömb" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: érvénytelen fájlleíró-megadás" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: érvénytelen fájlleíró: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: sorok száma érvénytelen" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: érvénytelen tömbkezdet" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: érvénytelen parancshívási távolság" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "üres tömbváltozó-név" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "a tömbök használata nincs támogatva" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s”: hiányzó formátumkarakter" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c”: érvénytelen időformátum-megadás" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: érvénytelen formátumkarakter" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "figyelmeztetés: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "formátumfeldolgozási probléma: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "hiányzó unicode számjegy a következőhöz: \\%c" @@ -660,19 +661,19 @@ msgstr "nincs másik könyvtár" msgid "%s: invalid argument" msgstr "%s: érvénytelen argumentum" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "a könyvtárverem üres" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "könyvtárveremindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" " \táltal megjelenített listán jobbról számolva, nullától kezdve." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +759,7 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -795,47 +796,47 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: érvénytelen időkorlát-megadás" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "olvasási hiba: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "csak függvényből vagy source-olt parancsfájlból lehet „return”-nel " "visszatérni" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "nem lehet egyszerre függvényt és változót megszüntetni" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: nem szüntethető meg" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nem szüntethető meg: csak olvasható %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: nem egy tömbváltozó" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nem függvény" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nem exportálható" @@ -844,21 +845,21 @@ msgstr "%s: nem exportálható" msgid "shift count" msgstr "shift-szám" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "nem lehet egyszerre beállítani és törölni parancsértelmező-beállításokat" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "fájlnévargumentum szükséges" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: a fájl nem található" @@ -871,61 +872,61 @@ msgstr "nem lehet szüneteltetni" msgid "cannot suspend a login shell" msgstr "nem lehet bejelentkező parancsértelmezőt szüneteltetni" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s egy alias a következőre: „%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s egy parancsértelmező-kulcsszó\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s egy függvény\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s egy speciális beépített parancs\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s egy beépített parancs\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s: %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s hashelve van (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: érvénytelen korlátérték" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c”: érvénytelen parancs" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nem kérdezhető le a korlát: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "korlát" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nem módosítható a korlát: %s" @@ -944,203 +945,208 @@ msgstr "„%c”: érvénytelen szimbolikus módoperátor" msgid "`%c': invalid symbolic mode character" msgstr "„%c”: érvénytelen szimbolikus módkarakter" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " sor: " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "utolsó parancs: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Megszakítás..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "hiba: érvénytelen parancs" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "hibás parancstípus" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "hibás csatlakozó" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "hibás ugrás" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: kötetlen változó" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aidőtúllépés bemenetre várva: automatikus kijelentkezés\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "IDŐFORMÁTUM: „%c”: érvénytelen formátumkarakter" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "hibás csővezeték" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: a maximális source beágyazási szint túllépve (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: korlátozott: nem adható meg „/” a parancsok nevében" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: parancs nem található" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: rossz parancsértelmező" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: a bináris nem hajtható végre: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "„%s”: egy speciális beépített parancs" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "a kifejezés rekurziókorlátot" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "alulcsordult a rekurziós verem" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "szintaktikai hiba a kifejezésben" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "nem változóhoz próbált értéket rendelni" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "szintaktikai hiba a kifejezésben" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "0-val osztás" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: rossz expassign token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "„:” egy feltételkifejezés szükséges" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "0-nál kisebb kitevő" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "prefix növelés vagy csökkentés után azonosító kell következzen" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "hiányzó „)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "szintaktikai hiba: operandus kell következzen" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hibás token: „%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "érvénytelen számrendszer" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "túl nagy érték a számrendszerhez" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: hibás kifejezés\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nem érhetőek el a szülőkönyvtárak" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "nem lehet új fájlleírót foglalni a bash bemenetéhez a(z) %d. fájlleíróból" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz" @@ -1149,153 +1155,158 @@ 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:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld. folyamat (%s) még élőként van jelölve" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nincs ilyen pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "%d. szignál" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Kész" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Megállítva" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Megállítva(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Fut" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Kész(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Kilépett(%d)" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Ismeretlen állapot" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core készült) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (mk: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "gyermek setpgid (innen: %ld ide: %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezőnek" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: %d. számú munka le lett állítva" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: a munka be lett fejezve" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: %d. számú munka már a háttérben van" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: %d. sor: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core készült)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(mk most: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp sikertelen" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nem állítható be a terminál folyamatcsoportja (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "nincsen munkakezelés ebben a parancsértelmezőben" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: nem teljesülő feltételezés: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1304,39 +1315,39 @@ msgstr "" "\r\n" "malloc: %s:%d: téves feltételezés\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "ismeretlen" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: a szabadlistán lévő blokk felülírva" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: már felszabadított blokkal lett hívva" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: kezdő- és záródarab mérete eltér" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kezdő- és záródarab mérete eltér" @@ -1378,22 +1389,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás" msgid "network operations not supported" msgstr "a hálózati műveletek nincsenek támogatva" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s" @@ -1411,259 +1422,265 @@ msgstr "Új levél a következőben: $_" msgid "The mail in %s has been read\n" msgstr "A(z) „%s” helyen lévő levél el van olvasva\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "szintaktikai hiba: váratlan „;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "szintaktikai hiba: „((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hibás utasítástípus: %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s” helyett)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét " +"(%lu): a sor csonkolva" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "a maximális here-document szám túllépve" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "váratlan EOF „%c” helyett" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "váratlan EOF „]]” helyett" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "szintaktikai hiba a feltételben: váratlan token: „%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "szintaktikai hiba a feltételben" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "váratlan token (%s) „)” helyett" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "„)” szükséges" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "feltételes kétoperandusú operátor szükséges" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "váratlan token (%c) feltételes parancsban" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "váratlan token (%s) feltételes parancsban" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "váratlan token (%d) feltételes parancsban" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "szintaktikai hiba „%s” váratlan token közelében" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "szintaktikai hiba „%s” közelében" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "szintaktikai hiba: váratlan fájlvége" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "szintaktikai hiba" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "„%s” használatával lehet elhagyni a parancsértelmezőt.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "váratlan EOF „)” helyett" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "kiegészítés: nem található „%s” függvény" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: lehetséges újrapróbálási hurok" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: hibás csatlakozó (%d)" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: érvénytelen fájlleíró" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL fájlmutató" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c”: érvénytelen formátumkarakter" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fájlleíró kívül esik a tartományon" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: kétértelmű átirányítás" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nem lehet felülírni létező fájlt" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nem lehet változóhoz fájlleírót rendelni" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nem található /tmp, hozza létre!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp érvényes könyvtárnév kell legyen" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: érvénytelen kapcsoló" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "az uid nem állítható be %d értékre: a hatásos uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "a gid nem állítható be %d értékre: a hatásos gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: ez egy könyvtár" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nincs nevem!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, %s-(%s) verzió\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,53 +1689,53 @@ msgstr "" "Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n" "\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU hosszú kapcsolók:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Parancsértelmező-kapcsolók:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s vagy -o kapcsoló\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "A „%s -c \"help set\"” további információt ad a parancsértelmező-" "beállításokról.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "A „%s -c help” további információt ad a beépített parancsokról.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "A „bashbug” paranccsal jelenthet hibákat.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "a bash honlapja: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Általános segítség a GNU szoftverek használatához: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: érvénytelen művelet" @@ -1892,21 +1909,21 @@ msgstr "Ismeretlen szignál #" msgid "Unknown Signal #%d" msgstr "%d. számú ismeretlen szignál" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hibás helyettesítés: nincs záró „%s” a következőben: %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: lista nem adható tömbelemnek értékül" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" @@ -1925,59 +1942,63 @@ msgstr "nem nyitható meg írásra a(z) %s csővezeték" msgid "cannot duplicate named pipe %s as fd %d" msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s" +msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nem duplikálható a csővezeték 1. fájlleíróként" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: rossz helyettesítés" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: az indirekt kiegészítés érvénytelen" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: érvénytelen változónév" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: a paraméter null vagy nincs beállítva" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: a paraméter null vagy nincs beállítva" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: részkarakterlánc-kifejezés < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: rossz helyettesítés" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nem lehet így értéket adni" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1985,12 +2006,12 @@ msgstr "" "a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai " "kiértékelést" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hibás helyettesítés: nincs záró „`” a következőben: %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "nincs találat: %s" @@ -2013,115 +2034,114 @@ msgstr "„)” szükséges" msgid "`)' expected, found %s" msgstr "„)” szükséges %s helyett" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: egyoperandusú operátor szükséges" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: kétoperandusú operátor szükséges" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "hiányzó „]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "érvénytelen szignálszám" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: szignálkezelő a SIG_DFL, %d (%s) újraküldése önmagunknak" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: rossz szignál: %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "hiba a függvénydefiníció betöltésekor: „%s”" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "a parancsértelmező szintje (%d) túl magas, visszaállítás 1-re" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nem lehet a változóhoz értéket rendelni" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" +msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s exportstr-je null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "érvénytelen karakter (%d) %s exportstr-jében" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "nincs „=” %s exportstr-jében" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nincs global_variables környezet" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nem nyitható meg FILE-ként" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgstr "Copyright © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2144,22 +2164,22 @@ msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nem lehetséges %lu byte foglalása" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d nem lehetséges %lu byte foglalása" @@ -2287,9 +2307,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [munkaszám ...] vagy jobs -x parancs [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [munkaszám ...]" +msgstr "disown [-h] [-ar] [munkaszám ... | pid ...]" #: builtins.c:134 msgid "" @@ -2372,7 +2391,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2495,9 +2515,10 @@ msgstr "" "parancs] [-c távolság] [tömb]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c " "távolság] [tömb]" @@ -2909,6 +2930,7 @@ msgstr "" " található a PARANCS." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2927,11 +2949,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2986,7 +3008,6 @@ msgstr "" " hiba történik." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2994,7 +3015,7 @@ msgid "" msgstr "" "Változóértékek és attribútumok beállítása.\n" " \n" -" Elavult. Lásd „help declare”." +" A „declare” szinonimája. Lásd: „help declare”." #: builtins.c:538 msgid "" @@ -3471,6 +3492,7 @@ msgstr "" " kapcsolót kap." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3485,7 +3507,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3519,7 +3541,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3551,17 +3574,19 @@ msgstr "" " bejegyzést listázza.\n" " \n" " Kapcsolók:\n" -" -c\tminden előzmény törlése\n" -" -d szám\ta SZÁM számú bejegyzés törlése\n" -" -a\ta futó munkamenet előzményeinek központi fájlba írása\n" -" -n\tminden olvasatlan előzménysor kiírása az előzményfájlból\n" -" -r\telőzményfájl beolvasása és előzménylistához írása\n" -" -w\taz aktuális előzmények előzményfájlba írása és\n" -" \t\telőzménylistához írása\n" +" -c\taz előzménylista törlése az összes bejegyzésének törlésével\n" +" -d eltolás\taz ELTOLÁS pozícióban lévő előzménybejegyzés törlése\n" +" -a\ta munkamenet előzménysorainak hozzáfűzése az előzményfájlhoz\n" +" -n\tminden olyan előzménysor beolvasása, amelyek még nem lettek\n" +" \t\tbeolvasva az előzményfájlból, és azok hozzáfűzése az\n" +" \t\telőzménylistához\n" +" -r\telőzményfájl beolvasása, és a tartalom hozzáfűzése az\n" +" \t\telőzménylistához\n" +" -w\taz aktuális előzmények előzményfájlba írása\n" " \n" " -p\telőzménykiegészítés végrehajtása minden ARGUMENTUMON, és az\n" -" \t\teredmény kiírása előzménylistán való tárolás nélkül\n" -" -s\tARGUMENTUMOK hozzáírása egyetlen bejegyzésként a listához\n" +" \t\teredmény megjelenítése előzménylistán való tárolás nélkül\n" +" -s\tARGUMENTUMOK hozzáfűzése egyetlen bejegyzésként a listához\n" " \n" " Ha FÁJLNÉV is meg van adva, az lesz előzményfájlként használva. " "Különben\n" @@ -3575,7 +3600,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" " történik." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3620,7 +3645,7 @@ msgstr "" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" " hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3652,8 +3677,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÁMOT" -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3683,21 +3707,22 @@ msgstr "" " \n" " Kapcsolók:\n" " -s sig\ta SIG egy szignálnév\n" -" -n sig\taSIG egy szignálszám\n" -" -l\ta szignálnevek listázása; ha argumentumok is követik, akkor\n" -" \t\taz általuk meghatározott szignálok nevei kerülnek listázásra\n" +" -n sig\ta SIG egy szignálszám\n" +" -l\ta szignálnevek listázása; ha argumentumok követik a -l kapcsolót,\n" +" \t\takkor azok szignálszámoknak lesznek tekintve ahhoz, hogy mely\n" +" \t\tneveket kell listázni\n" " -L\ta -l szinonimája\n" " \n" -" A kill két okból beépített parancs: így lehetővé teszi munkaszámok\n" -" használatát PID helyett, továbbá lehetségessé válik folyamatok " -"kilövése,\n" -" ha a folyamatok számának korlátja kimerült.\n" +" A kill két okból beépített parancs: így lehetővé teszi munkaazonosítók\n" +" használatát folyamatazonosítók helyett, továbbá lehetségessé válik a\n" +" folyamatok kilövése, ha a folyamatok számának korlátja elérve.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, vagy nem " +"történik\n" " hiba." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3780,7 +3805,8 @@ msgstr "" " Kilépési kód:\n" " Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3801,7 +3827,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3869,7 +3895,7 @@ msgstr "" " A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n" " (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3891,8 +3917,7 @@ msgstr "" " N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n" " visszatérni – ekkor sikertelenséget jelez." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4011,7 +4036,7 @@ msgstr "" " noclobber mint -C\n" " noexec mint -n\n" " noglob mint -f\n" -" nolog (jelenleg nincs hatása)\n" +" nolog jelenleg elfogadott, de mellőzött\n" " notify mint -b\n" " nounset mint -u\n" " onecmd mint -t\n" @@ -4042,7 +4067,7 @@ msgstr "" " parancsértelmezőnél alapértelmezés\n" " -P Parancsok végrehajtásánál szimbolikus linkek követésének tiltása\n" " (például cd esetében)\n" -" -T A DEBUG csapdát öröklik a függvények\n" +" -T A DEBUG és RETURN csapdát öröklik a függvények\n" " -- A további argumentumok hozzárendelése a pozicionális " "paraméterekhez.\n" " Ha nincsenek további argumentumok, akkora a pozicionális " @@ -4062,7 +4087,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4104,7 +4129,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" " olvasható." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4138,7 +4163,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4176,7 +4201,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4194,7 +4219,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4219,7 +4244,7 @@ msgstr "" "sikertelenül,\n" " ha a FÁJLNÉV nem olvasható." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4245,7 +4270,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" " történt." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4406,7 +4431,7 @@ msgstr "" "vagy\n" " érvénytelen argumentumokat kap." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4418,7 +4443,7 @@ msgstr "" " Ez a „test” beépített parancs szinonimája, de annyiban eltér tőle,\n" " hogy az utolsó argumentuma „]” kell legyen – a nyitó „]”-lel összhangban." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4437,7 +4462,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4520,7 +4545,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a SZIGNÁL érvénytelen, vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4572,7 +4597,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4667,7 +4692,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4703,7 +4728,8 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4711,13 +4737,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4738,7 +4766,7 @@ msgstr "" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4763,7 +4791,7 @@ msgstr "" "kapcsoló\n" " esetén sikertelenül." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4785,7 +4813,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4816,7 +4844,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4852,7 +4880,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4882,7 +4910,7 @@ msgstr "" " Kilépési kód:\n" " A kilépési kód a CSŐVEZETÉK kilépési kódja lesz." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4902,7 +4930,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4935,7 +4963,7 @@ msgstr "" " Kilépési kód:\n" " Az utoljára végrehajtott parancs kilépési kódja." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4954,7 +4982,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4973,8 +5001,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4988,15 +5015,15 @@ msgid "" msgstr "" "Egy NÉV nevű társfolyamat létrehozása.\n" " \n" -" A PARANCS aszinkron végrehajtása, a szabványos ki- és bemenet\n" -" átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb\n" -" 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n" +" PARANCS aszinkron végrehajtása, a parancs szabványos ki- és bemenetének\n" +" átirányításával egy-egy csővezetékbe, amelyek fájlleírói a NÉV tömb-\n" +" változó 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezőben.\n" " Az alapértelmezett NÉV: „COPROC”.\n" " \n" " Kilépési kód:\n" -" A PARANCS kilépési kódjával tér vissza." +" A coproc parancs 0-s kilépési kóddal tér vissza." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5020,7 +5047,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha a NÉV csak olvasható." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5038,7 +5065,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5062,7 +5089,7 @@ msgstr "" " Kilépési kód:\n" " A visszaállított parancs kilépési kódjával lép ki." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5080,7 +5107,7 @@ msgstr "" " Kilépési kód:\n" " 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5129,7 +5156,7 @@ msgstr "" " Kilépési kód:\n" " 0 vagy 1 a KIFEJEZÉSTŐL függően." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5230,7 +5257,7 @@ msgstr "" " HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n" " \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5288,7 +5315,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5337,7 +5364,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n" " során történő hiba esetén." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5387,14 +5414,14 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5424,7 +5451,7 @@ msgstr "" " Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n" " hibás kapcsolókat kap vagy az OPTNÉV tiltva van." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5494,7 +5521,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:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5543,7 +5570,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5565,7 +5592,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5622,7 +5649,7 @@ msgstr "" "nincs\n" " még megadva." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5694,7 +5721,7 @@ msgstr "" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n" " vagy nem indexelt TÖMB megadása esetén." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5703,50 +5730,3 @@ msgstr "" "Sorok olvasása egy tömbváltozóba.\n" " \n" " A „mapfile” szinonimája." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" - -#~ msgid "" -#~ ". With EXPR, returns\n" -#~ " " -#~ msgstr "" -#~ "kifejezéssel, EXPR-rel a\n" -#~ " " - -#~ msgid "" -#~ "; this extra information can be used to\n" -#~ " provide a stack trace.\n" -#~ " \n" -#~ " The value of EXPR indicates how many call frames to go back before " -#~ "the\n" -#~ " current one; the top frame is frame 0." -#~ msgstr "" -#~ " kifejezéssel tér vissza. Ez az adat stack trace kiírásához\n" -#~ " lehet hasznos.\n" -#~ " \n" -#~ " Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen " -#~ "mélyre\n" -#~ " lépjen vissza; a verem tetején a 0-s keret van." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "A licenc GPLv2+: a GNU GPL 2. vagy újabb változata \n" diff --git a/po/id.gmo b/po/id.gmo index 388299aaf..d84837cc3 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index b78f067a3..539793950 100644 --- a/po/id.po +++ b/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2014-08-06 12:45+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -15,121 +15,122 @@ msgstr "" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "Language: id\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "array subscript buruk" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: kunci array assosiasi tidak valid" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: tidak dapat mengassign ke index tidak-numeric" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: tidak dapat membuat: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "tidak menutup '%c' dalam %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: hilang pemisah colon" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "brace expansion: failed to allocate memory for %d elements" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nama alias tidak valid" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "pengubahan baris tidak aktif" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': nama keymap tidak valid" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: tidak dapat membaca: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "'%s': tidak dapat melepaskan" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "'%s': nama fungsi tidak dikenal" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s tidak terikat ke kunci apapun.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s dapat dipanggil melalui " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "'%s': tidak dapat melepaskan" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "jumlah loop" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop" @@ -143,163 +144,163 @@ msgstr "" " \n" " Tanpa EXPR, kembali " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME tidak diset" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "terlalu banyak argumen" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "top direktori yang baru." -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD tidak diset" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "baris %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "peringatan: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: penggunaan: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: pilihan membutuhkan sebuah argumen" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: argumen numeric dibutuhkan" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: tidak ditemukan" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: pilihan tidak valid" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nama pilihan tidak valid" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': bukan sebuah identifier yang valid" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "nomor oktal tidak valid" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "nomor hexa tidak valid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "nomor tidak valid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: spesifikasi sinyal tidak valid" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabel baca-saja" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s diluar jangkauan" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumen" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s diluar jangkauan" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: tidak ada pekerjaan seperti itu" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: tidak ada pengontrol kerja" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "tidak ada pengontrol kerja" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: terbatas" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "terbatas" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bukan sebuah builtin shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "gagal menulis: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "error menentukan atribut terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "error mendapatkan atribut terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error mengambil direktori saat ini: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: spesifikasi pekerjaan ambigu" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -308,71 +309,71 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: nama aksi tidak valid" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: tidak ada spesifikasi completion" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" "peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" "peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "saat ini sedang tidak menjalankan fungsi completion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "hanya dapat digunakan dalam sebuah fungsi" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: circular name reference" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: fungsi baca-saja" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tidak dapat menghapus variabel array secara ini" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: tidak dapat mengubah assosiasi ke array index" @@ -406,68 +407,68 @@ msgstr "%s: bukan dinamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: tidak dapat menghapus: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: bukan sebuah direktori" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: bukan sebuah file umum" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file terlalu besar" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: tidak dapat menjalankan berkas binary" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: tidak dapat menjalankan: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "bukan sebuah login shell: gunakan `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Ada pekerjaan yang terhenti.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Ada pekerjaan yang sedang berjalan.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "perintah tidak ditemukan" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "spesifikasi sejarah" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: tidak dapat membuka file sementara: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "sekarang" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "pekerjaan %d dimulai tanpa pengontrol pekerjaan" @@ -482,28 +483,27 @@ msgstr "%s: pilihan tidak legal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing dinonaktifkan" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabel hash kosong\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "tekan\tperintah\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Perintah shell cocok dengan kata kunci `" msgstr[1] "Perintah shell cocok dengan kata kunci `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -" "k %s' atau `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: tidak dapat membuka: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -539,20 +539,21 @@ msgstr "" "aktif.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posisi sejarah" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: argumen limit tidak valid" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansi sejarah gagal" @@ -566,16 +567,16 @@ msgstr "%s: inlib gagal" msgid "no other options allowed with `-x'" msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumen harus diproses atau ID pekerjaan" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "diduga sebuah ekspresi" @@ -584,69 +585,69 @@ msgstr "diduga sebuah ekspresi" msgid "%s: not an indexed array" msgstr "%s: bukan sebuah indeks array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: spesifikasi file deskripsi tidak valid" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: file deskriptor %s tidak valid" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: jumlah baris tidak valid" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: asal array tidak valid" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nama aksi tidak valid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nama variabel array kosong" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "bantuan array variabel dibutuhkan" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': hilang karakter format" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': spesifikasi timeout tidak valid" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': karakter format tidak valid" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "peringatan: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "hilang digit hexa untuk \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "hilang digit hexa untuk \\%c" @@ -660,19 +661,19 @@ msgstr "tidak ada direktori lain" msgid "%s: invalid argument" msgstr "%s: argumen limit tidak valid" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "direktori stack kosong" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "index direktori stack" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -717,7 +718,7 @@ msgstr "" "ditampilkan oleh\n" " \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -764,7 +765,7 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -800,45 +801,45 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "error baca: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: tidak dapat unset" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: tidak dapat unset: baca-saja %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: bukan sebuah variabel array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: bukan sebuah fungsi" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: tidak dapat unset" @@ -847,20 +848,20 @@ msgstr "%s: tidak dapat unset" msgid "shift count" msgstr "shift terhitung" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nama pilihan shell tidak valid" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "argumen nama file dibutuhkan" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: berkas tidak ditemukan" @@ -873,61 +874,61 @@ msgstr "tidak dapat suspend" msgid "cannot suspend a login shell" msgstr "tidak dapat suspend sebuah login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s sudah dialiasi ke `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s adalah sebuah shell dengan kata kunci\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s adalah sebuah fungsi\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s adalah sebuah shell builtin\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s adalah sebuah shell builtin\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s adalah %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s memiliki hash (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumen limit tidak valid" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': perintah buruk" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: tidak dapat get limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "batas" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: tidak dapat memodifikasi batas: %s" @@ -946,205 +947,210 @@ msgstr "`%c': operator mode symbolic tidak valid" msgid "`%c': invalid symbolic mode character" msgstr "`%c': mode karakter symbolic tidak valid" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " baris " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "perintah terakhir: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "membatalkan..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "perintah error tidak diketahui" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipe perintah buruk" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "konektor buruk" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "lompat buruk" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabel tidak terikat" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': karakter format tidak valid" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, fuzzy, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, fuzzy, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: perintah tidak ditemukan" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpreter buruk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: tidak dapat menjalankan berkas binary: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': adalah sebuah shell builtin" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tidak dapat menduplikasikan fd %d ke fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "expresi level rekursi terlewati" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursi stack underflow" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntax error dalam expresi" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "mencoba menempatkan ke bukan sebuah variabel" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntax error dalam expresi" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "dibagi oleh 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: tanda expassign buruk" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponen kurang dari 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "hilang `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntax error: operand diharapkan" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: operator arithmetic tidak valid" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token adalah \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "basis arithmetic tidak valid" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "nilai terlalu besar untuk basis" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: expresi error\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: tidak dapat mengakses direktori orang tua" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "tidak dapat mengalokasikan berkas deskripsi bari untuk masukan bash dari fd %" "d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" @@ -1153,153 +1159,158 @@ msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) dalam the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tidak ada pid seperti itu" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "sinyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Selesai" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Terhenti" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Terhenti(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Berjalan" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Selesai(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Keluar %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Status tidak diketahui" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core didump) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "anak setpgid (%ld ke %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld bukan sebuah anak dari shell ini" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Tidak ada catatan untuk proses %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: pekerjaan %d terhenti" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: pekerjaan telah selesai" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: baris %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core didump)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd sekarang: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp gagal" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: baris disiplin" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: baris disiplin" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "tidak dapat menset terminal proses grup (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "tidak ada pengontrol pekerjaan dalam shell ini" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: gagal assertion: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1308,39 +1319,39 @@ msgstr "" "\r\n" "malloc: %s:%d: assertion rusak\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "tidak diketahui" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blok dalam daftar bebas clobbered" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" @@ -1383,22 +1394,22 @@ msgstr "%s: spesifikasi jalur network buruk" msgid "network operations not supported" msgstr "operasi jaringan tidak dilayani" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s" @@ -1416,148 +1427,148 @@ msgstr "Anda memiliki surat baru dalam $_" msgid "The mail in %s has been read\n" msgstr "Surat dalam %s telah dibaca\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntax error: membutuhkan ekspresi arithmetic" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntax error: `;' tidak terduga" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipe instruksi buruk %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "EOF tidak terduga ketika mencari untuk `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntax error dalam ekspresi kondisional" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "tanda `%s' tidak terduga, diduga `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "diduga `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumen tidak terduga `%s' ke operator kondisional unary" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argumen tidak terduga untuk operasi unary kondisional" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "operator binary kondisional diduga" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumen `%s' tidak terduga ke operator binary kondisional" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argumen tidak terduga ke operasi binary kondisional" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "tanda `%c' tidak terduga dalam perintah kondisional" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "tanda `%s' tidak terduga dalam perintah kondisional" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "tanda %d tidak terduga dalam perintah kondisional" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error didekat tanda `%s' yang tidak terduga" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntax error didekat `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntax error: tidak terduga diakhir dari berkas" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntax error" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: fungsi `%s' tidak ditemukan" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1567,109 +1578,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: konektor buruk `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: berkas pendeskripsi tidak valid" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: berkas penunjuk KOSONG" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': format karakter tidak valid" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "berkas deskripsi diluar dari jangkauan" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirect ambigu" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: tidak dapat menulis berkas yang sudah ada" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: tidak dapat meredirect keluaran" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: tidak dapat menduplikasi fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "tidak dapat menemukan /tmp, tolong buat!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp harus berupa sebuah nama direktori yang valid" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: pilihan tidak valid" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: bukan sebuah direktori" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Aku tidak memiliki nama!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versi %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1678,54 +1693,54 @@ msgstr "" "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU pilihan panjang:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Pilihan shell:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s atau pilihan -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan " "shell.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting " "shell.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operasi tidak valid" @@ -1899,21 +1914,21 @@ msgstr "Sinyal tidak diketahui #" msgid "Unknown Signal #%d" msgstr "Sinyal tidak diketahui #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "tidak dapat membuat pipe untuk proses substitusi" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "tidak dapat membuat anak untuk proses substitusi" @@ -1932,59 +1947,64 @@ msgstr "tidak dapat membukan named pipe %s untuk menulis" msgid "cannot duplicate named pipe %s as fd %d" msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "tidak dapat membuat pipe untuk perintah substitusi" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "tidak dapat membuat anak untuk perintah substitusi" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substitusi buruk" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: jumlah baris tidak valid" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': nama alias tidak valid" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter kosong atau tidak diset" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expresi < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substitusi buruk" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: tidak dapat meng-assign dengan cara ini" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1992,12 +2012,12 @@ msgstr "" "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " "aritmetika" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "tidak cocok: %s" @@ -2020,30 +2040,30 @@ msgstr "')' diduga" msgid "`)' expected, found %s" msgstr "`)' diduga, ditemukan %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: operator unary diduga" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: operator binary diduga" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "hilang `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "nomor sinyal tidak valid" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2051,80 +2071,80 @@ msgstr "" "run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d (%" "s) kediri sendiri" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinyal buruk %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "error mengimpor definisi fungsi untuk `%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "level shell (%d) terlalu tinggi, mereset ke 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: tidak ada context fungsi di scope ini" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: variables.c:3043 +#: variables.c:3246 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s memiliki exportstr kosong" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "karakter %d tidak valid dalam exporstr untuk %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "bukan `=' dalam exportstr untuk %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: bukan global_variable context" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan " "sementara" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: diluar jangkauan" @@ -2157,22 +2177,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: tidak dapat mengalokasikan %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s: %d: tidak dapat teralokasi %lu bytes" @@ -2387,7 +2407,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2511,9 +2532,10 @@ msgstr "" "quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2957,11 +2979,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3535,7 +3557,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3571,7 +3593,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3637,7 +3660,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3686,7 +3709,7 @@ msgstr "" "sebuah error terjadi.\n" " Jika -x digunakan, mengembalikan status keluar dari PERINTAH." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3719,7 +3742,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC " "diberikan." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3764,7 +3787,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3852,7 +3875,7 @@ msgstr "" " Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 " "dikembalikan Jika tidak." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3874,7 +3897,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3955,7 +3978,7 @@ msgstr "" " atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" "u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3977,7 +4000,7 @@ msgstr "" " Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " "script." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4154,7 +4177,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4194,7 +4217,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah NAMA adalah baca-saja." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4229,7 +4252,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4270,7 +4293,7 @@ msgstr "" " Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4288,7 +4311,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4314,7 +4337,7 @@ msgstr "" "BERKAS; gagal jika\n" " NAMA BERKAS tidak dapat dibaca." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4340,7 +4363,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4507,7 +4530,7 @@ msgstr "" "EXPR mengevaluasi ke\n" " salah atau sebuah argumen tidak valid diberikan." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4519,7 +4542,7 @@ msgstr "" " Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" " harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4539,7 +4562,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4620,7 +4643,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " "sebuah pilihan tidak valid diberikan." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4683,7 +4706,7 @@ msgstr "" " Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " "yang tidak ditemukan." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4777,7 +4800,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4815,7 +4838,8 @@ msgstr "" " Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " "valid diberikan." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4823,13 +4847,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4850,7 +4876,7 @@ msgstr "" "pilihan tidak\n" " valid diberikan." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4876,7 +4902,7 @@ msgstr "" "pilihan tidak valid\n" " diberikan." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4900,7 +4926,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4930,7 +4956,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4967,7 +4993,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4995,7 +5021,7 @@ msgstr "" " Status Keluar:\n" " Status kembali adalah status kembali dari PIPELINE." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5013,7 +5039,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan setatus dari perintah terakhir yang dijalankan." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5051,7 +5077,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5069,7 +5095,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5086,7 +5112,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5110,7 +5136,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status keluar dari PERINTAH." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5135,7 +5161,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali NAMA adalah baca-saja." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5154,7 +5180,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dieksekusi." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5181,7 +5207,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari pekerjaan yang dilanjutkan." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5199,7 +5225,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5256,7 +5282,7 @@ msgstr "" " Status Keluar:\n" " 0 atau 1 tergantun dari nilai dari EKSPRESI." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5370,7 +5396,7 @@ msgstr "" "digunakan untuk menentukan dimana\n" " \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5431,7 +5457,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5487,7 +5513,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5544,14 +5570,14 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " "atau sebuah error terjadi." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5583,7 +5609,7 @@ msgstr "" "tidak valid diberikan\n" " atau OPTNAME dinonaktifkan." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5648,7 +5674,7 @@ msgstr "" "sebuah penulisan atau penempatan\n" " error terjadi." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5702,7 +5728,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5725,7 +5751,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5787,7 +5813,7 @@ msgstr "" "NAMA tidak memiliki\n" " spesifikasi penyelesaian yang terdefinisi." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5865,7 +5891,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "ARRAY adalah baca-saja." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5875,9 +5901,8 @@ msgstr "" " \n" " Sebuah sinonim untuk `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -5891,9 +5916,6 @@ msgstr "" #~ msgid "times" #~ msgstr "kali" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." - #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/it.gmo b/po/it.gmo index 99e98a493..5d98886f8 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 6bff65a29..7a67e1921 100644 --- a/po/it.po +++ b/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2011-10-17 09:14+0200\n" "Last-Translator: Sergio Zanchetta \n" "Language-Team: Italian \n" @@ -15,123 +15,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural= (n != 1)\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "indice dell'array errato" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossibile convertire un array indicizzato in uno associativo" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chiave dell'array associativo non valida" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossibile assegnare a un indice non numerico" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: deve essere usato un indice nell'assegnazione di un array associativo" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossibile creare: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossibile trovare una mappatura per il comando" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: il primo carattere non spazio non è \"\"\"" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "carattere di chiusura \"%c\" non presente in %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: separatore di tipo due punti mancante" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": nome alias non valido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "modifica delle righe non abilitata" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": nome della mappatura non valido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossibile leggere: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "\"%s\": impossibile eliminare l'associazione" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\" nome della funzione sconosciuto" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non è associato ad alcun tasto.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s può essere invocato tramite " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossibile eliminare l'associazione" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "numero di cicli" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\"" @@ -145,163 +146,163 @@ msgstr "" " \n" " Senza ESPR, restituisce " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME non impostata" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "troppi argomenti" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "nessun'altra directory" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD non impostata" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "riga %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "attenzione: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opzione richiede un argomento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: è necessario un argomento numerico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: non trovata" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opzione non valida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome dell'opzione non valido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": non è un identificatore valido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "numero ottale non valido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "numero esadecimale non valido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "numero non valido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: specifica di segnale non valida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": non è un pid o un numero di job valido" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabile in sola lettura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuori dall'intervallo" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argomento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fuori dall'intervallo" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: job inesistente" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nessun controllo dei job" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nessun controllo dei job" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: limitato" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "limitato" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: non è un comando interno di shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "errore in scrittura: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "errore nell'impostazione degli attributi del terminale: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "errore nel recupero degli attributi del terminale: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: errore nel recupero della directory corrente: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: specifica di job ambigua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -310,69 +311,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: nome azione non valido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: nessun completamento specificato" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "funzione di completamento attualmente non in esecuzione" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "può essere usato solo in una funzione" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "\"%s\": nome alias non valido" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "impossibile usare \"-f\" per creare funzioni" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funzione in sola lettura" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossibile eliminare variabili array in questo modo" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossibile convertire un array associativo in uno indicizzato" @@ -406,68 +407,68 @@ msgstr "%s: non caricato dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossibile eliminare: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: è una directory" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: non è un file regolare" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: file troppo grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossibile eseguire il file binario" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossibile eseguire: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "non è una shell di login: utilizzare \"exit\"" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Sono presenti job interrotti.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Ci sono job in esecuzione.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nessun comando trovato" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "specifica della cronologia" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossibile aprire il file temp: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "attuale" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "job %d avviato senza controllo dei job" @@ -482,28 +483,27 @@ msgstr "%s: opzione illecita -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing disabilitato" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s tabella di hash vuota\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "rich.\tcomando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Comandi di shell corrispondenti alla parola chiave \"" msgstr[1] "Comandi di shell corrispondenti alle parole chiave \"" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o " "\"man -k %s\" o \"info %s\"." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossibile aprire: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossibile usare più di uno tra -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posizione nella cronologia" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: argomento di limite non valido" +msgstr "%s: nome dell'opzione non valido" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: espansione della cronologia non riuscita" @@ -564,16 +565,16 @@ msgstr "%s: inlib non riuscito" msgid "no other options allowed with `-x'" msgstr "nessuna altra opzione permessa con \"-x\"" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: gli argomenti devono essere ID di processo o di job" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Errore sconosciuto" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "attesa espressione" @@ -582,69 +583,69 @@ msgstr "attesa espressione" msgid "%s: not an indexed array" msgstr "%s: non è un array indicizzato" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: specifica di descrittore di file non valida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descrittore di file non valido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: numero di righe non valido" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origine dell'array non valida" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum di callback non valido" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome della variabile array vuoto" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "necessario il supporto alla variabile array" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manca il carattere di formato" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": specifica di formato dell'orario non valida" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carattere di formato non valido" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "attenzione: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "cifra esadecimale mancante in \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "cifra unicode mancante in \\%c" @@ -658,19 +659,19 @@ msgstr "nessun'altra directory" msgid "%s: invalid argument" msgstr "%s: argomento di limite non valido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "stack delle directory vuoto" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indice dello stack delle directory" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -713,7 +714,7 @@ msgstr "" " -N\tVisualizza l'N-sima voce contando a partire da destra dell'elenco\n" "\tmostrato da dirs quando invocato senza opzioni, iniziando da zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -759,7 +760,7 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -797,46 +798,46 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: specifica di timeout non valida" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "errore in lettura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "è possibile eseguire \"return\" solo da una funzione o da uno script chiamato" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: impossibile azzerare" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossibile azzerare: %s in sola lettura" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: non è una variabile array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: non è una funzione" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: impossibile azzerare" @@ -845,20 +846,20 @@ msgstr "%s: impossibile azzerare" msgid "shift count" msgstr "numero di scorrimenti" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome dell'opzione di shell non valido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "necessario un nome file come argomento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: file non trovato" @@ -871,61 +872,61 @@ msgstr "impossibile sospendere" msgid "cannot suspend a login shell" msgstr "impossibile sospendere una shell di login" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ha \"%s\" come alias\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s è una parola chiave di shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s è una funzione\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s è un comando interno di shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s è un comando interno di shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s è %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "hash effettuato su %s (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argomento di limite non valido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "\"%c\": comando errato" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossibile recuperare il limite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossibile modificare il limite: %s" @@ -944,204 +945,209 @@ msgstr "\"%c\": operatore di modo simbolico non valido" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carattere di modo simbolico non valido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " riga " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "ultimo comando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Interruzione..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "errore di comando sconosciuto" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo di comando errato" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "connettore errato" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "salto errato" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabile non assegnata" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atempo di attesa scaduto per l'input: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossibile redirigere lo standard input da /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "errore della pipe" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interprete errato" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossibile eseguire il file binario" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s è un comando interno di shell\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossibile duplicare fd %d su fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "superato il livello di ricorsione dell'espressione" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underflow dello stack di ricorsione" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "errore di sintassi nell'espressione" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "tentata un'assegnazione a una non variabile" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "errore di sintassi nell'espressione" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "divisione per 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "bug: token di expassign errato" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "atteso \":\" per l'espressione condizionale" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "esponente minore di 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "\")\" mancante" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "errore di sintassi: atteso un operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "errore di sintassi: operatore aritmetico non valido" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "base aritmetica non valida" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valore troppo grande per la base" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: errore di espressione\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossibile accedere alle directory padre" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossibile allocare un nuovo descrittore di file per l'input della bash da " "fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer già esistente per il nuovo fd %d" @@ -1150,153 +1156,158 @@ msgstr "save_bash_input: buffer già esistente per il nuovo fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "il pid %d del fork appare nel job in esecuzione %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) in the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) segnato come ancora in vita" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid inesistente" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Segnale %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Completato" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Fermato" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Fermato(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "In esecuzione" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Eseguito(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Uscita %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Stato sconosciuto" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dump creato) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (dir: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid del figlio (%ld a %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: il pid %ld non è un figlio di questa shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nessun record del processo %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: il job %d è fermo" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: il job è terminato" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: il job %d è già in background" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: riga %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dump creato)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp non riuscita" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina di linea" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossibile impostare il gruppo di processi del terminale (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "nessun controllo dei job in questa shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserzione non riuscita: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1305,39 +1316,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserzione non riuscita\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "sconosciuto" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blocco eliminato nell'elenco dei disponibili" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: chiamata con un argomento di blocco già liberato" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" @@ -1380,22 +1391,22 @@ msgstr "%s: specifica del percorso di rete errata" msgid "network operations not supported" msgstr "operazione di rete non supportata" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s" @@ -1413,150 +1424,150 @@ msgstr "È presente della nuova posta in $_" msgid "The mail in %s has been read\n" msgstr "La posta in %s è stata letta\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "errore di sintassi: richiesta espressione aritmetica" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "errore di sintassi: \";\" non atteso" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "errore di sintassi: \"((%s))\"" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo di istruzione errata %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF non atteso durante la ricerca di \"%c\"" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "EOF non atteso durante la ricerca di \"]]\"" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "errore di sintassi nell'espressione condizionale" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token non atteso \"%s\", era atteso \")\"" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "atteso \")\"" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argomento non atteso per l'operatore unario condizionale" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "atteso operatore binario condizionale" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argomento non atteso per l'operatore binario condizionale" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token non atteso \"%c\" nel comando condizionale" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token non atteso \"%s\" nel comando condizionale" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "token non atteso %d nel comando condizionale" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "errore di sintassi vicino al token non atteso \"%s\"" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "errore di sintassi vicino a \"%s\"" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "errore di sintassi: EOF non atteso" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "errore di sintassi" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Usare \"%s\" per uscire dalla shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non atteso durante la ricerca di \")\"" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funzione \"%s\" non trovata" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1566,109 +1577,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC NULL" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: connettore errato \"%d\"" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descrittore di file non valido" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: puntatore a file NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carattere di formato non valido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descrittore di file fuori dell'intervallo" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirezione ambigua" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossibile sovrascrivere il file esistente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitato: impossibile redirigere l'output" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossibile creare un file temporaneo per here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossibile assegnare fd a una variabile" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "errore di reindirizzamento: impossibile duplicare fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "impossibile trovare /tmp, è necessario crearla" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp deve essere un nome di directory valido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opzione non valida" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: è una directory" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Manca il nome" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versione %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1677,54 +1692,54 @@ msgstr "" "Uso:\t%s [opzione lunga GNU] [opzione] ...\n" "\t%s [opzione lunga GNU] [opzione] file-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Opzioni lunghe GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opzioni di shell:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\topzione -%s oppure -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di " "shell.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di " "shell.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operazione non valida" @@ -1898,21 +1913,21 @@ msgstr "Numero di segnale sconosciuto" msgid "Unknown Signal #%d" msgstr "Segnale sconosciuto n° %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossibile assegnare una lista a un membro di un array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "impossibile creare una pipe per la sostituzione del processo" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "impossibile creare un figlio per la sostituzione del processo" @@ -1931,59 +1946,64 @@ msgstr "impossibile aprire la pipe con nome %s in scrittura" msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossibile duplicare una pipe con nome %s come fd %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "impossibile creare una pipe per la sostituzione del comando" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "impossibile creare un figlio per la sostituzione del comando" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossibile duplicare la pipe come fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: sostituzione errata" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: numero di righe non valido" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "\"%s\": nome alias non valido" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametro nullo o non impostato" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametro nullo o non impostato" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressione di sottostringa < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sostituzione errata" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossibile assegnare in questo modo" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1991,12 +2011,12 @@ msgstr "" "le versioni future della shell forzeranno la valutazione come fosse una " "sostituzione aritmetica" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "nessuna corrispondenza: %s" @@ -2019,30 +2039,30 @@ msgstr "atteso \")\"" msgid "`)' expected, found %s" msgstr "atteso \")\", trovato %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: atteso operatore unario" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: atteso operatore binario" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "\"]\" mancante" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "numero di segnale non valido" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valore errato in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2050,81 +2070,81 @@ msgstr "" "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato " "nuovamente %d (%s)" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: segnale errato %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "errore nell'importazione della definizione di funzione per \"%s\"" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "livello di shell (%d) troppo alto, reimpostato a 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: impossibile assegnare fd a una variabile" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s ha exportstr null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carattere non valido %d in exportstr per %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "nessun \"=\" in exportstr per %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: la prima parte di shell_variables non è un contesto di " "funzione" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nessun contesto global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: la prima parte di shell_variables non è un ambito temporaneo " "d'ambiente" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossibile aprire come FILE" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fuori dall'intervallo" @@ -2157,22 +2177,22 @@ msgstr "Questo è software libero; è possibile modificarlo e ridistribuirlo.\ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non c'è ALCUNA GARANZIA, nei limiti permessi dalla legge.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossibile allocare %lu byte (%lu byte allocati)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossibile allocare %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: impossibile allocare %lu byte (%lu byte allocati)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossibile allocare %lu byte" @@ -2391,13 +2411,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2517,9 +2537,10 @@ msgstr "" "quantità] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-" "c quantità] [array]" @@ -2974,11 +2995,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3574,7 +3595,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3612,7 +3633,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3677,7 +3699,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3725,7 +3747,7 @@ msgstr "" "si riscontri un errore.\n" " Se viene usato -x, restituisce lo stato di uscita del COMANDO." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3759,7 +3781,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o uno SPECJOB." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3806,7 +3828,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3901,7 +3923,7 @@ msgstr "" " Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti " "restituisce 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3923,7 +3945,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -4006,7 +4028,7 @@ msgstr "" "timeout in lettura\n" " o venga fornito un descrittore di file non valido come argomento per -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -4028,7 +4050,7 @@ msgstr "" " Restituisce N, oppure insuccesso se la shell non sta eseguendo una " "funzione o uno script." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4214,7 +4236,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che non venga fornita una opzione non valida." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4255,7 +4277,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "NOME sia in sola lettura." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4291,7 +4313,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "il NOME non sia valido." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4331,7 +4353,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o NOME non sia valido." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4349,7 +4371,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che N non sia negativo o maggiore di $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4374,7 +4396,7 @@ msgstr "" "insuccesso se\n" " il NOMEFILE non può essere letto." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4400,7 +4422,7 @@ msgstr "" " Restituisce successo a meno che non sia abilitato il controllo job o si " "riscontri un errore." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4570,7 +4592,7 @@ msgstr "" "viene valutata\n" " falsa o viene fornito un argomento non valido." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4583,7 +4605,7 @@ msgstr "" "deve\n" " essere un \"]\" letterale per corrispondere al \"[\" di apertura." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4603,7 +4625,7 @@ msgstr "" " Stato di uscita:\n" " Sempre successo." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4689,7 +4711,7 @@ msgstr "" " Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " "fornisca una opzione non valida." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4752,7 +4774,7 @@ msgstr "" " Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " "contrario." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4848,7 +4870,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o venga riscontrato un errore." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4885,7 +4907,7 @@ msgstr "" " Restituisce successo a meno che MODO non sia valido o venga fornita una " "opzione non valida." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4894,13 +4916,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4921,7 +4945,7 @@ msgstr "" "fornita una\n" " opzione non valida." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4949,7 +4973,7 @@ msgstr "" "fornita una opzione non\n" " valida." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4974,7 +4998,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -5005,7 +5029,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5043,7 +5067,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita dell'ultimo comando eseguito." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5072,7 +5096,7 @@ msgstr "" " Stato di uscita:\n" " Viene restituito lo stato della PIPELINE." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5091,7 +5115,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5130,7 +5154,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5148,7 +5172,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5166,7 +5190,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5192,7 +5216,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita del COMANDO." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5218,7 +5242,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che il NOME non sia in sola lettura." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5237,7 +5261,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5261,7 +5285,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato del job ripristinato." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5279,7 +5303,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5336,7 +5360,7 @@ msgstr "" " Stato di uscita:\n" " 0 o 1 a seconda del valore dell'ESPRESSIONE." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5464,7 +5488,7 @@ msgstr "" "decidere quale\n" " \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5524,7 +5548,7 @@ msgstr "" "non abbia\n" " successo il cambio di directory." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5576,7 +5600,7 @@ msgstr "" "valido o non\n" " abbia successo il cambio di directory." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5630,14 +5654,14 @@ msgstr "" " Restituisce successo a meno che non sia fornita un'opzione non valida o " "si riscontri un errore." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5671,7 +5695,7 @@ msgstr "" "fornita\n" " una opzione non valida o NOMEOPZ è disabilitato." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5741,7 +5765,7 @@ msgstr "" "o si riscontri\n" " un errore di scrittura o assegnazione." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5797,7 +5821,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5821,7 +5845,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5885,7 +5909,7 @@ msgstr "" "o NOME non\n" " abbia una specifica di completamento definita." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5966,7 +5990,7 @@ msgstr "" "valida, ARRAY sia\n" " in sola lettura oppure non indicizzato." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5976,9 +6000,15 @@ msgstr "" " \n" " Sinonimo per \"mapfile\"." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licenza GPLv2+: GNU GPL versione 2 o successive \n" #~ msgid ":" #~ msgstr ":" @@ -5991,20 +6021,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licenza GPLv2+: GNU GPL versione 2 o successive \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" diff --git a/po/ja.gmo b/po/ja.gmo index 3f5a091a3..ed049ba7c 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 171eadb34..5d879ae4d 100644 --- a/po/ja.po +++ b/po/ja.po @@ -3,136 +3,138 @@ # This file is distributed under the same license as the bash package. # Kyoichi Ozaki , 2000. # Takeshi Hamasaki , 2011, 2013. -# Yasuaki Taniguchi , 2011, 2014. +# Yasuaki Taniguchi , 2011, 2014, 2017. msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.3-rc2\n" +"Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-30 05:04+0100\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-07-02 01:46+0100\n" "Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: Japanese\n" +"Language: ja\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.2\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "誤った配列の添字" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: インデックス配列から連想配列に変換することはできません" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無効な連想配列のキーです" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 配列の添字に非数字を設定できません" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 連想配列を設定するときには添字をつけなければいけません" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: %s を作成できません" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: コマンドのキーマップがありません" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 最初の非空白類文字が `\"' ではありません" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "閉じる `%c' が %s にありません" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: 区切り文字コロン(:)がありません" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "中括弧展開: %s へメモリを割り当てられません" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "中括弧展開: failed to allocate memory for %d 要素のメモリの割り当てに失敗しま" "した" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "中括弧展開: `%s' へのメモリ割り当てに失敗しました" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': 無効なエイリアス名です" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "行編集が有効になっていません" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': 無効なキーマップ名です" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: %s を読み込めません" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': 割り当て解除できません" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': 不明な関数名です" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s はどのキーにも割り当てられていません。\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s は次を通して起動します " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': 割り当て解除できません" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "ループ回数" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "`for'、`while' または `until' ループでのみ意味があります" @@ -146,234 +148,234 @@ msgstr "" " \n" " EXPR が無い場合、次を返します " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME が設定されていません" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "引数が多すぎます" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "他のディレクトリはありません" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD が設定されていません" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d 行: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "警告: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: 使用法: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: オプションには引数が必要です" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: 数字の引数が必要です" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: 見つかりません" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: 無効なオプションです" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: 無効なオプション名です" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 有効な識別子ではありません" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "無効な八進数です" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "無効な十六進数です" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "無効な数字です" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: 無効なシグナル指定です" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': pid または有効なジョブ指定ではありません" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: 読み取り専用の変数です" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s が範囲外です" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "引数" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s が範囲外です" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: そのようなジョブはありません" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ジョブ制御が無効になっています" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ジョブ制御が無効になっています" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: 制限されています" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "制限されています" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: シェルのビルトイン関数ではありません" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "書き込みエラー: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "ターミナル属性の設定時にエラーが発生しました : %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "ターミナル属性の取得時にエラーが発生しました : %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: カレントディレクトリの取得時にエラーが発生しました : %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: 曖昧なジョブ指定です" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "このバージョンではヘルプが利用できません" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: 無効なアクション名です" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: 補完指定がありません" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "警告: -F オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "警告: -C オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "補完機能は現在実行されていません" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "関数の中でのみ使用できます" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 参照変数は配列であってはいけません" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 自身を参照する名前参照変数は許可されていません" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: 循環名前参照です" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 名前参照として無効な変数です" +msgstr "`%s': 名前参照として無効な変数です" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "関数作成時に `-f' を使用できません" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: 読み取り専用関数です" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: この方法で配列変数を消去することはできません" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 連想配列からインデックス配列に変換することはできません" @@ -395,7 +397,7 @@ msgstr "%s が共有オブジェクト %s に存在しません: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "関数 %s のロードが失敗を返しました(%d): ロードされませんでした" #: builtins/enable.def:512 #, c-format @@ -407,68 +409,68 @@ msgstr "%s: 動的にロードされていません" msgid "%s: cannot delete: %s" msgstr "%s: 削除できません: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: ディレクトリです" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: 通常ファイルではありません" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: ファイルが大きすぎます" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: バイナリファイルを実行できません" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 実行できません: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "ログアウト\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ログインシェルではありません: `exit' を使用してください" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "停止しているジョブがあります。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "動作中のジョブがあります。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "コマンドが見つかりません" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "ヒストリ指定" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 一時ファイルを開くことができません: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "カレント" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "ジョブ %d がジョブ制御なしで開始されました" @@ -483,27 +485,26 @@ msgstr "%s: 不正なオプションです -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: オプションには引数が必要です -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "ハッシュが無効になっています" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: ハッシュテーブルが空です\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "キーワードに一致したシェルコマンド `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +512,12 @@ msgstr "" "`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info " "%s' を試してください" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 開くことができません: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -538,20 +539,21 @@ msgstr "" "味します。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "-anrw を2つ以上一緒に使用することはできません" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "ヒストリ位置" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 無効な引数です" +msgstr "%s: 無効なタイムスタンプです" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: ヒストリの展開に失敗しました" @@ -565,16 +567,16 @@ msgstr "%s: inlib が失敗しました" msgid "no other options allowed with `-x'" msgstr "`-x' は他のオプションを同時に使用できません" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引数はプロセスIDかジョブIDでなければいけません" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "不明なエラーです" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "式が予期されます" @@ -583,69 +585,69 @@ msgstr "式が予期されます" msgid "%s: not an indexed array" msgstr "%s: インデックス配列ではありません" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無効なファイル記述子指定です" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無効なファイル記述子: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: 無効な行数です" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無効な配列の原点です" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: コールバックの quantum が無効です" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空の配列変数名です" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "配列変数のサポートが必要です" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': 書式指定文字がありません" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 無効な時間書式指定です" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 無効な書式指定文字です" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "書式解析問題です: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "\\x 用の十六進数字がありません" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "\\%c 用のユニコード数値がありません" @@ -659,19 +661,19 @@ msgstr "他のディレクトリはありません" msgid "%s: invalid argument" msgstr "%s: 無効な引数です" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<カレントディレクトリがありません>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "ディレクトリスタックが空です" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "ディレクトリスタックのインデックス" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -713,7 +715,7 @@ msgstr "" " -N\tオプションなしで起動された場合にリストの末尾から数えて\n" "\tN番目の要素を表示します。開始番号は0です。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -757,7 +759,7 @@ msgstr "" " \n" " `dirs' ビルトインコマンドでディレクトリスタックを表示します。" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -795,67 +797,67 @@ msgstr "" " \n" " `dirs' ビルトインコマンドでディレクトリスタックを表示します。" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無効なタイムアウト指定です" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "読み込みエラー: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "`return' は関数または source されたスクリプト内のみで利用できます" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "変数と関数を同時に消去することはできません" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: 消去できません" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 消去できません: %s は読み取り専用です" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: 配列変数ではありません" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: 関数ではありません" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: 消去できません" +msgstr "%s: export できません" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "シフト回数" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "シェルオプションを同時に有効かつ無効にできません" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無効なシェルオプション名です" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "ファイル名が引数として必要です" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: ファイルが見つかりません" @@ -868,61 +870,61 @@ msgstr "中断できません" msgid "cannot suspend a login shell" msgstr "ログインシェルを中断できません" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s は `%s' のエイリアスです\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s はシェルの予約語です\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s は関数です\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s はシェル組み込み関数です\n" +msgstr "%s は特殊シェル組み込み関数です\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s はシェル組み込み関数です\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s は %s です\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s はハッシュされています (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: limit の無効な引数です" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': 誤ったコマンドです" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit を取得できません: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit を変更できません : %s" @@ -941,202 +943,207 @@ msgstr "`%c': 無効なシンボリックモード演算子です" msgid "`%c': invalid symbolic mode character" msgstr "`%c': 無効なシンボリックモード文字です" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " 行 " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "最後のコマンド: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止しています..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "情報: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "不明なコマンドエラーです" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "誤ったコマンドタイプです" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "誤った接続です" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "誤ったジャンプです" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: 未割り当ての変数です" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a入力待ちがタイムアウトしました: 自動ログアウト\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null から標準入力に対してリダイレクトできません: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': 無効な書式文字です" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "パイプエラー" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4624 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" +msgstr "eval: eval の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4636 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" +msgstr "%s: source の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 関数の入れ子レベルの最大値を超えています (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 制限されています: `/' をコマンド名の中に指定できません" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: コマンドが見つかりません" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 誤ったインタプリタです" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: バイナリファイルを実行できません: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': 特殊シェル組み込み関数です" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d を fd %d に複製できません" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "式の再帰可能レベルを越えました" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "再帰スタックがアンダーフローしました" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "式に構文エラーがあります" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "非変数に割り当てを行おうとしてます" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "式に構文エラーがあります" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "0 による除算です" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "バグ: 誤った式のトークンです" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "条件式には `:' が予期されます" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "0より小さい指数部です" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "識別子は前置インクリメントまたは前置デクリメントが予期されます" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "`)' がありません" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "構文エラー: オペランドが予期されます" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "構文エラー: 無効な計算演算子です" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (エラーのあるトークンは \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "無効な基底の数値です" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "基底の値が大きすぎます" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: 式のエラー\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 親ディレクトリにアクセスできません" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "新規ファイル記述子(fd) %d を bash の入力として割り当てられません" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します" @@ -1145,153 +1152,158 @@ msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "実行中のジョブ %2$d で fork した pid %1$d が出現しました" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "プロセスグループ %2$ld のジョブ %1$d を削除しています" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: プロセス %5ld (%s) が the_pipeline にあります" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) はまだ存在しているとマークされています" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: そのような pid は存在しません" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "シグナル %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "終了" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "停止" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "停止 (%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "実行中" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "終了(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "終了 %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "不明なステータス" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(コアダンプ) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子プロセス setpgid (%ld から %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld はこのシェルの子プロセスではありません" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: プロセス %ld の記録がありません" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: ジョブ %d は停止しています" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: ジョブは終了しました" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: ジョブ %d はすでにバックグラウンドで動作しています" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 不定のブロックを避けるために WNOHANG をオンにしました。" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: %d 行: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (コアダンプ)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp が失敗しました" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: line discipline" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "端末プロセスグループを設定できません (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "このシェルではジョブ制御が無効になっています" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 失敗したアサーション: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1300,39 +1312,39 @@ msgstr "" "\r\n" "malloc: %s:%d: アサーション失敗\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: free ブロックリストが壊れています" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: 既に free されたブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: 開始と終了の塊の大きさが異なっています" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: 未割当のブロックを引数として呼び出されました" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: アンダーフローを検出しました。 mh_nbytes が範囲外です" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 開始と終了の塊の大きさが異なっています" @@ -1374,22 +1386,22 @@ msgstr "%s: ネットワークパス指定に誤りがあります" msgid "network operations not supported" msgstr "ネットワーク操作はサポートされていません" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ロケールを変更できません (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ロケールを変更できません (%s): %s" @@ -1407,148 +1419,148 @@ msgstr "新しいメールが $_ にあります" msgid "The mail in %s has been read\n" msgstr "%s のメールは既読です\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "構文エラー: 数値の式が必要です" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "構文エラー: 予期しない `;' です" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "構文エラー: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 誤った指定の種類 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: リダイレクト指定 `%d' は範囲外です" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "対応する `%c' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "条件式に構文エラー: 予期しないトークン `%s' です" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "条件式に構文エラーがあります" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "予期しないトークン `%s' です。`)' が予期されます" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "`)' が予期されます" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "条件単項演算子に予期しない引数 `%s' です" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "条件単項演算子に予期しない引数です" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "`%s` は予期しないトークンです。条件二項演算子が予期されます" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "条件二項演算子が予期されます" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "条件二項演算子に予期しない引数 `%s' です" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "条件二項演算子に予期しない引数です" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "条件コマンドに予期しないトークン `%c' があります" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "条件コマンドに予期しないトークン `%s' があります" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件コマンドに予期しないトークン %d があります" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "予期しないトークン `%s' 周辺に構文エラーがあります" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 周辺に構文エラーがあります" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "構文エラー: 予期しないファイル終了 (EOF) です" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "構文エラー" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "シェルから脱出するには \"%s\" を使用してください。\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "対応する `)' を探索中に予期しないファイル終了(EOF)です" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: 関数 `%s' が見つかりません" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1558,109 +1570,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 誤った接続 `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 無効なファイル記述子です" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL ファイルポインタです" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 無効な書式文字です" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "ファイル記述子が範囲外です" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 曖昧なリダイレクトです" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 存在するファイルを上書きできません" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 制限されています: 出力をリダイレクト出来ません" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ヒアドキュメント用一時ファイルを作成できません: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ファイル記述子 (fd) を変数に設定することはできません" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "ネットワークが無効な場合 /dev/(tcp|udp)/host/port はサポートされません" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "リダイレクトエラー: ファイル記述子を複製できません" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp が見つかりません。作成してください!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp は有効なディレクトリ名でなければいけません" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 無効なオプション" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" +msgstr "uidを %d に設定できません: 実効uid %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" +msgstr "gidを %d に設定できません: 実効gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "デバッガを開始できません。デバッガモードが無効になっています" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: ディレクトリです" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "私は名前がありません!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, バージョン %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1669,50 +1685,51 @@ msgstr "" "使用法:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 形式の長いオプション:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "シェルオプション:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, -c command または -O shopt_option\t\t(起動時のみ)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s または -o option\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "シェル組み込みコマンドについては `%s -c help' と入力してください。\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "バグ報告をする場合は `bashbug' コマンドを使用してください。\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bashホームページ: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" +"GNUソフトウェアを使用する時の一般的なヘルプ : \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 無効な操作です" @@ -1886,21 +1903,21 @@ msgstr "不明なシグナル番号" msgid "Unknown Signal #%d" msgstr "不明なシグナル番号 %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "誤った代入: 閉じる `%s' が %s に存在しません" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: リストを配列要素に割り当てできません" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "プロセス代入ではパイプを作成できません" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "プロセス代入では子プロセスを作成できません" @@ -1919,70 +1936,75 @@ msgstr "名前付きパイプ %s を書き込み用に開けません" msgid "cannot duplicate named pipe %s as fd %d" msgstr "名前付きパイプ %s をファイル記述子(fd) %d として複製できません" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "コマンド代入ではパイプを作成できません" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "コマンド代入では子プロセスを作成できません" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: パイプを fd 1 として複製できません" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 名前参照として無効な変数です" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 誤った代入です" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: 無効な行数です" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': 無効なエイリアス名です" +msgstr "%s: 無効な変数名です" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: パラメータが null または設定されていません" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: パラメータが null または設定されていません" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 誤った代入です" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: この方法で割当はできません" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "将来のバージョンのシェルでは強制的に数値代入として評価されます" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "一致しません: %s" @@ -2005,30 +2027,30 @@ msgstr "`)' が予期されます" msgid "`)' expected, found %s" msgstr "`)' が予期されますが、見つかったのは %s です" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: 単項演算子が予期されます" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: 二項演算子が予期されます" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "`]'がありません" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "無効なシグナル番号" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] に誤った値があります: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2036,86 +2058,85 @@ msgstr "" "run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送し" "ます。" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 誤ったシグナル %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' の関数定義をインポート中にエラーが発生しました" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "シェルレベル (%d) は高すぎます。1に再設定されました" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 現在のスコープは関数コンテキストではありません" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 変数が初期化されていないかもしれません" -#: variables.c:3043 +#: variables.c:3246 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: 名前参照として無効な変数です" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 現在のスコープは関数コンテキストではありません" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s は null の exportstr を持っています" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s に対する exportstr で %1$d は無効な文字です" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s に対する exportstr に `=' がありません" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: shell_variables の先頭です。関数コンテキストではありません" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: global_variables コンテキストではありません" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables の先頭です。一時環境スコープではありません" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ファイルとして開くことができません" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: トレースファイル記述子として無効な値です" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 値の互換性が範囲外です" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2138,22 +2159,22 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %lu バイトを割当できません (%lu バイトを割当済み)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: %lu バイトを割当できません" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: %lu バイトを割当できません (%lu バイトを割当済み)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu バイトを割当できません" @@ -2207,9 +2228,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2280,9 +2300,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] または jobs -x command [args]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" #: builtins.c:134 msgid "" @@ -2357,16 +2376,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2468,12 +2487,11 @@ msgstr "" "suffix] [name ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:239 @@ -2481,18 +2499,18 @@ msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o option] [-DE] [name ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2932,11 +2950,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3498,7 +3516,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3533,7 +3551,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3590,7 +3609,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3637,7 +3656,7 @@ msgstr "" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。\n" " もし -x が使用された場合、COMMAND の終了ステータスを返します。" -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3670,7 +3689,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションか JOBSPEC が与えられない限り成功を返します。" -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3716,7 +3735,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3801,7 +3820,7 @@ msgstr "" " ARG の最終的な評価値が 0 の場合 let は 1 を返します。それ以外の場合は\n" " let は 0 を返します。" -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3823,7 +3842,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3900,7 +3919,7 @@ msgstr "" "エ\n" " ラーが発生、 -u に無効なファイル記述子が与えられた場合を除き0を返します。" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3924,7 +3943,7 @@ msgstr "" "を\n" " 返します。" -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4090,7 +4109,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4132,7 +4151,7 @@ msgstr "" " 無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返し" "ます。" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4167,7 +4186,7 @@ msgstr "" " 無効なオプションが与えられるか、無効な NAME が与えられない限り成功\n" " を返します。" -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4207,7 +4226,7 @@ msgstr "" " 無効なオプションが与えられるか、与えられた NAME が無効な場合を除き成功\n" " を返します。" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4225,7 +4244,7 @@ msgstr "" " 終了ステータス:\n" " Nが負の値または $# より大きい場合を除き成功を返します。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4249,7 +4268,7 @@ msgstr "" " FILENAME で最後に実行したコマンドのステータスを返します。FILENAME が\n" " 読み込めなかった場合は失敗を返します。" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4273,7 +4292,7 @@ msgstr "" " 終了ステータス:\n" " ジョブ制御が有効でないかエラーが発生しない限り成功を返します。" -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4435,7 +4454,7 @@ msgstr "" "または\n" " 引数が無効な場合に失敗を返します。" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4448,7 +4467,7 @@ msgstr "" "致\n" " するように文字`]'を与えなければいけません。" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4468,7 +4487,7 @@ msgstr "" " 終了ステータス:\n" " 常に成功を返します。" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4550,7 +4569,7 @@ msgstr "" " 終了ステータス:\n" " SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。" -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4609,7 +4628,7 @@ msgstr "" "合\n" " は失敗を返します。" -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4702,7 +4721,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションを与えるか、エラーが発生しない限り、成功を返します。" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4736,7 +4755,8 @@ msgstr "" " 終了ステータス:\n" " MODE が無効か、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4744,13 +4764,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4767,7 +4789,7 @@ msgstr "" " 最後の ID の終了ステータスを返します。IDが無効であるか、無効なオプ\n" " ションが与えられた場合には失敗を返します。" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4793,7 +4815,7 @@ msgstr "" "えられた\n" " 場合は失敗します。" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4814,7 +4836,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4844,7 +4866,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4879,7 +4901,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4907,7 +4929,7 @@ msgstr "" " 終了ステータス:\n" " PIPELINE の戻り値が終了ステータスとなります。" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4926,7 +4948,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4960,7 +4982,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドの終了ステータスを返します。" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4978,7 +5000,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4996,7 +5018,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5019,7 +5041,7 @@ msgstr "" " 終了ステータス:\n" " COMMAND の終了ステータスを返します。" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5044,7 +5066,7 @@ msgstr "" " 終了ステータス:\n" " NAME が読み取り専用でない限り成功を返します。" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5062,7 +5084,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5085,7 +5107,7 @@ msgstr "" " 終了ステータス:\n" " 再開されたジョブの終了ステータスを返します。" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5103,7 +5125,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5158,7 +5180,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の値に基づいて 0 または 1 を返します。" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5259,7 +5281,7 @@ msgstr "" " HISTIGNORE\tヒストリ一覧に保存されるコマンドを決める時に使用される\n" " \t\tコロン (:) で区切られたパターンの一覧。\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5319,7 +5341,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5371,7 +5393,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5424,14 +5446,14 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5460,7 +5482,7 @@ msgstr "" " OPTNAME が有効な場合は成功を返します。無効なオプションが与えられた場合\n" " または OPTNAME が無効な場合は失敗を返します。" -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5530,7 +5552,7 @@ msgstr "" " 無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返し" "ます。" -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5580,7 +5602,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5602,7 +5624,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5658,7 +5680,7 @@ msgstr "" "合\n" " を除き、成功を返します。" -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5735,7 +5757,7 @@ msgstr "" "列で無い\n" " 場合を除き成功を返します。" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5745,9 +5767,8 @@ msgstr "" " \n" " `mapfile'の別名です。" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." #~ msgid ":" #~ msgstr ":" @@ -5760,6 +5781,3 @@ msgstr "" #~ msgid "times" #~ msgstr "times" - -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." diff --git a/po/lt.gmo b/po/lt.gmo index 36a127952..87cee0fcb 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 2594d1d1a..729afadc7 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,131 +7,131 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2009-03-25 16:49+0200\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: lt\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" "100<10 || n%100>=20) ? 1 : 2);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "blogas masyvo indeksas" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nepavyko priskirti prie neskaitinio indekso" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nepavyko sukurti: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pirmas ne tarpo simbolis nėra „\"“" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "nėra uždarančiojo „%c“ %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: trÅ«ksta dvitaÅ¡kio skirtuko" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "eilutės redagavimas neįgalintas" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nepavyko perskaityti: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nepavyko atjungti (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: nežinomas funkcijos pavadinimas" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nėra priskirtas jokiam klaviÅ¡ui.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s gali bÅ«ti iÅ¡kviestas su " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nepavyko atjungti (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "prasminga tik „for“, „while“ arba „until“ cikle" @@ -143,163 +143,163 @@ msgid "" " Without EXPR, returns " msgstr "Grąžina esamos procedÅ«ros kontekstą." -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME nenustatytas" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "per daug argumentų" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "steko viršūnėje esančiu." -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD nenustatytas" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "eilutė %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "įspėjimas: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: naudojimas: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: parametrui reikia argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: reikia skaitinio argumento" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nerasta" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: negalimas parametras" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: netaisyklingas parametro vardas" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': netaisyklingas identifikatorius" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "netaisyklingas aÅ¡tuonetainis skaičius" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaičius" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "netaisyklingas skaičius" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: netaisyklinga signalo specifikacija" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: kintamasis tik skaitymui" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s išėjo už ribų" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumentas" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s už ribų" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: nėra tokio darbo" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nėra darbų valdymo" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nėra darbų valdymo" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: apribota" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "apribota" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ne vidinė aplinkos komanda" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "raÅ¡ymo klaida: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: klaida skaitant esamą aplanką: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dviprasmis darbo apraÅ¡ymas" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -308,69 +308,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: nėra baigimo specifikacijos" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "galima naudoti tik funkcijoje" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "negalima naudoti „-f“ funkcijoms kurti" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija tik skaitymui" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: negalima tokiu bÅ«du sunaikinti masyvų kintamųjų" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -404,68 +404,68 @@ msgstr "%s: nedinamiÅ¡kai įkrauta" msgid "%s: cannot delete: %s" msgstr "%s: nepavyko iÅ¡trinti: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: aplankas" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ne paprastas failas" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: failas per didelis" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: negalima vykdyti dvejetainių failų" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nepavyko paleisti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ne prisijungimo aplinka: naudokite „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Yra sustabdytų darbų.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Yra veikiančių darbų.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "komandų nerasta" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "istorijos specifikacija" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "darbas %d pradėtas be darbų valdymo" @@ -480,29 +480,29 @@ msgstr "%s: neleistinas parametras -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: parametrui reikia argumento -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "maiÅ¡a iÅ¡jungta" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: maiÅ¡os lentelė tuščia\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "paskutinė komanda: %s\n" -#: builtins/help.def:135 -#, fuzzy, c-format +#: builtins/help.def:133 +#, fuzzy msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Aplinkos komandos, atitinkančios raktažodį „" msgstr[1] "Aplinkos komandos, atitinkančios raktažodį „" msgstr[2] "Aplinkos komandos, atitinkančios raktažodį „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +510,12 @@ msgstr "" "nėra žinyno temų, atitinkančių „%s“. Bandykite „help help“, „man -k %s“ arba " "„info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nepavyko atverti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,20 +536,21 @@ msgstr "" "Žvaigždutė (*) prie vardo reiÅ¡kia, kad komanda iÅ¡jungta.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "negalima naudoti daugiau negu vieno parametro iÅ¡ -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "istorijos pozicija" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: netaisyklingas limito argumentas" +msgstr "%s: netaisyklingas parametro vardas" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: istorijos iÅ¡skleidimas nesėkmingas" @@ -563,16 +564,16 @@ msgstr "%s: istorijos iÅ¡skleidimas nesėkmingas" msgid "no other options allowed with `-x'" msgstr "su „-x“ neleidžiama naudoti kitų parametrų" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentai turi bÅ«ti procesų arba darbų ID" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nežinoma klaida" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "tikėtasi iÅ¡raiÅ¡kos" @@ -581,70 +582,70 @@ msgstr "tikėtasi iÅ¡raiÅ¡kos" msgid "%s: not an indexed array" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 #, fuzzy msgid "empty array variable name" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s“: trÅ«ksta formato simbolio" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: netaisyklingas formato simbolis" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "įspėjimas: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" @@ -658,20 +659,20 @@ msgstr "nėra kito aplanko" msgid "%s: invalid argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 #, fuzzy msgid "directory stack index" msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -695,7 +696,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -720,7 +721,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -741,45 +742,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "skaitymo klaida: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "galima grįžti (return) tik iÅ¡ funkcijos ar scenarijaus" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "negalima kartu iÅ¡trinti funkcijos ir kintamojo" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: nepavyko iÅ¡trinti" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nepavyko iÅ¡trinti: %s tik skaitymui" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ne masyvo kintamasis" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ne funkcija" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nepavyko iÅ¡trinti" @@ -788,20 +789,20 @@ msgstr "%s: nepavyko iÅ¡trinti" msgid "shift count" msgstr "postÅ«mių skaičius" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "negalima aplinkos nuostatos vienu metu įjungti ir iÅ¡jungti" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "reikia failo pavadinimo argumento" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: failas nerastas" @@ -814,61 +815,61 @@ msgstr "nepavyko sustabdyti" msgid "cannot suspend a login shell" msgstr "nepavyko sustabdyti prisijungimo aplinkos" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s yra „%s“ sinonimas\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s yra aplinkos raktinis žodis\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s yra funkcija\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s yra aplinkos vidinė komanda\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s yra aplinkos vidinė komanda\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s yra %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s yra heÅ¡uotas (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': bloga komanda" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nepavyko gauti limito: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "riba" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nepavyko pakeisti limito: %s" @@ -887,204 +888,209 @@ msgstr "„%c“: netaisyklingas simbolinės veiksenos operatorius" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: netaisyklingas simbolinės veiksenos simbolis" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " eilutė " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "paskutinė komanda: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Nutraukiama..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nežinoma komandos klaida" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "blogas komandos tipas" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "blogas jungtukas" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "blogas Å¡uolis" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nepriskirtas kintamasis" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\alaukiant įvedimo baigėsi laikas: automatiÅ¡kai atsijungta\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nepavyko peradresuoti standartinio įvedimo iÅ¡ /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 #, fuzzy msgid "pipe error" msgstr "raÅ¡ymo klaida: %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: komanda nerasta" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, fuzzy, c-format msgid "%s: %s" msgstr "%s yra %s\n" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: blogas interpretatorius" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: negalima vykdyti dvejetainių failų" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s yra aplinkos vidinė komanda\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "virÅ¡ytas iÅ¡raiÅ¡kos rekursijos lygis" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "sintaksės klaida iÅ¡raiÅ¡koje" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "bandymas priskirti ne kintamajam" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "sintaksės klaida iÅ¡raiÅ¡koje" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "dalyba iÅ¡ 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "klaida: bloga expassign leksema" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "sąlygos iÅ¡raiÅ¡koje tikėtasi „:“" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponentė mažesnis už 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "po prieÅ¡-didinimo ar prieÅ¡-mažinimo operatoriaus tikėtasi identifikatoriaus" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "TrÅ«ksta „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "sintaksės klaida: tikėtasi operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "netaisyklingas aritmetinis pagrindas" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "per didelė pagrindo reikÅ¡mė" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: iÅ¡raiÅ¡kos klaida\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nepavyko pasiekti aukÅ¡tesnių aplankų" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nepavyko iÅ¡skirti naujo failo deskriptoriaus bash įvedimui iÅ¡ fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" @@ -1093,153 +1099,157 @@ msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tokio pid nėra" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signalas %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Atlikta" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Atlikta(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Nežinoma bÅ«sena" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nėra Å¡ios aplinkos dukterinis procesas" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nėra proceso %ld įraÅ¡o" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: darbas %d yra sustabdytas" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: darbas užsibaigė" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: darbas %d jau fone" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: %d eilutė: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "Å¡ioje aplinkoje nėra darbų valdymo" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: pažeista prielaida: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1248,39 +1258,39 @@ msgstr "" "\r\n" "malloc: %s:%d: prielaida pažeista\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "nežinoma" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blokas iÅ¡ laisvų blokų sąraÅ¡o sugadintas" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: iÅ¡kviestas su jau atlaisvintu bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: iÅ¡kviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: iÅ¡kviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" @@ -1322,22 +1332,22 @@ msgstr "%s: netaisyklingas tinklo kelias" msgid "network operations not supported" msgstr "tinklo operacijos nepalaikomos" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 +#: locale.c:272 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" -#: locale.c:261 +#: locale.c:274 #, fuzzy, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" @@ -1355,147 +1365,147 @@ msgstr "Turite naujų laiÅ¡kų $_" msgid "The mail in %s has been read\n" msgstr "PaÅ¡tas %s perskaitytas\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "sintaksės klaida: reikia aritmetinės iÅ¡raiÅ¡kos" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "sintaksės klaida: netikėtas „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksės klaida: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: blogas instrukcijos tipas %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "netikėta failo pabaiga ieÅ¡kant atitinkamo „%c“" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "netikėta failo pabaiga ieÅ¡kant „]]“" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksės klaida sąlygos iÅ¡raiÅ¡koje: netikėta leksema „%s“" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "sintaksės klaida sąlygos iÅ¡raiÅ¡koje" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "netikėta leksema „%s“, tikėtasi „)“" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "tikėtasi „)“" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "netikėtas argumentas sąlygos unariniam operatoriui" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "tikėtasi sąlygos binarinio operatoriaus" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "netikėtas argumentas sąlygos binariniam operatoriui" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "netikėta leksema „%c“ sąlygos komandoje" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "netikėta leksema „%s“ sąlygos komandoje" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "netikėta leksema %d sąlygos komandoje" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksės klaida prie netikėtos leksemos: „%s“" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "sintaksės klaida prie „%s“" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "sintaksės klaida: netikėta failo pabaiga" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "sintaksės klaida" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Naudokite „%s“, jei norite iÅ¡eiti iÅ¡ ap.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "netikėta failo pabaiga ieÅ¡kant atitinkamo „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s“ nerasta" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1505,109 +1515,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: blogas jungtukas  „%d“" -#: print_cmd.c:375 +#: print_cmd.c:373 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: netaisyklingas formato simbolis" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "failo deskriptorius už ribų" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: negalima perraÅ¡yti egzistuojančio failo" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: apribota: negalima peradresuoti iÅ¡vedimo" -#: redir.c:192 +#: redir.c:188 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "nukreipimo klaida: nepavyko dublikuoti fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp turi bÅ«ti taisyklingas aplanko pavadinimas" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: netaisyklingas parametras" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: aplankas" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Neturiu vardo!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versija %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1616,53 +1630,53 @@ msgstr "" "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU ilgi parametrai:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Aplinkos parametrai:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iÅ¡kvietimui)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s arba -o nustatymas\n" -#: shell.c:1959 +#: shell.c:2009 #, fuzzy, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau " "informacijos.\n" -#: shell.c:1960 +#: shell.c:2010 #, fuzzy, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos." -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Naudokite komandą „bashbug“ klaidoms praneÅ¡ti.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: netaisyklinga operacija" @@ -1837,21 +1851,21 @@ msgstr "Nežinomas signalas #" msgid "Unknown Signal #%d" msgstr "Nežinomas signalas #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "" @@ -1870,70 +1884,75 @@ msgstr "" msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6580 subst.c:8939 -#, fuzzy, c-format -msgid "%s: invalid variable name for name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" - -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6641 subst.c:9483 #, c-format -msgid "%s: bad substitution" -msgstr "%s: blogas keitinys" +msgid "%s: invalid variable name for name reference" +msgstr "" -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: nesamas parametras" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "„%s“: netaisyklingas keymap'o pavadinimas" +msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametras tuščias arba nenustatytas" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: blogas keitinys" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: negalima tokiu bÅ«du priskirti" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "nėra atitikmenų: %s" @@ -1956,106 +1975,106 @@ msgstr "tikėtasi „)“" msgid "`)' expected, found %s" msgstr "tikėtasi „)“, rasta %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: tikėtasi unarinio operatoriaus" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: tikėtasi binarinio operatoriaus" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "trÅ«ksta „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "netaisyklingas signalo numeris" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: bloga trap_list[%d] reikÅ¡mė: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: signalo doroklė yra SIG_DFL, siunčiamas %d (%s) sau" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: blogas signalas %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "klaida importuojant funkcijos apibrėžimą „%s“" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "aplinkos lygmuo (%d) per aukÅ¡tas, nustatoma į 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" +msgstr "" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametras tuščias arba nenustatytas" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "netaisyklingas simbolis %d %s exportstr'e" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s exportstr'e trÅ«ksta „=“" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nėra global_variables konteksto" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 +#: variables.c:5862 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nepavyko atverti: %s" -#: variables.c:5624 +#: variables.c:5867 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s išėjo už ribų" @@ -2089,22 +2108,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nėra JOKIOS GARANTIJOS, kiek tik tą leidžia įstatymas.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų (%lu baitų iÅ¡skirta)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" msgstr "xmalloc: nepavyko iÅ¡skirti %lu baitų" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" @@ -2318,13 +2337,13 @@ msgstr "umask [-p] [-S] [režimas]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2436,8 +2455,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2727,11 +2746,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3036,7 +3055,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3052,7 +3071,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3077,7 +3097,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3101,7 +3121,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3118,7 +3138,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3141,7 +3161,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3186,7 +3206,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3207,7 +3227,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3238,7 +3258,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3250,7 +3270,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3336,7 +3356,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3358,7 +3378,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3377,7 +3397,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3398,7 +3418,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3409,7 +3429,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3428,7 +3448,7 @@ msgstr "" " Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iÅ¡kvietus\n" " FAILĄ." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3442,7 +3462,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3525,7 +3545,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3533,7 +3553,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3545,7 +3565,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3589,7 +3609,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3619,7 +3639,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3668,7 +3688,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3686,7 +3706,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3694,19 +3714,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3721,7 +3743,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3734,7 +3756,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3751,7 +3773,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3771,7 +3793,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3787,7 +3809,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3798,7 +3820,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3819,7 +3841,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3833,7 +3855,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iÅ¡\n" " „while“ komandų grąžina klaidos kodą 0." -#: builtins.c:1641 +#: builtins.c:1645 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3847,7 +3869,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iÅ¡\n" " „until“ komandų grąžina klaidos kodą, nelygų 0." -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3860,7 +3882,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3874,7 +3896,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3888,7 +3910,7 @@ msgstr "" "Vykdyti eilę komandų grupėje. Tai yra vienas iÅ¡ bÅ«dų nukreipti\n" " visos eilės komandų įvedimą/iÅ¡vedimą." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3902,7 +3924,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3913,7 +3935,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3941,7 +3963,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3995,7 +4017,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -4026,7 +4048,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4053,7 +4075,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4082,14 +4104,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4103,7 +4124,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4154,7 +4175,7 @@ msgstr "" " Jei pateiktas parametras -v, iÅ¡vedimas įraÅ¡omas į aplinkos kintamąjį\n" " KINT, užuot spausdinus į standartinį iÅ¡vedimą." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4181,7 +4202,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4199,7 +4220,7 @@ msgstr "" " Jei pateiktas nebÅ«tinasis ŽODŽIO argumentas, iÅ¡vedami įraÅ¡ai,\n" " atitinkantys ŽODÄ®." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4230,7 +4251,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4272,16 +4293,21 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" #~ msgid ":" #~ msgstr ":" @@ -4295,34 +4321,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." - -#, fuzzy -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencija GPLv3+: GNU GPL versija 3 arba naujesnė \n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: nepavyko iÅ¡skirti %lu baitų" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" - #~ msgid " " #~ msgstr " " diff --git a/po/nb.gmo b/po/nb.gmo index 63a485d60..0b2e5b262 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index 441d8a003..99fcf1cb2 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1,136 +1,137 @@ # Norwegian (bokmÃ¥l) translation of GNU Bash -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2017 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Åka Sikrom , 2015. +# Åka Sikrom , 2015-2017. # msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-22 12:19+0100\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-03-02 10:45+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmaal \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: Norwegian bokmÃ¥l\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "feil i tabell-underskript" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: fjerner navnref-egenskap" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøkkel for assosiativ tabell" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildeles ikke-numerisk indeks" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: underskript mÃ¥ brukes ved tildeling av assosiative tabeller" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: klarte ikke Ã¥ opprette: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: første ikke-blanktegn mÃ¥ være «\"»" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "avsluttende «%c» mangler i %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolon-skilletegn mangler" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %d elementer" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: ugyldig alias" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "linjeredigering er ikke slÃ¥tt pÃ¥" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: ugyldig navn pÃ¥ tastaturoppsett" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: klarte ikke Ã¥ lese: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: ukjent funksjonsnavn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s er ikke tilknyttet en knapp.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan startes via" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "antall sløyfer" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer" @@ -144,163 +145,162 @@ msgstr "" " \n" " Hvis EXPR mangler, vises" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME har ingen verdi" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "for mange argumenter" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "ingen annen mappe" +msgstr "null-mappe" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD har ingen verdi" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linje %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "advarsel:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: bruk: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: valget krever et argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: valget krever et tall-argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: ikke funnet" +msgstr "fant ikke %s" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldig valg" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ugyldig valgnavn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: ugyldig navn" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ugyldig oktal-tall" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ugldig heksadesimalt tall" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "ugyldig tall" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ugyldig signalspesifikasjon" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s er utenfor rekkevidde" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s er utenfor rekkevidde" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: jobben finnes ikke" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbkontroll" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobbkontroll" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begrenset" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begrenset" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke innebygd i skall" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivefeil: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" -msgstr "feil ved endring av terminal-egenskaper: %s" +msgstr "feil under endring av terminal-egenskaper: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" -msgstr "feil ved henting av terminal-egenskaper: %s" +msgstr "feil under henting av terminal-egenskaper: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: feil ved henting av gjeldende mappe: %s: %s\n" +msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: flertydig jobbspesifikasjon" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hjelp er ikke tilgjengelig for denne versjonen" @@ -309,69 +309,69 @@ msgstr "hjelp er ikke tilgjengelig for denne versjonen" msgid "%s: invalid action name" msgstr "%s: ugyldig handlingsnavn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen spesifikasjon for fullføring" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "fullføringsfunksjon kjøres ikke nÃ¥" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan bare brukes i funksjoner" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referansevariabler kan ikke være tabeller (arrays)" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: navnref.-variabler kan ikke referere til seg selv" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: sirkulær navnreferanse" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ugyldig variabelnavn for navnreferanse" +msgstr "«%s»: ugyldig variabelnavn for navnreferanse" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "valget«-f» kan ikke brukes til Ã¥ lage funksjoner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funksjon" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: sammensatt tabell-tideling i hermetegn er utgÃ¥tt" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tabellvariabler kan ikke ødelegges pÃ¥ denne mÃ¥ten" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller" @@ -405,68 +405,68 @@ msgstr "%s: ikke dynamisk innlastet" msgid "%s: cannot delete: %s" msgstr "%s: klarte ikke Ã¥ slette: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en vanlig fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: fila er for stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: klarte ikke Ã¥ kjøre binærfil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: klarte ikke Ã¥ kjøre: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "logg ut\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ikke innloggingsskall. Bruk «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Bakgrunnsjobb(er) venter.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Bakgrunnsjobb(er) kjører.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "fant ingen kommando" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historikk-spesifikasjon" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: klarte ikke Ã¥ Ã¥pne midlertidig fil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "gjeldende" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "jobb %d startet uten jobbkontroll" @@ -481,28 +481,27 @@ msgstr "%s: -- %c er et ugyldig valg\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: -- %c krever et argument\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "nøkkelsummering er slÃ¥tt av" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: kontrollsum-tabell er tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "treff\tkommando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `" msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +509,12 @@ msgstr "" "ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info " "%s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: klarte ikke Ã¥ Ã¥pne: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +536,21 @@ msgstr "" "slÃ¥tt av.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "du kan ikke bruke flere enn ett av valgene -anrw pÃ¥ én gang" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historikkposisjon" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ugyldig argument" +msgstr "%s: ugyldig tidsstempel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikk-utvidelse mislyktes" @@ -564,16 +564,16 @@ msgstr "%s: inlib mislyktes" msgid "no other options allowed with `-x'" msgstr "valget «-x» kan ikke brukes i kombinasjon med andre valg" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenter mÃ¥ være prosess- eller jobb-ID-er" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Ukjent feil" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "forventet uttrykk" @@ -582,69 +582,69 @@ msgstr "forventet uttrykk" msgid "%s: not an indexed array" msgstr "%s: ikke en indeksert tabell" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig spesifikasjon av fildeskriptor" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ugyldig fildeskriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldig linjeantall" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig tabellopphav" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldig tilbakekallsmengde" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt navn pÃ¥ tabellvariabel" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "støtte for tabellvariabler kreves" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "«%s»: formattegn mangler" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: ugyldig spesifikasjon av tidsformat" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: ugyldig formattegn" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "problem med tolkning av format: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "heks-siffer mangler for \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffer mangler for \\%c" @@ -658,19 +658,19 @@ msgstr "ingen annen mappe" msgid "%s: invalid argument" msgstr "%s: ugyldig argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappestabel er tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappestabel-indeks" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +712,7 @@ msgstr "" " -N\tVis N-te mappe talt fra null\n" "\tpÃ¥ høyre side av lista (gjelder nÃ¥r programmet kjøres uten valg)." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +756,7 @@ msgstr "" " \n" " Den innebygde funksjonen «dirs» viser mappestabelen." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -795,47 +795,47 @@ msgstr "" " \n" " Den innebygde funksjonen «dirs» viser mappestabelen." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig spesifikasjon av tidsavbrudd" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "lesefeil: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "du kan bare «return» fra en funksjon eller kildeskript" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" "du kan ikke utføre «unset» (tømme bÃ¥de en funksjon og en variabel for " "verdier) samtidig" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: klarte ikke Ã¥ fjerne verdi" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: klarte ikke Ã¥ fjerne verdi fra skrivebeskyttet %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en tabellvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funksjon" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: klarte ikke Ã¥ eksportere" @@ -844,20 +844,20 @@ msgstr "%s: klarte ikke Ã¥ eksportere" msgid "shift count" msgstr "shift-antall" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "du kan ikke bÃ¥de definere og fjerne skallvalg samtidig" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldig navn pÃ¥ skallvalg" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnavn-argument kreves" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: fant ikke fil" @@ -870,61 +870,61 @@ msgstr "klarte ikke Ã¥ sette i hvilemodus" msgid "cannot suspend a login shell" msgstr "klarte ikke Ã¥ sette et innloggingsskall i hvilemodus" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s har alias «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s er et skall-nøkkelord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s er en funksjon\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s er en innebygd skallkommando\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s er en innebygget skallfunksjon\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s er %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s er nøkkelsummert («hashed») (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ugyldig grenseargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: ugyldig kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: klarte ikke Ã¥ hente grense: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "grense" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: klarte ikke Ã¥ endre grense: %s" @@ -943,204 +943,209 @@ msgstr "«%c»: ugyldig symbolsk modus-operatør" msgid "`%c': invalid symbolic mode character" msgstr "«%c»: ugyldig symbolsk modustegn" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linje " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "forrige kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abryter …" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "ukjent kommandofeil" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "ugyldig tilkobling" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ugyldig hopp" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: utildelt variabel" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atidsavbrudd for inndata: auto-utlogging\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "klarte ikke Ã¥ videresende standard inndata fra «/dev/null». %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "datarør-feil" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" "eval: grensa for nivÃ¥er av eval-funksjoner i eval-funksjoner (%d) er " "overskredet" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: grensa for nivÃ¥er av kilder i kilder (%d) er overskredet" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" -msgstr "%s: fant ikke kommando" +msgstr "fant ikke kommando %s" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ugyldig tolk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: klarte ikke Ã¥ kjøre binærfil: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "«%s» er en innebygd spesialfunksjon" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "klarte ikke Ã¥ duplisere fd %d til fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "grensa for rekursjonsnivÃ¥er i uttrykk er overskredet" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "rekursjonsstabelen er tom" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "uttrykk inneholder syntaksfeil" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "du forsøkte Ã¥ tilordne en verdi til noe som ikke er en variabel" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "uttrykk inneholder syntaksfeil" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "forsøkte Ã¥ dele pÃ¥ 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "programfeil: ugyldig expassign-symbol" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "forventet «:» for betinget uttrykk" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponent er lavere enn 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "forventet identifikator etter pre-økning eller pre-forminskelse" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "mangler «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntaksfeil: forventet operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfeil: ugyldig aritmetisk operatør" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (feilaktig symbol er «%s»)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grunntall" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "verdien er for høy for grunntallet" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: feil i uttrykk\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: fikk ikke tilgang til foreldermapper" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "klarte ikke Ã¥ knytte ny fildeskriptor til bash-inndata fra fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" @@ -1149,153 +1154,158 @@ msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datarør" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "kopiert pid %d finnes i kjørende jobb %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosess %5ld (%s) i _kommandokø" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: markert PID %5ld (%s) som levende" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid-en finnes ikke" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Ferdig" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Venter" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Venter(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Kjører" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Ferdig(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Avsluttet %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Ukjent status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(kjerne lagret i fil) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underprosess setpgid (%ld til %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld er ikke en underprosess av dette skallet" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen kjennskap til prosess %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: prosess %d venter" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: jobben er avsluttet" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d kjører allerede i bakgrunnen" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG for Ã¥ unngÃ¥ kronisk blokkering" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (kjerne lagret i fil)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nÃ¥: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp mislyktes" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjeregler" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjeregler" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "klarte ikke Ã¥ velge terminal-prosessgruppe (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "ingen jobbkontroll i dette skallet" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: mislykket premiss: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1304,39 +1314,39 @@ msgstr "" "\r\n" "malloc: %s:%d: urimelig premiss\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "ukjent" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: rotete blokk pÃ¥ befrielsesliste" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: ble bedt om Ã¥ behandle blokk som allerede er ledig" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: ble bedt om Ã¥ behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: start- og sluttdel er av ulik størrelse" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: ble bedt om Ã¥ behandle blokk som ikke er tildelt" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- og sluttdel er av ulik størrelse" @@ -1378,22 +1388,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti" msgid "network operations not supported" msgstr "nettverkshandlinger støttes ikke" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s): %s" @@ -1411,260 +1421,266 @@ msgstr "Du har ny e-post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er lest\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaksfeil: aritmetisk uttrykk kreves" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaksfeil: uforventet «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfeil: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: %d er en ugyldig instrukstype" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-dokument ved linje %d adskilt av slutt pÃ¥ fil (forventet «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja " +"er forkortet" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "grensa for maksimalt antall here-dokumenter er overskredet" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «%c»" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «]]»" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntaksfeil i betinget uttrykk" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "forventet ikke symbolet «%s», men «)»" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "forventet «)»" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "«%s» er et uforventet argument for betinget unær operatør" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "uforventet argument for betinget unær operatør" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "forventet betinget binæroperatør" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "«%s» er et uforventet argument for betinget binæroperatør" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "uforventet argument for betinget binæroperatør" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "«%c» er et uforventet symbol i en betinget kommando" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "«%s» er et uforventet symbol i en betinget kommando" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "«%d» er et uforventet symbol i en betinget kommando" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfeil ved «%s», som er et uforventet symbol" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfeil ved «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntaksfeil: uforventet slutt pÃ¥ fil" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntaksfeil" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Bruk «%s» for Ã¥ gÃ¥ ut av skallet.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "fullføring: fant ikke funksjonen «%s»" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: mulig løkke av nye forsøk" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: «%d» er en ugyldig tilkobling" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: ugyldig fildeskriptor" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: filpeker er NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: ugyldig formattegn" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "fildeskriptor er utenfor tillatt rekkevidde" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: flertydig videresending" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: klarte ikke Ã¥ overskrive fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ikke tillatt: klarte ikke Ã¥ videresende utdata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "klarte ikke Ã¥ lage midlertidig fil for here-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: klarte ikke Ã¥ knytte fd til variabel" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "videresendingsfeil: klarte ikke Ã¥ duplisere fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "fant ikke «/tmp». Opprett denne mappa!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "«/tmp» mÃ¥ være et gyldig mappenavn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldig valg" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "klarte ikke Ã¥ velge %d som uid. Effektiv uid: %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "klarte ikke Ã¥ velge %d som gid. Effektiv gid: %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "klarte ikke Ã¥ starte feilsøkingsverktøy. Feilsøkingsmodus slÃ¥tt av" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: er en mappe" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jeg manger navn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versjon %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1673,51 +1689,51 @@ msgstr "" "Bruk:\t%s [langt GNU-valg] [valg] …\n" "\t%s [langt GNU-valg] [valg] skriptfil …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange GNU-valg:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skallvalg:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t«-%s» eller «-o»\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Bruk kommandoen «bashbug» for Ã¥ rapportere programfeil.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "bash-nettside: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Generell hjelp til bruk av GNU-programvare: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1891,21 +1907,21 @@ msgstr "Ukjent signal #" msgid "Unknown Signal #%d" msgstr "#%d er et ukjent signal" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: klarte ikke Ã¥ knytte liste til tabellmedlem" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "klarte ikke Ã¥ lage datarør for substitusjon av prosess" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av prosess" @@ -1924,59 +1940,63 @@ msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for skriving" msgid "cannot duplicate named pipe %s as fd %d" msgstr "klarte ikke Ã¥ duplisere navngitt datarør %s som fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" +msgstr "kommandosubstitusjon: null-byte i inndata ignorert" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "klarte ikke Ã¥ lage datarør for substitusjon av kommando" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av kommando" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: klarte ikke Ã¥ duplisere datarør som fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ugyldig variabelnavn for navnreferanse" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: ugyldig substitusjon" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ugyldig indirekte utvidelse" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: ugyldig variabelnavn" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter har null-verdi eller stÃ¥r tomt" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter har null-verdi eller stÃ¥r tomt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-uttrykk < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ugyldig substitusjon" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: du kan ikke tildele pÃ¥ denne mÃ¥ten" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2004,12 @@ msgstr "" "fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk " "substitusjon" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "ingen treff pÃ¥ %s" @@ -2012,30 +2032,30 @@ msgstr "forventet «)»" msgid "`)' expected, found %s" msgstr "forventet «)», men fant %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: forventet unær operatør" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: forventet binær operatør" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "«]» mangler" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ugyldig signalnummer" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2043,86 +2063,85 @@ msgstr "" "run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv " "pÃ¥ nytt" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: %d er et ugyldig signal" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "feil under importering av definisjonen av funksjonen «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skallnivÃ¥et (%d) er for høyt. Tilbakestiller til 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabel kan ikke tilknyttes verdi" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ugyldig variabelnavn for navnreferanse" +msgstr "%s: knytter heltall til navnreferanse" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s har exportstr som er null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%d er et ugyldig tegn i exportstr for %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "exportstr for %s mangler «=»" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: kontekst for «global_variables» mangler" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: klarte ikke Ã¥ Ã¥pne som FIL" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Opphavsrett (C) 2015 Free Software Foundation, Inc." +msgstr "Opphavsrett (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2147,22 +2166,22 @@ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" "Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: klarte ikke Ã¥ tildele %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte" @@ -2289,9 +2308,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobbspes …] eller jobs -x kommando [arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobbspes …]" +msgstr "disown [-h] [-ar] [jobbspes … | pid …]" #: builtins.c:134 msgid "" @@ -2374,7 +2392,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modus]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id …]" #: builtins.c:181 @@ -2496,9 +2515,10 @@ msgstr "" "tilbakekall] [-c mengde] [tabell]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] " "[-c mengde] [tabell]" @@ -2535,8 +2555,8 @@ msgstr "" " -p\tSkriv ut alle definerte alias i brukbart format\n" " \n" " Avslutningsstatus:\n" -" alias avslutter med positiv verdi («true»), med mindre brukeren angir et " -"NAVN\n" +" alias avslutter med positiv verdi («true»), med mindre bruker skriver inn " +"et NAVN\n" " som mangler definert alias." #: builtins.c:278 @@ -2553,8 +2573,8 @@ msgstr "" " Valg:\n" " -a\tfjern alle alias-definisjoner.\n" " \n" -" Programmet avslutter som vellykket med mindre brukeren velger et " -"aliasNAVN som ikke finnes." +" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN " +"som ikke finnes." #: builtins.c:291 msgid "" @@ -2636,8 +2656,8 @@ msgstr "" " i et format som kan gjenbrukes i inndata.\n" " \n" " Avslutningsstatus:\n" -" bind avslutter med 0, med mindre brukeren tar et ukjent valg eller det " -"oppstÃ¥r en feil." +" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det " +"oppstÃ¥r feil." #: builtins.c:330 msgid "" @@ -2828,7 +2848,7 @@ msgstr "" " «pwd» kjører med valget «-L» som standard.\n" " \n" " Avslutningsstatus:\n" -" Status er 0, med mindre brukeren tar et ugyldig valg eller\n" +" Status er 0, med mindre bruker tar et ugyldig valg eller\n" " programmet ikke klarer Ã¥ lese gjeldende mappe." #: builtins.c:442 @@ -2908,6 +2928,7 @@ msgstr "" "finnes." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2926,11 +2947,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2980,11 +3001,10 @@ msgstr "" " kommandoen «local». Valget «-g» slÃ¥r av denne oppførselen.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller\n" " det oppstÃ¥r en variabel-tildelingsfeil." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2992,7 +3012,7 @@ msgid "" msgstr "" "Gi verdier og attributter til variabler.\n" " \n" -" Denne funksjonen er utgÃ¥tt. Se «help declare»." +" Dette er synonymt med «declare» (se «help declare»)." #: builtins.c:538 msgid "" @@ -3018,7 +3038,7 @@ msgstr "" " for funksjonen de lages innenfor, samt underfunksjoner.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg, det oppstÃ¥r\n" +" Vellykket, med mindre bruker tar et ugyldig valg, det oppstÃ¥r\n" " en feil under variabeltildeling eller skallet ikke kjører en funksjon." #: builtins.c:555 @@ -3154,8 +3174,7 @@ msgstr "" " versjonen som er innebygd i skallet.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstÃ¥r feil." #: builtins.c:634 msgid "" @@ -3234,7 +3253,7 @@ msgstr "" " \n" " getopts rapporterer feil pÃ¥ én av to mÃ¥ter. Hvis første tegn i " "VALGSTRENG\n" -" er kolon, rapporteres feil uten direkte feilmeldinger til brukeren.\n" +" er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n" " Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n" " Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN " "og\n" @@ -3398,7 +3417,7 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det " -"oppstÃ¥r en feil." +"oppstÃ¥r feil." #: builtins.c:773 msgid "" @@ -3421,7 +3440,7 @@ msgstr "" " som gjeldende i skallet.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil." +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r feil." #: builtins.c:787 msgid "" @@ -3464,10 +3483,10 @@ msgstr "" " \t\tover lagrede kommandoer.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre NAVN ikke finnes eller brukeren tar et ugyldig " -"valg." +" Vellykket, med mindre NAVN ikke finnes eller bruker tar et ugyldig valg." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3482,7 +3501,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3504,8 +3523,8 @@ msgstr "" " MØNSTER\tVelger hjelpeemne\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre et MØNSTER ikke finnes eller brukeren tar et " -"ugyldig valg." +" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig " +"valg." #: builtins.c:836 #, fuzzy @@ -3517,7 +3536,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3543,7 +3563,7 @@ msgid "" msgstr "" "Vis eller gjør endringer i kommandohistorikk.\n" " \n" -" Vis historikk som en liste med linjenumre, og legg til en «*» foran\n" +" Vis historikk som en liste med linjenumre, og legg til «*» foran\n" " endrede oppføringer. Argumentet N viser siste N antall oppføringer.\n" " \n" " Valg:\n" @@ -3570,10 +3590,9 @@ msgstr "" " hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3613,11 +3632,11 @@ msgstr "" " jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r " "feil.\n" " Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3646,10 +3665,9 @@ msgstr "" " -r\tbare fjern kjørende jobber\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar ugyldig(e) valg eller JOBBSPES." +" Vellykket, med mindre bruker tar ugyldig(e) valg eller JOBBSPES." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3671,7 +3689,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Send et signal til en jobb.\n" +"Send signal til en jobb.\n" " \n" " Gi prosesser (valgt med PID eller JOBBSPES) et signal\n" " (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er " @@ -3683,18 +3701,17 @@ msgstr "" " -n sig\tSIG er et signalnummer\n" " -l\tvis signalnavn. Hvis «-l» etterfølges av argumenter,\n" " \tantas disse Ã¥ være signalnumre som det skal vises navn pÃ¥\n" +" -L\ttilsvarer «-l»\n" " \n" " Kill er en innebygget skallkommando av to grunner: den tillater bruk av " "jobb-ID\n" -" i stedet for prosess-ID, og lar brukeren drepe prosesser hvis grensa " -"for\n" +" i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n" " antall tillatte prosesser er nÃ¥dd.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3777,7 +3794,8 @@ msgstr "" " Avslutningsstatus:\n" " Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3798,7 +3816,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3872,7 +3890,7 @@ msgstr "" "tidelingsfeil,\n" " eller valget «-u» argumenteres med en ugyldig fildeskriptor." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3892,8 +3910,7 @@ msgstr "" " Avslutningsstatus:\n" " N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3980,7 +3997,7 @@ msgid "" msgstr "" "Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n" " \n" -" Endre verdien av skall-attributter og posisjonsparametre, eller\n" +" Endre verdier av skall-attributter og posisjonsparametre, eller\n" " vis navn og verdier av skallvariabler.\n" " \n" " Valg:\n" @@ -4048,20 +4065,20 @@ msgstr "" " som «cd».\n" " -T Gi DEBUG-felle videre til skallfunksjoner.\n" " -- Tildel gjenstÃ¥ende argumenter til posisjonsparametre.\n" -" Hvis ingen argumenter gjenstÃ¥r, tømmes posisjonsparametrene..\n" -" - Knytt gjenstÃ¥ende argumenter til posisjonsparametrene.\n" +" Hvis ingen argumenter gjenstÃ¥r, tømmes posisjonsparametrene.\n" +" - Knytt gjenstÃ¥ende argumenter til posisjonsparametre.\n" " Valgene «-x» og «-v» er slÃ¥tt av.\n" " \n" -" Bruk «+» i stedet for «-» for Ã¥ skru av disse valgene.\n" -" De kan ogsÃ¥ brukes nÃ¥r skalelt kalles. Gjeldende valgsett finnes\n" +" Bruk «+» i stedet for «-» for Ã¥ slÃ¥ av disse valgene.\n" +" De kan ogsÃ¥ brukes nÃ¥r skallet kalles. Gjeldende valgsett finnes\n" " i «$-». GjenstÃ¥ende antall ARGumenter er posisjonsparametre,\n" " og tildeles i rekkefølge til $1, $2, … $n. Hvis ingen\n" " ARGumenter er brukt, skrives alle skallvariabler ut.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg." +" Vellykket, med mindre bruker tar et ugyldig valg." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4099,10 +4116,10 @@ msgstr "" " Enkelte variabler kan ikke tømmes. Se ogsÃ¥ «readonly».\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller et NAVN er " +" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er " "skrivebeskyttet." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4135,10 +4152,10 @@ msgstr "" " Bruk argumentet«--» for Ã¥ slÃ¥ av videre behandling av valg.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg, eller et NAVN er " +" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er " "ugyldig." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4176,9 +4193,9 @@ msgstr "" " Bruk argumentet «--» for Ã¥ slÃ¥ av videre behandling av valg.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN." +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4196,7 +4213,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre N er negativ eller større enn $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4220,7 +4237,7 @@ msgstr "" " Samme som siste kommando som ble kjørt via FILNAVN, eller\n" " mislykket hvis FILNAVN ikke kan leses." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4244,9 +4261,9 @@ msgstr "" " -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil." +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r feil." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4410,9 +4427,9 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ " "verdi eller\n" -" brukeren bruker et ugyldig argument." +" bruker skriver inn et ugyldig argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4424,7 +4441,7 @@ msgstr "" " Dette er synonymt med den innebygde kommandoen «test», men\n" " siste argument mÃ¥ være «]» for Ã¥ samsvare med «[»." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4443,7 +4460,7 @@ msgstr "" " Avslutningsstatus:\n" " Alltid vellykket." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4525,7 +4542,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4583,7 +4600,7 @@ msgstr "" " Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke " "finnes." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4676,10 +4693,9 @@ msgstr "" "prosesser.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4698,8 +4714,7 @@ msgid "" msgstr "" "Vis eller endre filmodus-maske.\n" " \n" -" Endrer brukerens standardmaske for nye filer til valgt MODUS. Hvis " -"ingen\n" +" Endrer brukers standardmaske for nye filer til valgt MODUS. Hvis ingen\n" " MODUS er valgt, skrives gjeldende maskeverdi ut.\n" " \n" " Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n" @@ -4711,10 +4726,10 @@ msgstr "" " -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre MODUS er ugyldig eller brukeren tar et ugyldig " -"valg." +" Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4722,13 +4737,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4748,9 +4765,9 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n" -" brukeren tar et ugyldig valg." +" bruker tar et ugyldig valg." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4774,9 +4791,9 @@ msgstr "" " \n" " Avslutningsstatus:\n" " Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n" -" brukeren tar et ugyldig valg." +" bruker tar et ugyldig valg." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4797,7 +4814,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4827,7 +4844,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4863,7 +4880,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4893,7 +4910,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som statuskoden fra valgt DATARØR." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4911,7 +4928,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4945,7 +4962,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4963,7 +4980,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4981,8 +4998,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørte kommando." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4994,7 +5010,7 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" -"Lag en medprosess med valgt NAVN.\n" +"Lag medprosess med valgt NAVN.\n" " \n" " Kjør valgt KOMMANDO synkront, med standard inn- og utdata for " "kommandoen\n" @@ -5003,10 +5019,9 @@ msgstr "" " med oppgitt NAVN i kjørende skall.\n" "\v StandardNAVN er «COPROC».\n" " \n" -" Avslutningsstatus:\n" -" Samme som valgt KOMMANDO." +" coproc avslutter med kode 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5030,7 +5045,7 @@ msgstr "" " Avslutningsstatus:\n" " Vellykket, med mindre valgt NAVN er skrivebeskyttet." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5048,7 +5063,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som sist kjørt kommando." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5072,7 +5087,7 @@ msgstr "" " Avslutningsstatus:\n" " Samme som statuskoden for gjenopptatt jobb." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5090,7 +5105,7 @@ msgstr "" " Avslutningsstatus:\n" " 1 hvis UTTRYKK blir 0, og ellers 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5141,7 +5156,7 @@ msgstr "" " Avslutningsstatus:\n" " 0 eller 1, avhengig av UTTRYKKets verdi." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5246,7 +5261,7 @@ msgstr "" " HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n" " \t\thvilke kommandoer som skal lagres i historikklista.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5302,7 +5317,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5351,7 +5366,7 @@ msgstr "" " Vellykket, med mindre et ugyldig argument er brukt eller\n" " mappebytte mislykkes." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5381,11 +5396,11 @@ msgid "" msgstr "" "Vis mappestabel.\n" " \n" -" Vis lista over hurtiglagrede mapper som er hurtiglagret med\n" +" Vis liste over hurtiglagrede mapper som er hurtiglagret med\n" " kommandoen «pushd». Du kan gÃ¥ opp igjen med kommandoen «popd». \n" " Valg:\n" " -c\ttøm mappestabel ved Ã¥ slette alle elementer\n" -" -l\tikke skriv ut undermapper av brukerens hjemmemappe som\n" +" -l\tikke skriv ut undermapper av brukers hjemmemappe som\n" " \trelative stier med tilde-prefiks\n" " -p\tskriv ut mappestabel med én oppføring per linje\n" " -v\ttilsvarer «-p», men med stabelposisjon som prefiks\n" @@ -5395,17 +5410,16 @@ msgstr "" " -N\tVis N-te oppføring (talt fra null til høyre, etter «dirs»).\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5432,10 +5446,10 @@ msgstr "" " -u\tslÃ¥ av (tilbakestill) hvert VALGNAVN\n" " \n" " Avslutningsstatus:\n" -" Vellykket hvis VALGNAVN er slÃ¥tt pÃ¥, og mislykket hvis enten brukeren \n" +" Vellykket hvis VALGNAVN er slÃ¥tt pÃ¥, og mislykket hvis enten bruker \n" " tar et ugyldig valg eller VALGNAVN er slÃ¥tt av." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5500,10 +5514,10 @@ msgstr "" " formatstrenger seg som om de var 0-verdier eller null-strenger.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r en\n" " skrive- eller tidelingsfeil." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5547,10 +5561,9 @@ msgstr "" " fremfor «-E».\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5569,10 +5582,9 @@ msgstr "" " søketreff pÃ¥ ORD.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " -"feil." +" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstÃ¥r feil." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5626,10 +5638,10 @@ msgstr "" " Valgene for den aktuelle fullføringsgeneratoren blir i sÃ¥ fall endret.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n" " mangler fullføringsoppsett." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5705,11 +5717,10 @@ msgstr "" "tildelt noe.\n" " \n" " Avslutningsstatus:\n" -" Vellykket, med mindre brukeren tar et ugyldig valg eller TABELL enten " -"er\n" +" Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n" " skrivebeskyttet eller en ikke-indeksert tabell." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/nl.gmo b/po/nl.gmo index 34efe81bf..fa86734bc 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index f1c2b4729..9f4bde52b 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,8 +1,8 @@ # Dutch translations for GNU bash. -# Copyright (C) 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# “Änderung des Speises tut essen.” +# «Lernfähiger Software! Ich lach mich kaputt!» # # De vertaling van de ruim 70 laatste hulpteksten (65%) in dit bestand # volgt niet helemaal het normale stramien van "onbepaalde wijs voor @@ -17,139 +17,140 @@ # om stilstaan en niet om finale opgave. Een alternatieve vertaling # zou dus "Stilstand" kunnen zijn. # -# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014, 2015. +# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014, 2015, 2016. # Erwin Poeze , 2009. # Julie Vermeersch , 2004. # Erick Branderhorst , 1996. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-18 21:37+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-11-12 16:31+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "ongeldige array-index" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: 'nameref'-eigenschap wordt verwijderd" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ongeldige sleutel voor associatief array" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: niet-numerieke index is niet mogelijk" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "Kan %s niet aanmaken: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "geen sluit-'%c' in %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %d elementen" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ongeldige naam voor alias" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "regelbewerking is niet ingeschakeld" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': ongeldige naam voor toetsenkaart" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "Kan %s niet lezen: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "Kan %s niet losmaken" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "'%s': onbekende functienaam" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is aan geen enkele toets gebonden\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan worden aangeroepen via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "Kan %s niet losmaken" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "herhalingsaantal" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus" @@ -163,163 +164,162 @@ msgstr "" "\n" " Zonder EXPR, resulteert " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME is niet gedefinieerd" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "te veel argumenten" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "geen andere map" +msgstr "null-map" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD is niet gedefinieerd" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "regel %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "waarschuwing: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: Gebruik: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: optie vereist een argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vereist een numeriek argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: niet gevonden" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ongeldige optie" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ongeldige optienaam" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': is geen geldige naam" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ongeldig octaal getal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ongeldig hexadecimaal getal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "ongeldig getal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ongeldige signaalaanduiding" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "'%s': is geen PID en geen geldige taakaanduiding" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: is een alleen-lezen variabele" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s valt buiten bereik" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s valt buiten bereik" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: taak bestaat niet" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: geen taakbesturing" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "geen taakbesturing" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: beperkte modus" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "beperkte modus" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: is geen ingebouwde opdracht van de shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "schrijffout: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fout tijdens instellen van terminaleigenschappen: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: taakaanduiding is niet eenduidig" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hulp is niet beschikbaar in deze versie" @@ -328,69 +328,69 @@ msgstr "hulp is niet beschikbaar in deze versie" msgid "%s: invalid action name" msgstr "%s: ongeldige actienaam" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: is geen completerings-aanduiding" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan alleen worden gebruikt binnen een functie" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: verwijzingsvariabele mag geen array zijn" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: circulaire naamsverwijzing" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" +msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: is een alleen-lezen functie" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan array-variabelen niet op deze manier verwijderen" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" @@ -424,68 +424,68 @@ msgstr "%s: is niet dynamisch geladen" msgid "%s: cannot delete: %s" msgstr "Kan %s niet verwijderen: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: is een map" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: is geen normaal bestand" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: bestand is te groot" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan binair bestand niet uitvoeren" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "Kan %s niet uitvoeren: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "uitgelogd\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "geen login-shell; gebruik 'exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Er zijn nog gepauzeerde taken.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Er zijn nog draaiende taken.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "geen opdracht gevonden" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "geschiedenisaanduiding" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "Kan tijdelijk bestand '%s' niet openen: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "huidige" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "taak %d is gestart zonder taakbesturing" @@ -500,28 +500,27 @@ msgstr "%s: ongeldige optie -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashen is uitgeschakeld" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: de hash-tabel is leeg\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "treffers commando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell-opdrachten die overeenkomen met '" msgstr[1] "Shell-opdrachten die overeenkomen met '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -529,12 +528,12 @@ msgstr "" "Er is geen hulptekst voor '%s'.\n" "Probeer 'help help' of 'man -k %s' of 'info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "Kan %s niet openen: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -556,20 +555,21 @@ msgstr "" "is.)\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "geschiedenispositie" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ongeldig argument" +msgstr "%s: ongeldig tijdsstempel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: geschiedenisexpansie is mislukt" @@ -583,16 +583,16 @@ msgstr "%s: 'inlib' is mislukt" msgid "no other options allowed with `-x'" msgstr "bij '-x' zijn geen andere opties toegestaan" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Onbekende fout" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "uitdrukking werd verwacht" @@ -601,71 +601,71 @@ msgstr "uitdrukking werd verwacht" msgid "%s: not an indexed array" msgstr "%s: is geen geïndexeerd array" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ongeldige aanduiding van bestandsdescriptor" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ongeldige bestandsdescriptor: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ongeldig regelaantal" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ongeldig array-begin" # Quantum is een hoeveelheid regels, een getal. # Callback is de aan te roepen functie, maar onnodig in de vertaling. -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ongeldige hoeveelheid" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "lege naam van array-variabele" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "ondersteuning van arrayvariabelen is vereist" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "'%s': ontbrekend opmaakteken" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': ongeldige aanduiding van tijdsopmaak" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "'%c': ongeldig opmaakteken" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "waarschuwing: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "probleem bij ontleden van opmaak: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "ontbrekend hexadecimaal cijfer bij \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "ontbrekend Unicode-cijfer bij \\%c" @@ -679,19 +679,19 @@ msgstr "geen andere map" msgid "%s: invalid argument" msgstr "%s: ongeldig argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "mappenstapel is leeg" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "mappenstapelindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -731,7 +731,7 @@ msgstr "" " -N Toont het N-de item, tellend vanaf rechts, van de lijst getoond\n" " door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -773,7 +773,7 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -811,47 +811,47 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ongeldige aanduiding van tijdslimiet" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "leesfout: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "kan alleen een 'return' doen uit een functie of een uit script aangeroepen " "met 'source'" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "kan niet tegelijk een functie en een variabele verwijderen" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "Kan '%s' niet verwijderen" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: is geen array-variabele" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: is geen functie" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "Kan '%s' niet exporteren" @@ -860,20 +860,20 @@ msgstr "Kan '%s' niet exporteren" msgid "shift count" msgstr "shift-aantal" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ongeldige shell-optienaam" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vereist een bestandsnaam als argument" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: bestand niet gevonden" @@ -886,61 +886,61 @@ msgstr "kan niet pauzeren" msgid "cannot suspend a login shell" msgstr "kan een inlog-shell niet pauzeren" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is een alias voor '%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is een shell-sleutelwoord\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s is een functie\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s is een speciale ingebouwde shell-functie\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is een ingebouwde shell-functie\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is gehasht (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ongeldige limietwaarde" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "'%c': ongeldige opdracht" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan de limiet niet bepalen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limiet" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan de limiet niet wijzigen: %s" @@ -959,204 +959,209 @@ msgstr "'%c': ongeldige operator in symbolische modus" msgid "`%c': invalid symbolic mode character" msgstr "'%c': ongeldig teken in symbolische modus" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " regel " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "laatste opdracht: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Afbreken..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "informatie: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "onbekende opdrachtfout" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "ongeldig opdrachttype" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "ongeldige verbinder" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ongeldige sprong" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: ongebonden variabele" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "pijpfout" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: opdracht niet gevonden" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ongeldige interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan binair bestand %s niet uitvoeren" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "'%s' is een speciale ingebouwde shell-functie" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "recursieniveau van expressies is overschreden" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "recursiestapel-onderloop" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntaxfout in expressie" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "poging tot toewijzing aan een niet-variabele" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaxfout in expressie" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "deling door nul" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "':' werd verwacht voor een voorwaardelijke expressie" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponent is kleiner dan 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "naam verwacht na pre-increment of pre-decrement" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "ontbrekend ')'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntaxfout: operator verwacht" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfout: ongeldige rekenkundige operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "ongeldige rekenkundige basis" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "waarde is te groot voor basis" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: expressiefout\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "kan geen nieuwe bestandsdescriptor reserveren voor bash-invoer vanuit " "bestandsdescriptor %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1166,155 +1171,160 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): procesgroep van pijp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "afgesplitst PID %d hoort bij draaiende taak %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process(): proces %5ld (%s) in de pijplijn" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): PID %ld bestaat niet" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signaal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Klaar" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Gepauzeerd" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Gepauzeerd(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Wordt uitgevoerd" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Onbekende afsluitwaarde" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(geheugendump gemaakt) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (werkmap: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "instellen van procesgroep %2$ld van dochter %1$ld" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait(): PID %ld is geen dochterproces van deze shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for(): proces %ld is nergens geregistreerd" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job(): taak %d is gepauzeerd" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: taak is afgesloten" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: taak %d draait al op de achtergrond" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te " "vermijden" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: regel %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(werkmap is nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() is mislukt" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: lijnprotocol" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: lijnprotocol" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan procesgroep (%d) van terminal niet instellen" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "er is geen taakbesturing in deze shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc(): controletest is mislukt: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1323,39 +1333,39 @@ msgstr "" "\r\n" "malloc(): %s:%d: controletest is mislukt\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "onbekend" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" @@ -1397,22 +1407,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad" msgid "network operations not supported" msgstr "netwerkoperaties worden niet ondersteund" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s" @@ -1430,264 +1440,270 @@ msgstr "U hebt nieuwe post in $_" msgid "The mail in %s has been read\n" msgstr "De post in %s is gelezen.\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaxfout: onverwachte ';'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfout: '((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document(): ongeldig instructietype %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%" "s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): " +"regel is afgekapt" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "maximum aantal \"hier\"-documenten is overschreden" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntaxfout in conditionele expressie" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "onverwacht symbool '%s'; ')' werd verwacht" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "')' werd verwacht" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "onverwacht argument bij eenzijdige conditionele operator" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "tweezijdige conditionele operator werd verwacht" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "onverwacht argument bij tweezijdige conditionele operator" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "onverwacht symbool '%c' in conditionele opdracht" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "onverwacht symbool '%s' in conditionele opdracht" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "onverwacht symbool %d in conditionele opdracht" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfout nabij onverwacht symbool '%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfout nabij '%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntaxfout: onverwacht bestandseinde" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntaxfout" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik \"%s\" om de shell te verlaten.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion(): functie '%s' niet gevonden" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion(): %s: mogelijke herprobeerlus" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert(): %s: lege COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command(): ongeldige verbinder '%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set(): %d: ongeldige bestandsdescriptor" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set(): bestandspointer is NIL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer " "(%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): '%c': ongeldig opmaakteken" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "bestandsdescriptor valt buiten bereik" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: omleiding is niet eenduidig" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan bestaand bestand niet overschrijven" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "Kan /tmp niet vinden; maak deze aan!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp dient een geldige mapnaam te zijn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ongeldige optie" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "kan UID niet op %d instellen; effectieve UID is %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "kan GID niet op %d instellen; effectieve GID is %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: is een map" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ik heb geen naam!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versie %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1696,51 +1712,51 @@ msgstr "" "Gebruik: %s [opties]\n" " %s [opties] scriptbestand...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Lange opties:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Korte opties:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Webpagina van 'bash': \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Algemene hulp bij gebruik van GNU-software: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: ongeldige operatie" @@ -1917,21 +1933,21 @@ msgstr "Onbekend signaalnummer" msgid "Unknown Signal #%d" msgstr "Onbekend signaal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ongeldige vervanging: geen sluit-'%s' in %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan geen lijst toewijzen aan een array-element" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "kan geen pijp maken voor procesvervanging" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "kan geen dochterproces maken voor procesvervanging" @@ -1950,60 +1966,64 @@ msgstr "kan pijp genaamd %s niet openen om te schrijven" msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "ongeldige vervanging: geen afsluitende '`' in %s" +msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "kan geen pijp maken voor opdrachtvervanging" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "kan geen dochterproces maken voor opdrachtvervanging" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: ongeldige vervanging" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: ongeldige indirecte expansie" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: ongeldige variabelenaam" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: lege parameter, of niet ingesteld" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: lege parameter, of niet ingesteld" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ongeldige vervanging" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan niet op deze manier toewijzen" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2011,12 +2031,12 @@ msgstr "" "toekomstige versies van de shell zullen dit als een rekenkundige vervanging " "evalueren" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ongeldige vervanging: geen afsluitende '`' in %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "geen overeenkomst: %s" @@ -2039,30 +2059,30 @@ msgstr "')' werd verwacht" msgid "`)' expected, found %s" msgstr "')' werd verwacht; %s gevonden" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "eenzijdige operator werd verwacht, %s gevonden" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "tweezijdige operator werd verwacht, %s gevonden" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "ontbrekende ']'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ongeldig signaalnummer" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2070,88 +2090,87 @@ msgstr "" "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan " "mezelf..." -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): ongeldig signaal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "fout tijdens importeren van functiedefinitie voor '%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell-niveau is te hoog (%d); teruggezet op 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: aan variabele mag geen waarde toegewezen worden" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" +msgstr "%s: toekenning van geheel getal aan naamsverwijzing" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "*** %s heeft lege export-tekenreeks" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** geen '=' in export-tekenreeks voor %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): er is geen 'global_variables'-context" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: Kan %s niet openen als BESTAND" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2175,22 +2194,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: kan geen %lu bytes reserveren" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: kan geen %lu bytes reserveren" @@ -2289,8 +2308,8 @@ msgstr "logout [N]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s [PATROON=VERVANGING] " -"[OPDRACHT]" +"fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s " +"[PATROON=VERVANGING] [OPDRACHT]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2313,17 +2332,17 @@ msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: history " -"-ps ARGUMENT..." +"history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: " +"history -ps ARGUMENT..." #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" +msgstr "" +"jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [TAAKAANDUIDING...]" +msgstr "disown [-h] [-ar] [TAAKAANDUIDING... | PID...] " #: builtins.c:134 msgid "" @@ -2360,11 +2379,11 @@ msgstr "unset [-f] [-v] [-n] [NAAM...]" #: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [NAAM[=WAARDE] ...] of export -p" +msgstr "export [-fn] [NAAM[=WAARDE] ...] of: export -p" #: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of readonly -p" +msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of: readonly -p" #: builtins.c:150 msgid "shift [n]" @@ -2407,7 +2426,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODUS]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ID ...]" #: builtins.c:181 @@ -2456,7 +2476,7 @@ msgstr "coproc [NAAM] OPDRACHT [OMLEIDINGEN]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function NAAM { OPDRACHTEN ; } of NAAM () { OPDRACHTEN ; }" +msgstr "function NAAM { OPDRACHTEN ; } of: NAAM () { OPDRACHTEN ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" @@ -2476,7 +2496,7 @@ msgstr "[[ EXPRESSIE ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - enkele shell-variabelen" +msgstr "var - namen en betekenissen van enkele shell-variabelen" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2531,9 +2551,10 @@ msgstr "" "[ARRAY]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" " [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" @@ -2923,6 +2944,7 @@ msgstr "" " of 1 als de OPDRACHT niet gevonden is." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2941,11 +2963,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3002,7 +3024,6 @@ msgstr "" " toekenningsfout optrad." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3010,7 +3031,7 @@ msgid "" msgstr "" "Waarden en eigenschappen van variabelen instellen.\n" "\n" -" Deze opdracht is verouderd. Zie 'help declare'." +" Een synoniem van 'declare'. Zie 'help declare'." #: builtins.c:538 msgid "" @@ -3483,6 +3504,7 @@ msgstr "" " optie gegeven werd." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3497,7 +3519,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3529,7 +3551,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3566,9 +3589,10 @@ msgstr "" "\n" " -a huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n" " -n alle nog niet gelezen regels uit het geschiedenisbestand lezen\n" -" -r het geschiedenisbestand lezen en toevoegen aan einde van\n" -" huidige geschienis\n" -" -w huidige geschiedenis aan einde van geschiedenisbestand toevoegen\n" +" en toevoegen aan het einde van huidige geschiedenis\n" +" -r het geschiedenisbestand lezen en toevoegen aan het einde van\n" +" huidige geschiedenis\n" +" -w huidige geschiedenis naar het geschiedenisbestand schrijven\n" "\n" " -p geschiedenisopzoeking uitvoeren voor elk ARGUMENT en het " "resultaat\n" @@ -3589,7 +3613,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3635,7 +3659,7 @@ msgstr "" "een\n" " fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3667,8 +3691,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n" " gegeven werd." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3702,6 +3725,7 @@ msgstr "" "argumenten\n" " volgen, dan wordt voor elk nummer de bijbehorende naam\n" " getoond, en voor elke naam het bijbehorende nummer\n" +" -L synoniem van '-l'\n" "\n" " 'kill' is om twee redenen een ingebouwde shell-opdracht: het " "accepteert\n" @@ -3714,7 +3738,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3803,7 +3827,8 @@ msgstr "" " Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n" " 'let' 1; anders 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3824,7 +3849,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3905,7 +3930,7 @@ msgstr "" " de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n" " ongeldige bestandsdescriptor als argument van '-u' gegeven werd." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3926,8 +3951,7 @@ msgstr "" " uitvoeren is." # Voor de duidelijkheid is de tekstvolgorde veranderd. -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4055,8 +4079,8 @@ msgstr "" " ingeschakeld als effectieve en echte UID of GID niet " "overeenkomen;\n" " uitschakelen maakt dan effectieve UID en GID gelijk aan de echte\n" -" -T een 'trap' op DEBUG door laten werken in functies en " -"dochterprocessen\n" +" -T een 'trap' op DEBUG of RETURN door laten werken in functies en\n" +" dochterprocessen\n" " -t afsluiten na het lezen en uitvoeren van één opdracht\n" " -u het gebruik van niet-bestaande variabelen behandelen als een fout\n" " -v invoerregel weergeven (\"echoën\") zodra deze gelezen is\n" @@ -4113,7 +4137,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4151,7 +4175,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" " NAAM alleen-lezen is." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4185,7 +4209,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4223,7 +4247,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4240,7 +4264,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4265,7 +4289,7 @@ msgstr "" "gegeven\n" " bestand, of 1 als dit bestand niet gelezen kan worden." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4291,7 +4315,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4441,7 +4465,7 @@ msgstr "" " De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n" " en 2 als een ongeldig argument gegeven werd." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4453,7 +4477,7 @@ msgstr "" " Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n" " het laatste argument een ']' moet zijn, horend bij de begin-'['." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4472,7 +4496,7 @@ msgstr "" "\n" " De afsluitwaarde is altijd 0." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4560,7 +4584,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" " gegeven werd." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4613,7 +4637,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4711,7 +4735,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4747,7 +4771,8 @@ msgstr "" " De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" " gegeven werd." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4755,13 +4780,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4784,7 +4811,7 @@ msgstr "" " De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4808,7 +4835,7 @@ msgstr "" " De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4829,7 +4856,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4856,7 +4883,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4893,7 +4920,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4920,7 +4947,7 @@ msgstr "" " overdraagbare standaardopmaak.\n" " De afsluitwaarde is die van de PIJPLIJN." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4938,7 +4965,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4973,7 +5000,7 @@ msgstr "" "uitgevoerde\n" " deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4990,7 +5017,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,8 +5034,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5027,9 +5053,9 @@ msgstr "" " indices 0 en 1 van array-variabele NAAM in de uitvoerende shell.\n" " De standaard-NAAM is \"COPROC\".\n" "\n" -" De afsluitwaarde is die van de OPDRACHT." +" De afsluitwaarde van coproc is 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5051,7 +5077,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5068,7 +5094,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5092,7 +5118,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de hervatte taak." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5109,7 +5135,7 @@ msgstr "" "\n" " De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5164,7 +5190,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5278,7 +5304,7 @@ msgstr "" "het\n" " geschiedeniscommentaarteken, gewoonlijk '#'\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5331,7 +5357,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5380,7 +5406,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5431,14 +5457,14 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5474,7 +5500,7 @@ msgstr "" " een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5544,7 +5570,7 @@ msgstr "" "een\n" " schrijf- of toekenningsfout optrad." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5594,7 +5620,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5616,7 +5642,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5672,7 +5698,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" " NAAM geen completeringsvoorschrift gedefinieerd is." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5747,7 +5773,7 @@ msgstr "" "of\n" " een ongeldige optie gegeven werd." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5757,12 +5783,6 @@ msgstr "" "\n" " Een synoniem voor 'mapfile'." -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - # Dit is een commandonaam. #~ msgid "true" #~ msgstr "true" @@ -5771,12 +5791,10 @@ msgstr "" #~ msgid "false" #~ msgstr "false" +# Dit is een commandonaam. #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #~ msgid "" #~ "License GPLv2+: GNU GPL version 2 or later \n" diff --git a/po/pl.gmo b/po/pl.gmo index a67cbd54c..bfe86bf73 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 9f97f368b..3aa0c5d09 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,143 +1,144 @@ # Polish translation of bash -# Copyright (C) 2007, 2010, 2011, 2013, 2014 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Andrzej M. Krzysztofowicz 2006,2007. -# Jakub Bogusz 2010-2015. +# Jakub Bogusz 2010-2016. # msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-24 22:34+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-16 21:30+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "nieprawidłowy indeks tablicy" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: usuwanie atrybutu nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: błędny klucz tablicy asocjacyjnej" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie można przypisać do nienumerycznego indeksu" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie można utworzyć: %s" # ??? -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "brak zamykającego `%c' w %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: brak separującego dwukropka" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "rozwijanie nawiasów: nie można przydzielić pamięci dla %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" "rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w " "liczbie %d" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': błędna nazwa aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "edycja wiersza nie została włączona" # ??? -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nieprawidłowa nazwa mapy klawiszy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie można odczytać: %s" -# ??? -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': nie można usunąć dowiązania" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nie znana nazwa funkcji" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie jest przypisany do żadnego klawisza.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s może być wywołany przez " -#: builtins/break.def:79 builtins/break.def:121 +# ??? +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': nie można usunąć dowiązania" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "licznik pętli" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ma sens tylko w pętli `for', `while' lub `until'" @@ -151,163 +152,162 @@ msgstr "" " \n" " Bez WYRAÅ»ENIA zwraca " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Nie ustawiono HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "za dużo argumentów" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "brak innego katalogu" +msgstr "zerowy katalog" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Nie ustawiono OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linia %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "uwaga: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: składnia: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcja wymaga argumentu" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: wymagany argument numeryczny" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nie znaleziono" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: nieprawidłowa opcja" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nieprawidłowa nazwa opcji" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': nieprawidłowy identyfikator" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "błędna liczba ósemkowa" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "błędna liczba szesnastkowa" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "nieprawidłowa liczba" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: nieprawidłowo określony sygnał" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': nie jest to nr PID ani prawidłowe określenie zadania" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: zmienna tylko do odczytu" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s poza zakresem" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s poza zakresem" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: brak takiego zadania" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: brak kontroli zadań" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "brak kontroli zadań" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ograniczony" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ograniczony" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie jest to polecenie powłoki" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "błąd zapisu: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "błąd podczas ustawiania atrybutów terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "błąd podczas pobierania atrybutów terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: błąd przy określaniu katalogu bieżącego: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: niejednoznaczne określenie zadania" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "pomoc nie jest dostępna w tej wersji" @@ -316,69 +316,69 @@ msgstr "pomoc nie jest dostępna w tej wersji" msgid "%s: invalid action name" msgstr "%s: nieprawidłowa nazwa akcji" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: brak definicji dla uzupełnienia" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "aktualnie nie jest wykonywana funkcja dopełniania" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "można używać tylko w funkcji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: zmienna referencyjna nie może być tablicą" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zmienna referencyjna nie może wskazywać na siebie" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: cykliczne odwołanie do nazwy" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" +msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "nie można używać `-f' do tworzenia funkcji" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkcja tylko do odczytu" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną" @@ -412,68 +412,68 @@ msgstr "%s: nie jest ładowany dynamicznie" msgid "%s: cannot delete: %s" msgstr "%s: nie można usunąć: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: jest katalogiem" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nie jest zwykłym plikiem" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: plik jest za duży" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie można uruchomić pliku binarnego" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie można uruchomić: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "wylogowanie\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "to nie jest powłoka logowania: użyj `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Istnieją zatrzymane zadania.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Istnieją działające zadania.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nie znaleziono polecenia" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "specyfikacja historii" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie udało się otworzyć pliku tymczasowego: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "bieżące" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "zadanie %d uruchomiono bez kontroli zadań" @@ -488,29 +488,28 @@ msgstr "%s: niedozwolona opcja -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja wymaga argumentu -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "zapamiętywanie ścieżek poleceń w tablicy asocjacyjnej wyłączone" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tablica asocjacyjna pusta\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "trafienia\tpolecenie\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Polecenia powłoki pasujące do słowa kluczowego `" msgstr[1] "Polecenia powłoki pasujące do słów kluczowych `" msgstr[2] "Polecenia powłoki pasujące do słów kluczowych `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -518,12 +517,12 @@ msgstr "" "żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n" "lub `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie można otworzyć: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -545,20 +544,21 @@ msgstr "" "Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nie można używać więcej niż jednego spośród -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "pozycja historii" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: nieprawidłowy argument" +msgstr "%s: nieprawidłowy znacznik czasu" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozwinięcie wg historii nie powiodło się" @@ -572,16 +572,16 @@ msgstr "%s: inlib nie powiodło się" msgid "no other options allowed with `-x'" msgstr "nie można używać innych opcji przy `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentami muszą być numery procesów lub zadań" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nieznany błąd" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "spodziewano się wyrażenia" @@ -590,69 +590,69 @@ msgstr "spodziewano się wyrażenia" msgid "%s: not an indexed array" msgstr "%s: nie jest tablicą indeksowaną" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nieprawidłowo określony deskryptor pliku" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nieprawidłowy deskryptor pliku: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: błędna liczba linii" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: błędny początek tablicy" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: błędna liczba linii między wywołaniami" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "pusta nazwa zmiennej tablicowej" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "wymagana obsługa zmiennych tablicowych" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': brak znaku formatującego" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': błędne określenie formatu czasu" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': nieprawidłowy znak formatujący" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "uwaga: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "problem z analizą formatu: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "brak cyfry szesnastkowej dla \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "brak cyfry unikodowej dla \\%c" @@ -666,19 +666,19 @@ msgstr "brak innego katalogu" msgid "%s: invalid argument" msgstr "%s: nieprawidłowy argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pusty stos katalogów" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "indeks stosu katalogów" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -721,7 +721,7 @@ msgstr "" " -N\tWypisanie N-tej pozycji licząc od prawej strony listy wypisywanej\n" "\tprzez dirs wywołane bez opcji, począwszy od zera." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -765,7 +765,7 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -804,45 +804,45 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: nieprawidłowo określony limit czasu" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "błąd odczytu: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "wyjście przez `return' możliwe tylko z funkcji lub skryptu" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: nie można anulować definicji" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: nie jest zmienną tablicową" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nie jest funkcją" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: nie można wyeksportować" @@ -851,20 +851,20 @@ msgstr "%s: nie można wyeksportować" msgid "shift count" msgstr "licznik przesunięcia" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nieprawidłowa nazwa opcji powłoki" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "wymagany argument w postaci nazwy pliku" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: nie znaleziono pliku" @@ -877,61 +877,61 @@ msgstr "nie można wstrzymać" msgid "cannot suspend a login shell" msgstr "nie można wstrzymać powłoki logowania" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s jest aliasem do %s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s jest słowem kluczowym powłoki\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s jest funkcją\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s jest specjalnym wewnętrznym poleceniem powłoki\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s jest wewnętrznym poleceniem powłoki\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s jest %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "ścieżka do %s jest zapamiętana (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: nieprawidłowy argument stanowiący ograniczenie" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': złe polecenie" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie można odczytać ograniczenia: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ograniczenie" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie można zmienić ograniczenia: %s" @@ -950,204 +950,209 @@ msgstr "`%c': nieprawidłowy operator trybu symbolicznego" msgid "`%c': invalid symbolic mode character" msgstr "`%c': nieprawidłowy znak trybu symbolicznego" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linia " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "ostatnie polecenie: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Przerywanie..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "nieznany błąd polecenia" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "zły rodzaj polecenia" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "zły łącznik" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "zły skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nieustawiona zmienna" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie można przekierować standardowego wejścia z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: koproces [%d:%s] nadal istnieje" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "błąd potoku" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: zły interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie można uruchomić pliku binarnego: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' jest specjalnym poleceniem wewnętrznym" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie można skopiować deskryptora pliku %d do %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "niedomiar stosu rekursji" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "błąd składniowy w wyrażeniu" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "próba przypisania do nie-zmiennej" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "błąd składniowy w wyrażeniu" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "dzielenie przez 0" # ??? -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "błąd: zły prefiks operatora przypisującego" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "spodziewano się `:' w wyrażeniu warunkowym" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "wykładnik mniejszy niż 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "brakujący `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "błąd składni: spodziewany argument" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "błąd składni: nieprawidłowy operator arytmetyczny" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (błędny znacznik to \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "nieprawidłowa podstawa arytmetyczna" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "wartość za duża na podstawę" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: błąd w wyrażeniu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nie można przydzielić nowego deskryptora pliku dla wejścia basha z %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje" @@ -1157,154 +1162,159 @@ msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" # ??? -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "proces o PID %d występuje w działającym zadaniu %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) w potoku" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: brak takiego PID-u" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Sygnał %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Zakończono" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Zatrzymano" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Zatrzymano(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Działa" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Zakończono(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Kod wyjścia %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Stan nieznany" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(zrzut pamięci) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (katalog: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid potomka (%ld na %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld nie jest potomkiem tej powłoki" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Brak rekordu dla procesu %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadanie %d jest zatrzymane" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: zadanie zostało przerwane" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadanie %d już pracuje w tle" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: linia %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(katalog: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nie powiodło się" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: dyscyplina linii" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: dyscyplina linii" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie można ustawić grupy procesów terminala (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "w tej powłoce nie ma kontroli zadań" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: założenie, że %s nie jest spełnione\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1313,40 +1323,40 @@ msgstr "" "\r\n" "malloc: %s:%d: spartaczone założenie\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "nieznany" # ??? -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: nieprawidłowy blok na liście wolnych bloków" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: wywołane dla bloku, który już został zwolniony" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: rozmiar początkowy i końcowy fragmentu są różne" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: wywołane dla bloku, który nie został przydzielony" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne" @@ -1388,22 +1398,22 @@ msgstr "%s: źle określona ścieżka sieciowa" msgid "network operations not supported" msgstr "operacje sieciowe nie są wspierane" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s" @@ -1421,260 +1431,266 @@ msgstr "Masz nową pocztę w $_" msgid "The mail in %s has been read\n" msgstr "Poczta w %s jest przeczytana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "błąd składni: oczekiwano wyrażenia arytmetycznego" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "błąd składni: oczekiwany `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "błąd składni: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: zły rodzaj instrukcji %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia " +"skrócona" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "przekroczono maksymalną liczbę dokumentów w miejscu" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `%c'" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "błąd składni w wyrażeniu warunkowym" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "oczekiwano `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "oczekiwano dwuargumentowego operatora warunkowego" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "błąd składni przy `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "błąd składni: nieoczekiwany koniec pliku" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "błąd składni" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "nieoczekiwany EOF podczas poszukiwania pasującego `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "uzupełnienie: nie znaleziono funkcji `%s'" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: możliwe zapętlenie wznowień" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: zły łącznik `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: nieprawidłowy deskryptor pliku" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: pusty wskaźnik pliku" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': nieprawidłowy znak formatujący" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "deskryptor pliku poza zakresem" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: niejednoznaczne przekierowanie" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie można nadpisać istniejącego pliku" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniczony: nie można przekierować wyjścia" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie można przypisać deskryptora pliku do zmiennej" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie są wspierane bez sieci" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "błąd przekierowania: nie można powielić deskryptora pliku" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nie można znaleźć /tmp, proszę o utworzenie!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musi być prawidłową nazwą katalogu" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nieprawidłowa opcja" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie można ustawić uid-a na %d: efektywny uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie można ustawić gid-a na %d: efektywny gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: jest katalogiem" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nie mam nazwy!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, wersja %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1683,55 +1699,55 @@ msgstr "" "Użycie:\t%s [długa opcja GNU] [opcja] ...\n" "\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Długie opcje GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opcje powłoki:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywołanie)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s lub -o opcja\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set" "\"'.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Aby uzyskać więcej informacji o poleceniach wewnętrznych powłoki,\n" "napisz `%s -c help'.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "strona domowa basha: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Ogólna pomoc przy użytkowaniu oprogramowania GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: nieprawidłowa operacja" @@ -1905,21 +1921,21 @@ msgstr "Nieznany sygnał #" msgid "Unknown Signal #%d" msgstr "Nieznany sygnał #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "złe podstawienie: brak zamykającego `%s' w %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie można przypisać listy do elementu tablicy" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "nie można utworzyć potoku dla podstawienia procesu" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu" @@ -1938,59 +1954,63 @@ msgstr "nie można otworzyć nazwanego potoku %s do zapisu" msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "złe podstawienie: brak zamykającego \"`\" w %s" +msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "nie można utworzyć potoku dla podstawienia polecenia" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie można powielić potoku jako deskryptora 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: złe podstawienie" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: błędne rozwinięcie niebezpośrednie" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "`%s': błędna nazwa zmiennej" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametr pusty lub nieustawiony" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr pusty lub nieustawiony" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: wyrażenie dla podłańcucha < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: złe podstawienie" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie można przypisywać w ten sposób" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1998,12 +2018,12 @@ msgstr "" "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie " "arytmetyczne" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "złe podstawienie: brak zamykającego \"`\" w %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "brak pasującego: %s" @@ -2026,30 +2046,30 @@ msgstr "oczekiwano `)'" msgid "`)' expected, found %s" msgstr "oczekiwano `)', znaleziono %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: oczekiwano operatora jednoargumentowego" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: oczekiwano operatora dwuargumentowego" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "brakujący `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "nieprawidłowy numer sygnału" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: zła wartość trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2057,86 +2077,85 @@ msgstr "" "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%" "s) do siebie" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: zły sygnał %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "błąd importu definicji funkcji dla `%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "poziom powłoki (%d) jest za duży, ustawiono na 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie można przypisać wartości do zmiennej" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy" +msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s ma pusty exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "nieprawidłowy znak %d w exportstr dla %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "brak `=' w exportstr dla %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: brak kontekstu global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nie można otworzyć jako PLIK" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: wartość zgodności poza zakresem" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2161,22 +2180,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nie ma Å»ADNEJ GWARANCJI w granicach dopuszczanych przez prawo." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nie można przydzielić %lu bajtów (przydzielono %lu)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nie można przydzielić %lu bajtów" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nie można przydzielić %lu bajtów (przydzielono %lu)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie można przydzielić %lu bajtów" @@ -2304,9 +2323,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [zadanie ...] lub jobs -x polecenie [argumenty]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [zadanie ...]" +msgstr "disown [-h] [-ar] [zadanie ... | pid ...]" #: builtins.c:134 msgid "" @@ -2389,7 +2407,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [uprawnienia]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2512,9 +2531,10 @@ msgstr "" "C wywołanie] [-c co-ile] [tablica]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n liczba] [-O początek] [-s liczba] [-t] [-u fd] [-C wywołanie] " "[-c co-ile] [tablica]" @@ -2940,6 +2960,7 @@ msgstr "" " znalezione." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2958,11 +2979,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3015,7 +3036,6 @@ msgstr "" " Polecenie zwraca prawdę, chyba że podano błędną opcję lub wystąpi błąd." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3023,7 +3043,7 @@ msgid "" msgstr "" "Ustawienie wartości i atrybutów zmiennej.\n" " \n" -" Polecenie przestarzałe - p. `help declare'." +" Synonim `declare' - p. `help declare'." #: builtins.c:538 msgid "" @@ -3513,6 +3533,7 @@ msgstr "" " opcję." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3527,7 +3548,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3563,7 +3584,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3599,7 +3621,7 @@ msgstr "" " \n" " -a\tdołączenie linii historii z tej sesji do pliku historii\n" " -n\todczyt wszystkich jeszcze nie przeczytanych linii z pliku\n" -" \t\thistorii\n" +" \t\thistorii i dołączenie ich do listy historii\n" " -r\todczyt pliku historii i dołączenie zawartości do listy historii\n" " -w\tzapis bieżącej historii do pliku historii\n" " \n" @@ -3623,7 +3645,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3668,7 +3690,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd.\n" " Jeśli użyto -x, zwracany jest stan wyjściowy POLECENIA." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3698,8 +3720,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub ZADANIE." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3734,6 +3755,7 @@ msgstr "" " -l\tlista nazw sygnałów; jeśli `-l' występuje z argumentami, są one\n" " \t\ttraktowane jako numery sygnałów, dla których mają być wypisane " "nazwy\n" +" -L\tsynonim -l\n" " \n" " Kill jest poleceniem wewnętrznym z dwóch powodów: umożliwia korzystanie\n" " z identyfikatorów zadań zamiast numerów PID oraz, w przypadku " @@ -3744,7 +3766,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest sukces, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3833,7 +3855,8 @@ msgstr "" " Jeśli wartością ostatniego argumentu jest 0, let zwraca 1;\n" " w pozostałych przypadkach zwracane jest 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3854,7 +3877,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3933,7 +3956,7 @@ msgstr "" " błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n" " argumentu -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3954,8 +3977,7 @@ msgstr "" " Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n" " funkcji ani skryptu." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4115,7 +4137,8 @@ msgstr "" " -P Gdy ustawione, nierozwiązywanie dowiązań symbolicznych podczas\n" " uruchamiania poleceń takich, jak cd, które zmieniają katalog\n" " bieżący.\n" -" -T Gdy ustawione, dziedziczenie pułapki DEBUG przez funkcje powłoki.\n" +" -T Gdy ustawione, dziedziczenie pułapek DEBUG i RETURN przez " +"funkcje.\n" " -- Przypisanie pozostałych argumentów do parametrów pozycyjnych.\n" " Jeśli nie ma więcej argumentów, parametry pozycyjne są anulowane.\n" " - Przypisanie pozostałych argumentów do argumentów pozycyjnych.\n" @@ -4131,7 +4154,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4173,7 +4196,7 @@ msgstr "" "do\n" " odczytu." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4208,7 +4231,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4248,7 +4271,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4266,7 +4289,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4291,7 +4314,7 @@ msgstr "" "jeśli\n" " PLIKU nie udało się odczytać." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4319,7 +4342,7 @@ msgstr "" "wystąpi\n" " błąd." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4492,7 +4515,7 @@ msgstr "" " Zwracana jest prawda, jeśli wartością WYRAÅ»ENIA jest prawda; fałsz, gdy\n" " wartością WYRAÅ»ENIA jest fałsz lub podano błędny argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4504,7 +4527,7 @@ msgstr "" " Jest to synonim dla wbudowanego polecenia \"test\", ale wymagający, by\n" " ostatnim argumentem był `]' pasujący do początkowego `['." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4524,7 +4547,7 @@ msgstr "" " Stan wyjściowy:\n" " Zawsze prawda." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4609,7 +4632,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędny SYGNAŁ lub błędną opcję." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4667,7 +4690,7 @@ msgstr "" "jeśli\n" " którakolwiek nie zostanie znaleziona." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4766,7 +4789,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4801,7 +4824,8 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną " "opcję." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4809,13 +4833,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4838,7 +4864,7 @@ msgstr "" " Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n" " nieprawidłowe lub podano błędną opcję." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4867,7 +4893,7 @@ msgstr "" "podano\n" " nieprawidłową opcję." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4890,7 +4916,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4920,7 +4946,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4957,7 +4983,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4987,7 +5013,7 @@ msgstr "" " Stan wyjściowy:\n" " Polecenie zwraca status zakończenia POTOKU poleceń." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5005,7 +5031,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5041,7 +5067,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5059,7 +5085,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5077,8 +5103,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5098,9 +5123,9 @@ msgstr "" " przypisanymi do indeksów 0 i 1 zmiennej tablicowej NAZWA w powłoce.\n" " Domyślną NAZWĄ jest \"COPROC\".\n" " Stan wyjściowy:\n" -" Zwracany jest status zakończenia POLECENIA." +" Polecenie coproc zwraca status wyjścia 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5125,7 +5150,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5143,7 +5168,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest status zakończenia ostatniego wykonanego polecenia." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5169,7 +5194,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracany jest stan wznowionego zadania." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5189,7 +5214,7 @@ msgstr "" " Zwracane jest 1, jeśli wartością WYRAÅ»ENIA jest 0; 0 w przeciwnym " "wypadku." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5244,7 +5269,7 @@ msgstr "" " Stan wyjściowy:\n" " 0 lub 1 w zależności od wartości WYRAÅ»ENIA." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5352,7 +5377,7 @@ msgstr "" " \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n" " \t\thistorii.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5410,7 +5435,7 @@ msgstr "" "katalogu\n" " się nie powiedzie." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5462,7 +5487,7 @@ msgstr "" "katalogu\n" " się nie powiedzie." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5516,14 +5541,14 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5554,7 +5579,7 @@ msgstr "" "jeśli\n" " podano błędną opcję lub NAZWA-OPCJI jest wyłączona." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5626,7 +5651,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n" " przypisanie zakończy się niepowodzeniem." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5674,7 +5699,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5695,7 +5720,7 @@ msgstr "" " Stan wyjściowy:\n" " Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5753,7 +5778,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n" " zdefiniowanej specyfikacji dopełniania." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5829,7 +5854,7 @@ msgstr "" "tylko\n" " do odczytu, lub nie jest tablicą indeksowaną." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5838,18 +5863,3 @@ msgstr "" "Odczyt linii z pliku do zmiennej tablicowej.\n" " \n" " Synonim polecenia `mapfile'." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/pt.gmo b/po/pt.gmo new file mode 100644 index 000000000..7e36fbd16 Binary files /dev/null and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 000000000..2f99d1489 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,5871 @@ +# Bash - Bourne Again Shell. +# Copyright (C) 2018 Free Software Foundation, Inc. +# This file is distributed under the same license as the Bash package. +# Pedro Albuquerque , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-4.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2018-01-30 06:34+0000\n" +"Last-Translator: Pedro Albuquerque \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"Plural-Forms: nplurals=2; plural=n !=1;\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: arrayfunc.c:58 +msgid "bad array subscript" +msgstr "subscrito de matriz inválido" + +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: a remover atributo nameref" + +#: arrayfunc.c:398 builtins/declare.def:831 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: impossível converter matriz indexada para associativa" + +#: arrayfunc.c:582 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: chave de matriz associativa inválida" + +#: arrayfunc.c:584 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: impossível atribuir a índice não numérico" + +#: arrayfunc.c:629 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa" + +#: bashhist.c:436 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: impossível criar: %s" + +#: bashline.c:4111 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "" +"bash_execute_unix_command: impossível encontrar mapa de teclado para o " +"comando" + +#: bashline.c:4221 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: o 1º carácter não-espaço não é \"\"\"" + +#: bashline.c:4250 +#, c-format +msgid "no closing `%c' in %s" +msgstr "sem \"%c\" de fecho em %s" + +#: bashline.c:4284 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: separador dois pontos em falta" + +#: braces.c:331 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "expansão: impossível alocar memória para %s" + +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "expansão: falha ao alocar memória para %d elementos" + +#: braces.c:473 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "expansão: falha ao alocar memória para \"%s\"" + +#: builtins/alias.def:131 +#, c-format +msgid "`%s': invalid alias name" +msgstr "\"%s\": aliás inválido" + +#: builtins/bind.def:122 builtins/bind.def:125 +msgid "line editing not enabled" +msgstr "Edição de linha não activada" + +#: builtins/bind.def:212 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "\"%s\": mapa de teclado inválido" + +#: builtins/bind.def:252 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: impossível ler: %s" + +#: builtins/bind.def:304 builtins/bind.def:334 +#, c-format +msgid "`%s': unknown function name" +msgstr "\"%s\": nome de função desconhecido" + +#: builtins/bind.def:312 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s: não tem associação a qualquer tecla.\n" + +#: builtins/bind.def:316 +#, c-format +msgid "%s can be invoked via " +msgstr "%s pode ser chamado via " + +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossível desassociar" + +#: builtins/break.def:77 builtins/break.def:119 +msgid "loop count" +msgstr "total de ciclos" + +#: builtins/break.def:139 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\"" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" +"Devolve o contexto da presente chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve " + +#: builtins/cd.def:319 +msgid "HOME not set" +msgstr "HOME não definida" + +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +msgid "too many arguments" +msgstr "demasiados argumentos" + +#: builtins/cd.def:334 +msgid "null directory" +msgstr "pasta nula" + +#: builtins/cd.def:345 +msgid "OLDPWD not set" +msgstr "OLDPWD não definida" + +#: builtins/common.c:96 +#, c-format +msgid "line %d: " +msgstr "linha %d: " + +#: builtins/common.c:134 error.c:264 +#, c-format +msgid "warning: " +msgstr "aviso: " + +#: builtins/common.c:148 +#, c-format +msgid "%s: usage: " +msgstr "%s: uso: " + +#: builtins/common.c:193 shell.c:510 shell.c:838 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: a opção requer um argumento" + +#: builtins/common.c:200 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: requer um argumento numérico" + +#: builtins/common.c:207 +#, c-format +msgid "%s: not found" +msgstr "%s: não encontrado" + +#: builtins/common.c:216 shell.c:851 +#, c-format +msgid "%s: invalid option" +msgstr "%s: opção inválida" + +#: builtins/common.c:223 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: nome de opção inválido" + +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "\"%s\": identificador inválido" + +#: builtins/common.c:240 +msgid "invalid octal number" +msgstr "número octal inválido" + +#: builtins/common.c:242 +msgid "invalid hex number" +msgstr "número hexadecimal inválido" + +#: builtins/common.c:244 expr.c:1538 +msgid "invalid number" +msgstr "número inválido" + +#: builtins/common.c:252 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: especificação de sinal inválida" + +#: builtins/common.c:259 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "\"%s\": especificação de pid ou tarefa inválida" + +#: builtins/common.c:266 error.c:510 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: variável só de leitura" + +#: builtins/common.c:274 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s fora do intervalo" + +#: builtins/common.c:274 builtins/common.c:276 +msgid "argument" +msgstr "argumento" + +#: builtins/common.c:276 +#, c-format +msgid "%s out of range" +msgstr "%s fora do intervalo" + +#: builtins/common.c:284 +#, c-format +msgid "%s: no such job" +msgstr "%s: tarefa inexistente" + +#: builtins/common.c:292 +#, c-format +msgid "%s: no job control" +msgstr "%s: sem controlo da tarefa" + +#: builtins/common.c:294 +msgid "no job control" +msgstr "sem controlo da tarefa" + +#: builtins/common.c:304 +#, c-format +msgid "%s: restricted" +msgstr "%s: restrita" + +#: builtins/common.c:306 +msgid "restricted" +msgstr "restrita" + +#: builtins/common.c:314 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: não é interno da consola" + +#: builtins/common.c:323 +#, c-format +msgid "write error: %s" +msgstr "erro de escrita: %s" + +#: builtins/common.c:331 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao definir atributos do terminal: %s" + +#: builtins/common.c:333 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "erro ao obter atributos do terminal: %s" + +#: builtins/common.c:579 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: erro ao obter a pasta actual: %s: %s\n" + +#: builtins/common.c:645 builtins/common.c:647 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: especificação de tarefa ambígua" + +#: builtins/common.c:908 +msgid "help not available in this version" +msgstr "ajuda indisponível nesta versão" + +#: builtins/complete.def:278 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: nome de acção inválido" + +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: sem especificação de conclusão" + +#: builtins/complete.def:707 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: a opção -F pode não resultar como esperado" + +#: builtins/complete.def:709 +msgid "warning: -C option may not work as you expect" +msgstr "aviso: a opção -C pode não resultar como esperado" + +#: builtins/complete.def:847 +msgid "not currently executing completion function" +msgstr "a função de conclusão não está em execução" + +#: builtins/declare.def:132 +msgid "can only be used in a function" +msgstr "só pode ser usado numa função" + +#: builtins/declare.def:369 builtins/declare.def:736 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: variável de referência não pode ser uma matriz" + +#: builtins/declare.def:380 variables.c:3161 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: não são permitidas auto-referências de nameref" + +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: referência circular de nome" + +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": nome de variável inválido para referência de nome" + +#: builtins/declare.def:500 +msgid "cannot use `-f' to make functions" +msgstr "impossível usar \"-f\" para fazer funções" + +#: builtins/declare.def:512 execute_cmd.c:5797 +#, c-format +msgid "%s: readonly function" +msgstr "%s: função só de leitura" + +#: builtins/declare.def:804 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de matriz composta citada obsoleta" + +#: builtins/declare.def:818 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: impossível destruir variáveis de matriz assim" + +#: builtins/declare.def:825 builtins/read.def:784 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: impossível converter matriz associativa em indexada" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "carregamento dinâmico indisponível" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "impossível abrir objecto partilhado %s: %s" + +#: builtins/enable.def:369 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "impossível encontrar %s no objecto partilhado %s: %s" + +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "carregamento da função %s devolve falha (%d): não carregada" + +#: builtins/enable.def:512 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: não carregada dinamicamente" + +#: builtins/enable.def:538 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: impossível eliminar: %s" + +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#, c-format +msgid "%s: is a directory" +msgstr "%s: é uma pasta" + +#: builtins/evalfile.c:144 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: não é um ficheiro normal" + +#: builtins/evalfile.c:153 +#, c-format +msgid "%s: file is too large" +msgstr "%s: ficheiro muito grande" + +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: impossível executar o binário" + +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: impossível executar: %s" + +#: builtins/exit.def:64 +#, c-format +msgid "logout\n" +msgstr "logout\n" + +#: builtins/exit.def:89 +msgid "not login shell: use `exit'" +msgstr "não é consola de sessão: use \"exit\"" + +#: builtins/exit.def:121 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Há tarefas interrompidas.\n" + +#: builtins/exit.def:123 +#, c-format +msgid "There are running jobs.\n" +msgstr "Há tarefas em curso.\n" + +#: builtins/fc.def:265 +msgid "no command found" +msgstr "sem comando encontrado" + +#: builtins/fc.def:323 builtins/fc.def:372 +msgid "history specification" +msgstr "especificação de histórico" + +#: builtins/fc.def:393 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: impossível abrir ficheiro temporário: %s" + +#: builtins/fg_bg.def:152 builtins/jobs.def:284 +msgid "current" +msgstr "actual" + +#: builtins/fg_bg.def:161 +#, c-format +msgid "job %d started without job control" +msgstr "tarefa %d começou sem controlo de tarefa" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opção ilegal -- %c\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opção requer um argumento -- %c\n" + +#: builtins/hash.def:91 +msgid "hashing disabled" +msgstr "hashing desactivado" + +#: builtins/hash.def:138 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: tabela de hash vazia\n" + +#: builtins/hash.def:266 +#, c-format +msgid "hits\tcommand\n" +msgstr "sucessos\tcomando\n" + +#: builtins/help.def:133 +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Comandos de consola correspondentes à palavra-chave \"" +msgstr[1] "Comandos de consola correspondentes a palavras-chave \"" + +#: builtins/help.def:185 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou " +"\"info %s\"." + +#: builtins/help.def:224 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: impossível abrir: %s" + +#: builtins/help.def:524 +#, c-format +msgid "" +"These shell commands are defined internally. Type `help' to see this list.\n" +"Type `help name' to find out more about the function `name'.\n" +"Use `info bash' to find out more about the shell in general.\n" +"Use `man -k' or `info' to find out more about commands not in this list.\n" +"\n" +"A star (*) next to a name means that the command is disabled.\n" +"\n" +msgstr "" +"Estes comandos de consola são definidos internamente. Insira \"help\" para " +"ver a lista.\n" +"Insira \"help nome\" para saber mais sobre a função \"nome\".\n" +"Use \"info bash\" para saber mais sobre a consola em geral.\n" +"Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n" +"\n" +"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n" +"\n" + +#: builtins/history.def:154 +msgid "cannot use more than one of -anrw" +msgstr "impossível usar mais de um -anrw" + +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +msgid "history position" +msgstr "posição do histórico" + +#: builtins/history.def:331 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: carimbo inválido" + +#: builtins/history.def:442 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: falha na expansão do histórico" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: falha inlib" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "não são permitidas mais opções com \"-x\"" + +#: builtins/kill.def:200 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas" + +#: builtins/kill.def:263 +msgid "Unknown error" +msgstr "Erro desconhecido" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +msgid "expression expected" +msgstr "esperada expressão" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: não é uma matriz indexada" + +#: builtins/mapfile.def:271 builtins/read.def:305 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: especificação de descritor de ficheiro inválida" + +#: builtins/mapfile.def:279 builtins/read.def:312 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: descritor de ficheiro inválido: %s" + +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: total de linhas inválido" + +#: builtins/mapfile.def:299 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: origem de matriz inválida" + +#: builtins/mapfile.def:316 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: callback inválida" + +#: builtins/mapfile.def:349 +msgid "empty array variable name" +msgstr "nome de variável de matriz vazio" + +#: builtins/mapfile.def:370 +msgid "array variable support required" +msgstr "requerido suporte a variáveis de matriz" + +#: builtins/printf.def:416 +#, c-format +msgid "`%s': missing format character" +msgstr "%s: carácter de formato em falta" + +#: builtins/printf.def:471 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "\"%c\": especificação de formato de hora inválida" + +#: builtins/printf.def:673 +#, c-format +msgid "`%c': invalid format character" +msgstr "\"%c\": carácter de formato inválido" + +#: builtins/printf.def:699 +#, c-format +msgid "warning: %s: %s" +msgstr "aviso: %s: %s" + +#: builtins/printf.def:785 +#, c-format +msgid "format parsing problem: %s" +msgstr "problema de análise de formato: %s" + +#: builtins/printf.def:882 +msgid "missing hex digit for \\x" +msgstr "dígito hex em falta para \\x" + +#: builtins/printf.def:897 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "dígito unicode em falta para \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "nenhuma outra pasta" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: argumento inválido" + +#: builtins/pushd.def:480 +msgid "" +msgstr "" + +#: builtins/pushd.def:524 +msgid "directory stack empty" +msgstr "pilha de pastas vazia" + +#: builtins/pushd.def:526 +msgid "directory stack index" +msgstr "índice da pilha de pastas" + +#: builtins/pushd.def:701 +msgid "" +"Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Mostrar a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar\n" +" na lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpar a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprimir versões com prefixo til de pastas relativas\n" +" \tà sua pasta home\n" +" -p\timprimir a pilha de pastas com uma entrada por linha\n" +" -v\timprimir a pilha de pastas com uma entrada por linha com a sua\n" +" \tposição na pilha como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tmostra a N entrada a contar da esquerda da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero.\n" +" \n" +" -N\tmostra a N entrada a contar da direita da lista mostrada por\n" +" \tpastas quando chamada sem opções, começando com zero." + +#: builtins/pushd.def:723 +msgid "" +"Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Adiciona uma pasta ao cimo da pilha de pastas ou roda a pilha\n" +" tornando a pasta actual o novo cimo da pilha.\n" +" Sem argumentos, troca as duas pastas superiores.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao adicionar\n" +" \tpastas à pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda esquerda da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de forma a que a N pasta (contando\n" +" \tda direita da lista mostrada por pastas, começando com\n" +" \tzero) fique no topo.\n" +" \n" +" PST\tAdiciona PST ao cimo da pilha de pastas, tornando-a a\n" +" \tnova pasta de trabalho actual.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/pushd.def:748 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta superior da pilha e muda para a nova pasta de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a troca normal de pastas ao remover\n" +" \tpastas da pilha, só a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N pasta contando da esquerda da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N pasta contando da direita da lista\n" +" \tmostrada por pastas, começando com zero Por exemplo: \"popd +0\"\n" +" \tremove a última pasta, \"popd +1\" a penúltima.\n" +" \n" +" O \"dirs\" interno mostra a pilha de pastas." + +#: builtins/read.def:277 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: especificação de inacção inválida" + +#: builtins/read.def:729 +#, c-format +msgid "read error: %d: %s" +msgstr "erro de leitura: %d: %s" + +#: builtins/return.def:68 +msgid "can only `return' from a function or sourced script" +msgstr "só pode usar \"return\" a partir de uma função ou script baseado" + +#: builtins/set.def:834 +msgid "cannot simultaneously unset a function and a variable" +msgstr "impossível desactivar simultaneamente uma função e uma variável" + +#: builtins/set.def:881 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: impossível desactivar" + +#: builtins/set.def:902 variables.c:3597 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: impossível desactivar: %s só de leitura" + +#: builtins/set.def:915 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: não é variável de matriz" + +#: builtins/setattr.def:189 +#, c-format +msgid "%s: not a function" +msgstr "%s: não é função" + +#: builtins/setattr.def:194 +#, c-format +msgid "%s: cannot export" +msgstr "%s: impossível exportar" + +#: builtins/shift.def:73 builtins/shift.def:79 +msgid "shift count" +msgstr "total de trocas" + +#: builtins/shopt.def:301 +msgid "cannot set and unset shell options simultaneously" +msgstr "impossível definir e desactivar opções da consola em simultâneo" + +#: builtins/shopt.def:403 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: nome de opção da consola inválido" + +#: builtins/source.def:128 +msgid "filename argument required" +msgstr "requerido argumento de nome de ficheiro" + +#: builtins/source.def:154 +#, c-format +msgid "%s: file not found" +msgstr "%s: ficheiro não encontrado" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "impossível suspender" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "impossível suspender uma consola de sessão" + +#: builtins/type.def:235 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s usa o aliás \"%s\"\n" + +#: builtins/type.def:256 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s é palavra-chave da consola\n" + +#: builtins/type.def:275 +#, c-format +msgid "%s is a function\n" +msgstr "%s é uma função\n" + +#: builtins/type.def:299 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é opção interna especial da consola\n" + +#: builtins/type.def:301 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s é opção interna da consola\n" + +#: builtins/type.def:323 builtins/type.def:408 +#, c-format +msgid "%s is %s\n" +msgstr "%s é %s\n" + +#: builtins/type.def:343 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s tem hash (%s)\n" + +#: builtins/ulimit.def:396 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: argumento de limite inválido" + +#: builtins/ulimit.def:422 +#, c-format +msgid "`%c': bad command" +msgstr "\"%c\": comando errado" + +#: builtins/ulimit.def:451 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: impossível obter limite: %s" + +#: builtins/ulimit.def:477 +msgid "limit" +msgstr "limite" + +#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: impossível modificar limite: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "número octal" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "\"%c\": operador de modo simbólico inválido" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "\"%c\": carácter de modo simbólico inválido" + +#: error.c:89 error.c:347 error.c:349 error.c:351 +msgid " line " +msgstr " linha " + +#: error.c:164 +#, c-format +msgid "last command: %s\n" +msgstr "último comando: %s\n" + +#: error.c:172 +#, c-format +msgid "Aborting..." +msgstr "A abortar..." + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:287 +#, c-format +msgid "INFORM: " +msgstr "INFORM.: " + +#: error.c:462 +msgid "unknown command error" +msgstr "erro de comando desconhecido" + +#: error.c:463 +msgid "bad command type" +msgstr "tipo de comando errado" + +#: error.c:464 +msgid "bad connector" +msgstr "conector errado" + +#: error.c:465 +msgid "bad jump" +msgstr "salto errado" + +#: error.c:503 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: variável desassociada" + +#: eval.c:242 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n" + +#: execute_cmd.c:536 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "impossível redireccionar entrada padrão de /dev/null: %s" + +#: execute_cmd.c:1294 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "FORMATOHORA: \"%c\": carácter de formato inválido" + +#: execute_cmd.c:2330 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" + +#: execute_cmd.c:2456 +msgid "pipe error" +msgstr "erro de pipe" + +#: execute_cmd.c:4624 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: nível máximo de aninhamento de eval excedido (%d)" + +#: execute_cmd.c:4636 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)" + +#: execute_cmd.c:4742 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: nível máximo de aninhamento de função excedido (%d)" + +#: execute_cmd.c:5285 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando" + +#: execute_cmd.c:5383 +#, c-format +msgid "%s: command not found" +msgstr "%s: comando não encontrado" + +#: execute_cmd.c:5627 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5665 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: interpretador errado" + +#: execute_cmd.c:5702 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: impossível executar binário: %s" + +#: execute_cmd.c:5788 +#, c-format +msgid "`%s': is a special builtin" +msgstr "%s: é uma opção interna especial" + +#: execute_cmd.c:5840 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "impossível duplicar fd %d para fd %d" + +#: expr.c:263 +msgid "expression recursion level exceeded" +msgstr "nível de recursão da expressão excedido" + +#: expr.c:291 +msgid "recursion stack underflow" +msgstr "sub-fluxo da pilha de recursividade" + +#: expr.c:453 +msgid "syntax error in expression" +msgstr "erro de sintaxe na expressão" + +#: expr.c:497 +msgid "attempted assignment to non-variable" +msgstr "tentativa de atribuição a não-variável" + +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na expressão" + +#: expr.c:520 expr.c:886 +msgid "division by 0" +msgstr "divisão por 0" + +#: expr.c:567 +msgid "bug: bad expassign token" +msgstr "problema: símbolo expassign errado" + +#: expr.c:621 +msgid "`:' expected for conditional expression" +msgstr "\":\" esperados para expressão condicional" + +#: expr.c:947 +msgid "exponent less than 0" +msgstr "expoente menor que 0" + +#: expr.c:1004 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "identificador esperado após pré-incremento ou pré-decremento" + +#: expr.c:1030 +msgid "missing `)'" +msgstr "\")\" em falta" + +#: expr.c:1081 expr.c:1458 +msgid "syntax error: operand expected" +msgstr "erro de sintaxe: operando esperado" + +#: expr.c:1460 +msgid "syntax error: invalid arithmetic operator" +msgstr "erro de sintaxe: operador aritmético inválido" + +#: expr.c:1484 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (símbolo de erro é \"%s\")" + +#: expr.c:1542 +msgid "invalid arithmetic base" +msgstr "base aritmética inválida" + +#: expr.c:1562 +msgid "value too great for base" +msgstr "valor muito grande para a base" + +#: expr.c:1611 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: erro de expressão\n" + +#: general.c:69 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: impossível aceder a pastas-mãe" + +#: input.c:99 subst.c:5858 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "impossível repor modo nodelay para fd %d" + +#: input.c:266 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "" +"impossível alocar novo descritor de ficheiro para entrada bash de fd %d" + +#: input.c:274 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: buffer já existe para o novo fd %d" + +#: jobs.c:527 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pipe pgrp" + +#: jobs.c:1080 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "pid %d aparece em tarefa em execução %d" + +#: jobs.c:1199 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld" + +#: jobs.c:1303 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: processo %5ld (%s) na _pipeline" + +#: jobs.c:1306 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: pid %5ld (%s) marcado como ainda activo" + +#: jobs.c:1635 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid não existente" + +#: jobs.c:1650 +#, c-format +msgid "Signal %d" +msgstr "Sinal %d" + +#: jobs.c:1664 jobs.c:1690 +msgid "Done" +msgstr "Feito" + +#: jobs.c:1669 siglist.c:123 +msgid "Stopped" +msgstr "Interrompido" + +#: jobs.c:1673 +#, c-format +msgid "Stopped(%s)" +msgstr "Interrompido(%s)" + +#: jobs.c:1677 +msgid "Running" +msgstr "Em execução" + +#: jobs.c:1694 +#, c-format +msgid "Done(%d)" +msgstr "Feito(%d)" + +#: jobs.c:1696 +#, c-format +msgid "Exit %d" +msgstr "Sair de %d" + +#: jobs.c:1699 +msgid "Unknown status" +msgstr "Estado desconhecido" + +#: jobs.c:1786 +#, c-format +msgid "(core dumped) " +msgstr "(núcleo despejado) " + +#: jobs.c:1805 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:2033 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "setpgid filho (%ld para %ld)" + +#: jobs.c:2395 nojobs.c:657 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld não é um filho desta consola" + +#: jobs.c:2687 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: sem registo do processo %ld" + +#: jobs.c:3048 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_tarefa: tarefa %d está interrompida" + +#: jobs.c:3355 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: tarefa terminada" + +#: jobs.c:3364 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: tarefa %d já em 2º plano" + +#: jobs.c:3590 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido" + +#: jobs.c:4114 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linha %d: " + +#: jobs.c:4128 nojobs.c:900 +#, c-format +msgid " (core dumped)" +msgstr " (núcleo despejado)" + +#: jobs.c:4140 jobs.c:4153 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd agora: %s)\n" + +#: jobs.c:4185 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_tarefa_control: getpgrp falhou" + +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_tarefa_control: disciplina de linha" + +#: jobs.c:4257 +msgid "initialize_job_control: line discipline" +msgstr "initialize_tarefa_control: disciplina de linha" + +#: jobs.c:4267 +msgid "initialize_job_control: setpgid" +msgstr "initialize_tarefa_control: setpgid" + +#: jobs.c:4288 jobs.c:4297 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "impossível definir grupo de processo do terminal (%d)" + +#: jobs.c:4302 +msgid "no job control in this shell" +msgstr "não há controlo de tarefa nesta consola" + +#: lib/malloc/malloc.c:306 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: asserção falhada: %s\n" + +#: lib/malloc/malloc.c:322 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: asserção frustrada\r\n" + +#: lib/malloc/malloc.c:323 +msgid "unknown" +msgstr "desconhecido" + +#: lib/malloc/malloc.c:811 +msgid "malloc: block on free list clobbered" +msgstr "malloc: bloqueio na lista livre clobbered" + +#: lib/malloc/malloc.c:888 +msgid "free: called with already freed block argument" +msgstr "free: chamado com argumento de bloco já liberto" + +#: lib/malloc/malloc.c:891 +msgid "free: called with unallocated block argument" +msgstr "free: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:910 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:916 +msgid "free: start and end chunk sizes differ" +msgstr "free: tamanho dos pontos inicial e final difere" + +#: lib/malloc/malloc.c:1015 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: chamado com argumento de bloco não alocado" + +#: lib/malloc/malloc.c:1030 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" + +#: lib/malloc/malloc.c:1036 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: tamanho dos pontos inicial e final difere" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tabela de alocação cheia com FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: %p já na tabela como alocado?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: %p já na tabela como livre?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "base inválida" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: anfitrião desconhecido" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: serviço inválido" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: especificação de caminho de rede errada" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "operações de rede não suportadas" + +#: locale.c:205 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)" + +#: locale.c:207 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s" + +#: locale.c:272 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: não pode alterar o idioma (%s)" + +#: locale.c:274 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: não pode alterar o idioma (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Tem correio em $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Tem novo correio em $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "O correio em %s já foi lido\n" + +#: make_cmd.c:317 +msgid "syntax error: arithmetic expression required" +msgstr "erro de sintaxe: requerida expressão aritmética" + +#: make_cmd.c:319 +msgid "syntax error: `;' unexpected" +msgstr "erro de sintaxe: \";\" inesperado" + +#: make_cmd.c:320 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "erro de sintaxe: \"((%s))\"" + +#: make_cmd.c:572 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: tipo de instrução %d errado" + +#: make_cmd.c:657 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "" +"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" + +#: make_cmd.c:756 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" + +#: parse.y:2369 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha " +"truncada" + +#: parse.y:2772 +msgid "maximum here-document count exceeded" +msgstr "total here-document máximo excedido" + +#: parse.y:3511 parse.y:3881 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "EOF inesperado ao procurar \"%c\" correspondentes" + +#: parse.y:4581 +msgid "unexpected EOF while looking for `]]'" +msgstr "EOF inesperado ao procurar \"]]\"" + +#: parse.y:4586 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\"" + +#: parse.y:4590 +msgid "syntax error in conditional expression" +msgstr "erro de sintaxe em expressão condicional" + +#: parse.y:4668 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "símbolo inesperado \"%s\", esperado \")\"" + +#: parse.y:4672 +msgid "expected `)'" +msgstr "esperado \")\"" + +#: parse.y:4700 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "argumento \"%s\" inesperado para operador unário condicional" + +#: parse.y:4704 +msgid "unexpected argument to conditional unary operator" +msgstr "argumento inesperado para operador unário condicional" + +#: parse.y:4750 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional" + +#: parse.y:4754 +msgid "conditional binary operator expected" +msgstr "esperado operador binário condicional" + +#: parse.y:4776 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "argumento \"%s\" inesperado para operador binário condicional" + +#: parse.y:4780 +msgid "unexpected argument to conditional binary operator" +msgstr "argumento inesperado para operador binário condicional" + +#: parse.y:4791 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "símbolo \"%c\" inesperado em comando condicional" + +#: parse.y:4794 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "símbolo \"%s\" inesperado em comando condicional" + +#: parse.y:4798 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "símbolo %d inesperado em comando condicional" + +#: parse.y:6220 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado" + +#: parse.y:6238 +#, c-format +msgid "syntax error near `%s'" +msgstr "erro de sintaxe junto a \"%s\"" + +#: parse.y:6248 +msgid "syntax error: unexpected end of file" +msgstr "erro de sintaxe: fim de ficheiro inesperado" + +#: parse.y:6248 +msgid "syntax error" +msgstr "erro de sintaxe" + +#: parse.y:6310 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Use \"%s\" para sair da consola.\n" + +#: parse.y:6472 +msgid "unexpected EOF while looking for matching `)'" +msgstr "EOF inesperado ao procurar o \")\" correspondente" + +#: pcomplete.c:1132 +#, c-format +msgid "completion: function `%s' not found" +msgstr "completion: função \"%s\" não encontrada" + +#: pcomplete.c:1722 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possível ciclo de repetição" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:300 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: conector \"%d\" errado" + +#: print_cmd.c:373 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: descritor de ficheiro inválido" + +#: print_cmd.c:378 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: ponteiro de ficheiro NULL" + +#: print_cmd.c:382 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1538 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: \"%c\": carácter de formato inválido" + +#: redir.c:121 redir.c:167 +msgid "file descriptor out of range" +msgstr "descritor de ficheiro fora de alcance" + +#: redir.c:174 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: redireccionamento ambíguo" + +#: redir.c:178 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: impossível sobrescrever ficheiro existente" + +#: redir.c:183 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: restricto: impossível redireccionar saída" + +#: redir.c:188 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "impossível criar ficheiro temporário para here-document: %s" + +#: redir.c:192 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: impossível atribuir fd a variável" + +#: redir.c:588 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede" + +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +msgid "redirection error: cannot duplicate fd" +msgstr "erro de redireccionamento: impossível duplicar fd" + +#: shell.c:343 +msgid "could not find /tmp, please create!" +msgstr "impossível encontrar /tmp, por favor crie-a!" + +#: shell.c:347 +msgid "/tmp must be a valid directory name" +msgstr "/tmp tem de ser um nome de pasta válido" + +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção inválida" + +#: shell.c:1299 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossível definir uid como %d: uid efectiva %d" + +#: shell.c:1306 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossível definir gid como %d: gid efectiva %d" + +#: shell.c:1494 +msgid "cannot start debugger; debugging mode disabled" +msgstr "impossível iniciar o depurador; modo de depuração desactivado" + +#: shell.c:1608 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: é uma pasta" + +#: shell.c:1826 +msgid "I have no name!" +msgstr "Não tenho nome!" + +#: shell.c:1980 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versão %s-(%s)\n" + +#: shell.c:1981 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Uso:\t%s [opção longa GNU] [opção] ...\n" +"\t%s [opção longa GNU] [opção] script-file ...\n" + +#: shell.c:1983 +msgid "GNU long options:\n" +msgstr "Opções longas GNU:\n" + +#: shell.c:1987 +msgid "Shell options:\n" +msgstr "Opções da consola:\n" + +#: shell.c:1988 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n" + +#: shell.c:2003 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\topção -%s ou -o\n" + +#: shell.c:2009 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "" +"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" + +#: shell.c:2010 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "" +"Insira \"%s -c help\" para mais informação sobre comandos internos da " +"consola.\n" + +#: shell.c:2011 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Use o comando \"bashbug\" para reportar erros.\n" + +#: shell.c:2013 +#, c-format +msgid "bash home page: \n" +msgstr "Página inicial do bash: \n" + +#: shell.c:2014 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda geral para usar programas GNU: \n" + +#: sig.c:695 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: operação inválida" + +#: siglist.c:48 +msgid "Bogus signal" +msgstr "Sinal falso" + +#: siglist.c:51 +msgid "Hangup" +msgstr "Desligar" + +#: siglist.c:55 +msgid "Interrupt" +msgstr "Interromper" + +#: siglist.c:59 +msgid "Quit" +msgstr "Sair" + +#: siglist.c:63 +msgid "Illegal instruction" +msgstr "Instrução ilegal" + +#: siglist.c:67 +msgid "BPT trace/trap" +msgstr "BPT trace/trap" + +#: siglist.c:75 +msgid "ABORT instruction" +msgstr "Instrução ABORT" + +#: siglist.c:79 +msgid "EMT instruction" +msgstr "Instrução EMT" + +#: siglist.c:83 +msgid "Floating point exception" +msgstr "Excepção de vírgula flutuante" + +#: siglist.c:87 +msgid "Killed" +msgstr "Morto" + +#: siglist.c:91 +msgid "Bus error" +msgstr "Erro de bus" + +#: siglist.c:95 +msgid "Segmentation fault" +msgstr "Falha de segmentação" + +#: siglist.c:99 +msgid "Bad system call" +msgstr "Chamada de sistema errada" + +#: siglist.c:103 +msgid "Broken pipe" +msgstr "Pipe quebrado" + +#: siglist.c:107 +msgid "Alarm clock" +msgstr "Alarme" + +#: siglist.c:111 +msgid "Terminated" +msgstr "Terminado" + +#: siglist.c:115 +msgid "Urgent IO condition" +msgstr "Condição IO urgente" + +#: siglist.c:119 +msgid "Stopped (signal)" +msgstr "Parado (sinal)" + +#: siglist.c:127 +msgid "Continue" +msgstr "Continuar" + +#: siglist.c:135 +msgid "Child death or stop" +msgstr "Morte ou paragem do filho" + +#: siglist.c:139 +msgid "Stopped (tty input)" +msgstr "Parado (entrada tty)" + +#: siglist.c:143 +msgid "Stopped (tty output)" +msgstr "Parado (saída tty)" + +#: siglist.c:147 +msgid "I/O ready" +msgstr "I/O pronto" + +#: siglist.c:151 +msgid "CPU limit" +msgstr "Limite do CPU" + +#: siglist.c:155 +msgid "File limit" +msgstr "Limite do ficheiro" + +#: siglist.c:159 +msgid "Alarm (virtual)" +msgstr "Alarme (virtual)" + +#: siglist.c:163 +msgid "Alarm (profile)" +msgstr "Alarme (perfil)" + +#: siglist.c:167 +msgid "Window changed" +msgstr "Janela alterada" + +#: siglist.c:171 +msgid "Record lock" +msgstr "Bloqueio de registo" + +#: siglist.c:175 +msgid "User signal 1" +msgstr "Sinal de utilizador 1" + +#: siglist.c:179 +msgid "User signal 2" +msgstr "Sinal de utilizador 2" + +#: siglist.c:183 +msgid "HFT input data pending" +msgstr "entrada de dados HTF pendente" + +#: siglist.c:187 +msgid "power failure imminent" +msgstr "falha de energia iminente" + +#: siglist.c:191 +msgid "system crash imminent" +msgstr "acidente do sistema iminente" + +#: siglist.c:195 +msgid "migrate process to another CPU" +msgstr "migrar processo para outro CPU" + +#: siglist.c:199 +msgid "programming error" +msgstr "erro de programação" + +#: siglist.c:203 +msgid "HFT monitor mode granted" +msgstr "concedido modo de monitor HTF" + +#: siglist.c:207 +msgid "HFT monitor mode retracted" +msgstr "retirado modo de monitor HTF" + +#: siglist.c:211 +msgid "HFT sound sequence has completed" +msgstr "sequência de som HTF terminou" + +#: siglist.c:215 +msgid "Information request" +msgstr "Pedido de informação" + +#: siglist.c:223 +msgid "Unknown Signal #" +msgstr "Sinal desconhecido #" + +#: siglist.c:225 +#, c-format +msgid "Unknown Signal #%d" +msgstr "Sinal desconhecido #%d" + +#: subst.c:1450 subst.c:1641 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "má substituição: sem \"%s\" de fecho em %s" + +#: subst.c:3209 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: impossível atribuir lista a membro de matriz" + +#: subst.c:5734 subst.c:5750 +msgid "cannot make pipe for process substitution" +msgstr "impossível fazer pipe para substituição de processo" + +#: subst.c:5796 +msgid "cannot make child for process substitution" +msgstr "impossível fazer filho para substituição de processo" + +#: subst.c:5848 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "impossível abrir pipe chamado %s para leitura" + +#: subst.c:5850 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "impossível abrir pipe chamado %s para escrita" + +#: subst.c:5873 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "imossível duplicar pipe chamado %s como fd %d" + +#: subst.c:5990 +msgid "command substitution: ignored null byte in input" +msgstr "substituição de comando: byte nulo ignorado na entrada" + +#: subst.c:6121 +msgid "cannot make pipe for command substitution" +msgstr "impossível fazer pipe para substituição de comando" + +#: subst.c:6164 +msgid "cannot make child for command substitution" +msgstr "impossível fazer filho para substituição de comando" + +#: subst.c:6190 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: impossível duplicar pipe como fd 1" + +#: subst.c:6641 subst.c:9483 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: nome de variável inválido para referência de nome" + +#: subst.c:6737 subst.c:6755 subst.c:6903 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansão indirecta inválida" + +#: subst.c:6771 subst.c:6910 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nome de variável inválido" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro nulo ou não definido" + +#: subst.c:6964 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não definido" + +#: subst.c:7201 subst.c:7216 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de sub-cadeia < 0" + +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: má substituição" + +#: subst.c:8948 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: impossível atribuir desta forma" + +#: subst.c:9346 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"futuras versões da consola vão forçar a avaliação como uma substituição " +"aritmética" + +#: subst.c:9903 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "má substituição: sem \"\"\" de fecho em %s" + +#: subst.c:10907 +#, c-format +msgid "no match: %s" +msgstr "sem par:%s" + +#: test.c:147 +msgid "argument expected" +msgstr "argumento esperado" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: expressão inteira esperada" + +#: test.c:265 +msgid "`)' expected" +msgstr "\")\" esperado" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "\")\" esperado, encontrado %s" + +#: test.c:282 test.c:748 test.c:751 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: operador unáro esperado" + +#: test.c:469 test.c:791 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: operador bináro esperado" + +#: test.c:873 +msgid "missing `]'" +msgstr "\"]\" em falta" + +#: trap.c:216 +msgid "invalid signal number" +msgstr "número de sinal inválido" + +#: trap.c:379 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: valor errado em trap_list[%d]: %p" + +#: trap.c:383 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim " +"próprio" + +#: trap.c:439 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: sinal errado %d" + +#: variables.c:399 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "erro ao importar definição de função para \"%s\"" + +#: variables.c:801 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "nível da consola (%d) muito alto, a repor para 1" + +#: variables.c:2512 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variável: sem contexto de função no âmbito actual" + +#: variables.c:2531 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: não pode atribuir um valor à variável" + +#: variables.c:3246 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: a atribuir inteiro à referência de nome" + +#: variables.c:4149 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: sem contexto de função no âmbito actual" + +#: variables.c:4437 +#, c-format +msgid "%s has null exportstr" +msgstr "%s tem exportstr nulo" + +#: variables.c:4442 variables.c:4451 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "carácter %d inválido em exportstr para %s" + +#: variables.c:4457 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "sem \"=\" em exportstr para %s" + +#: variables.c:4911 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "pop_var_context: cabeça de consola_variables não é contexto de função" + +#: variables.c:4924 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: sem contexto de global_variables" + +#: variables.c:4999 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "" +"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" + +#: variables.c:5862 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: impossível abrir como FICHEIRO" + +#: variables.c:5867 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: valor inválido para descritor de ficheiro trace" + +#: variables.c:5912 +#, 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) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versão %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "Não há QUALQUER GARANTIA, até aos limites previstos pela Lei." + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:95 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: impossível alocar %lu bytes" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" + +#: xmalloc.c:167 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: impossível alocar %lu bytes" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [nome[=valor] ... ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] nome [nome ...]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r " +"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-" +"readline]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [consola-interno [arg ...]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [expr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [pst]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "comando [-pVv] comando [arg ...]" + +#: builtins.c:78 +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nome[=valor] ...]" + +#: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nome[=valor] ..." + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [opção] nome[=valor] ..." + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg ...]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg ...]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f ficheiro] [nome ...]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg ...]" + +#: builtins.c:96 +msgid "getopts optstring name [arg]" +msgstr "getopts optstring name [arg]" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "" +"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e ename] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [comando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [tarefa_spec]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [tarefa_spec ...]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p caminho] [-dt] [nome ...]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [padrão ...]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg " +"[arg...]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "tarefas [-lnprs] [tarefaspec ...] ou tarefas -x comando [args]" + +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l " +"[sigspec]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " +"prompt] [-t inacção] [-u fd] [nome ...]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nome ...]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nome[=valor] ...] ou export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source ficheiro [argumentos]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ficheiro [argumentos]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [expr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg... ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signal_spec ...]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] nome [nome ...]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modo]" + +#: builtins.c:177 +#, fuzzy +msgid "wait [-fn] [id ...]" +msgstr "wait [-n] [id ...]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid ...]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ... ] ; do COMANDOS; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do COMANDOS; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] pipeline" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " +"COMANDOS; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while COMANDOS; do COMANDOS; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until COMANDOS; do COMANDOS; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] comando [redireccionamentos]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "nome de função { COMANDOS ; } ou nome () { COMANDOS ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "tarefa_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( expressão ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ expressão ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variáveis - nomes e significados de algumas variáveis da consola" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | pasta]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [nomeopção ...]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] formato [argumentos]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o opção] [-A acção] [-G padrglob] [-W " +"listpal] [-F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] " +"[nome ...]" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrglob] [-W listpal] [-" +"F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] [palavra]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DE] [name ...]" +msgstr "compopt [-o|+o opção] [-DE] [nome ...]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C " +"callback] [-c quantia] [matriz]" + +#: builtins.c:244 +#, fuzzy +msgid "" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"readarray [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c " +"quantia] [matriz]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definir ou mostrar aliás.\n" +" \n" +" Sem argumentos, \"alias imprime a lista de aliás na forma\n" +" reutilizável \"alias NOME=VALOR\" na saída padrão.\n" +" \n" +" Com argumetos, é definido um aliás para cada NOME cujo VALOR é dado.\n" +" Um espaço final em VALOR causa uma verificação à palavra seguinte para\n" +" substituição do aliás quando o aliás for expandido.\n" +" \n" +" Opções:\n" +" -p\timprimir todos os aliás definidos em formato reutilizável\n" +" \n" +" Estado de saída:\n" +" alias devolve verdadeiro a não ser que seja fornecido um NOME para o " +"qual\n" +"ainda não haja um aliás." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Remover cada NOME da lista de aliás definidos.\n" +" \n" +" Opções:\n" +" -a\tremove todas as definições de aliás\n" +" \n" +" Devolve sucesso a não ser que NOME seja um aliás inexistente." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Definir associações de teclas e variáveis para Readline.\n" +" \n" +" Associar uma sequência de teclas a uma função ou macro Readline, ou\n" +" defina uma variável Readline. A sintaxe de argumento não-opção é " +"equivalente\n" +" à encontrada em ~/.inputrc, mas tem de ser passada como argumento " +"único:\n" +" e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n" +" \n" +" Opções:\n" +" -m maptecl Use MAPTECL como mapa de teclado para a " +"duração deste\n" +" comando. Nomes de mapas aceitáveis são " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, " +"vi-move,\n" +" vi-command, e vi-insert.\n" +" -l Listar nomes de funções.\n" +" -P Listar nomes de funções e associações.\n" +" -p Listar funções funçãos e associações de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -S Listar sequências de teclas que chamem " +"macros e seus valores\n" +" -s Listar sequências de teclas que chamem " +"macros e seus valores\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" -V Listar nomes de variáveis e seus valores\n" +" -v Listar nomes de variáveis e seus valores de " +"forma a que possam\n" +" ser reutilizados como entrada.\n" +" -q nome-função Consultar que teclas chamaram a função em " +"causa.\n" +" -u nome-função Unbind all keys which are bound to the named " +"função.\n" +" -r seqtecl Remover associação de SEQTECL.\n" +" -f nomefich Ler associações de teclas a partir de " +"NOMEFICH.\n" +" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL " +"quando\n" +" \t\t\t\tSEQTECL for inserido.\n" +" -X Listarsequências de teclas associadas a -x e " +"comandos ligados\n" +" de forma a que possam ser reutilizados como " +"entrada.\n" +" \n" +" Estado de saída:\n" +" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra " +"um erro." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Sair de ciclos for, while, ou until.\n" +" \n" +" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N " +"ciclos\n" +" envolventes.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Retomar ciclos for, while, ou until.\n" +" \n" +" Retoma a iteração seguinte do ciclo FOR, WHILE ou UNTIL envolvente.\n" +" Se N for especificado, retoma o N-ésimo ciclo envolvente.\n" +" \n" +" Estado de saída:\n" +" O estado de saída é 0 a não ser que N não seja maior ou igual que 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin.." +msgstr "" +"Executa comandos internos da consola.\n" +" \n" +" Executar SHELL-INTERNO com argumentos ARGs sem realizar procura do " +"comando.\n" +" Útil quando deseja re-implementar um comando interno da consola como\n" +" função da consola, mas tem de executar o comando interno dentro da " +"função.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO " +"não\n" +" for um comando interno da consola." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Devolver o contexto da actual chamada a sub-rotina.\n" +" \n" +" Sem EXPR, devolve \"$linha $nomefich\". Com EXPR, devolve\n" +" \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n" +" para obter um rasto da pilha.\n" +" \n" +" O valor de EXPR indica quantas chamadas deve recuar antes da\n" +" actual; a chamada superior é a chamada 0.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que a consola não esteja a executar uma função ou " +"EXPR\n" +" seja inválida." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Alterar a pasta de trabalho da consola.\n" +" \n" +" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da " +"variável\n" +" HOME.\n" +" \n" +" A variável CDPATH define o caminho de procura para a pasta que contém\n" +" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":" +"\" (:).\n" +" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar " +"com\n" +" uma barra (/), CDPATH não é usada.\n" +" \n" +" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" " +"estiver definida,\n" +" a palavra é assumida como nome de variável. Se essa variável tiver um " +"valor,\n" +" será usado como PASTA.\n" +" \n" +" Opções:\n" +" -L\tforçar seguimento de ligações simbólicas: resolve ligações\n" +" \t\tsimbólicas em PASTA após processar instâncias de \"..\"\n" +" -P\tusa a estrutura física de pastas sem seguir ligações\n" +" \t\tsimbólicas: resolve ligações simbólicas em PASTA antes de\n" +" \t\tprocessar instâncias de \"..\"\n" +" -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n" +" \t\tser determinada com sucesso, sair com\n" +" \t\testado não-zero\n" +" -@\tem sistemas que o suportam, apresentar um ficheiro com " +"atributos\n" +" \t\testendidos como uma pasta contendo os atributos do ficheiro.\n" +" \n" +" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse " +"especificada.\n" +" \"..\" é processado colocando o componente de caminho imediatamente " +"anterior\n" +" como barra ou o começo de PASTA.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso " +"quando\n" +" -P é usada; caso contrário, não-zero." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Imprimir o nome da actual pasta de trabalho.\n" +" \n" +" Opções:\n" +" -L\tImprimir o valor de $PWD se nomear a actual pasta de\n" +" \t\ttrabalho\n" +" -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n" +" \n" +" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse " +"especificada.\n" +" \n" +" Estado de saída:\n" +" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta " +"actual\n" +" não possa ser lida." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Comando nulo.\n" +" \n" +" Sem efeito; o comando não faz nada.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Devolve um resultado com sucesso.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Devolve um resultado sem sucesso.\n" +" \n" +" Estado de saída:\n" +" Falha sempre." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Executar um comando simples ou mostrar informação sobre comandos.\n" +" \n" +" Executa COMANDO com ARGS suprimindo procura de funções da consola ou " +"mostra\n" +" informação acerca dos COMANDOs especificados. Pode ser usado para " +"chamar comandos\n" +" em disco quando existe uma função com o mesmo nome.\n" +" \n" +" Opções:\n" +" -p usar valor predefinido para CAMINHO que garanta que se " +"encontram\n" +" todos os utilitários padrão\n" +" -v imprimir uma descrição de COMANDO similar ao interno \"type" +"\"\n" +" -V imprimir uma descrição mais detalhada de COMANDO\n" +" \n" +" Estado de saída:\n" +" Devolve o estado de saída de COMANDO ou falha se COMANDO não for " +"encontrado." + +#: builtins.c:490 +#, 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." +msgstr "" +"Define valores e atributos de variáveis.\n" +" \n" +" Declare variáveis e dê-lhes atributos. Se não indicar NOMEs,\n" +" mostrar os atributos e valores de todas as variáveis.\n" +" \n" +" Opções:\n" +" -f\trea cadeiair acção ou exibição a nomes e definições de função\n" +" -F\trea cadeiair exibição só a nomes de função (mais nº de linha e\n" +" \t\tficheiro fonte ao depurar)\n" +" -g\tcriar variáveis globais quando usadas numa função da shel; " +"senão\n" +" \t\té ignorada\n" +" -p\tmostrar atributos e valores de cada NOME\n" +" \n" +" Opções que definem atributos:\n" +" -a\tpara tornar NOMEs matrizes indexadas (se suportado)\n" +" -A\tpara tornar NOMEs matrizes associativas (se suportado)\n" +" -i\tpara dar a NOMEs o atributo \"integer\"\n" +" -l\tpara converter NOMEs em minúsculas ao atribuir\n" +" -n\ttornar NOME uma referência à variável chamada pelo seu valor\n" +" -r\tpara tornar NOMEs só de leitura\n" +" -t\tpara dar a NOMEs o atributo \"trace\"\n" +" -u\tpara converter NOMEs em maiúsculas ao atribuir\n" +" -x\tpara tornar NOMEs exportáveis\n" +" \n" +" Usar \"+\" em vez de \"-\" desliga o atributo indicado.\n" +" \n" +" Variáveis com o atributo integer têm avaliação aritmética (veja o\n" +" comando \"let\") realizada quando lhe é atribuído um valor.\n" +" \n" +" Quando usado numa função, \"declare\" torna NOMEs locais, como o " +"comando\n" +" \"local\". A opção \"-g\" suprime este comportamento.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um\n" +" erro de atribuição da variável." + +#: builtins.c:530 +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Define variáveis e atributos.\n" +" \n" +" Um sinónimo para \"declare\". Veja \"help declare\"." + +#: builtins.c:538 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Define variáveis locais.\n" +" \n" +" Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n" +" ser qualquer opção aceite por \"declare\".\n" +" \n" +" Variáveis locais só podem ser usadas dentro de uma função; só são " +"visíveis\n" +" para a função onde foram definidas e para os seus filhos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida seja fornecida, " +"ocorra \n" +" um erro de atribuição ou a consola não esteja a executar uma função." + +#: builtins.c:555 +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." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs, separados por espaço único e seguidos de nova linha (LF)\n" +" na saída padrão.\n" +" \n" +" Opções:\n" +" -n\tnaõ acrescentar nova linha\n" +" -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n" +" -E\tsuprimir explicitamente interpretação de escapes com barra " +"esquerda\n" +" \n" +" \"echo\" interpreta os seguintes caracteres de escapes com barra " +"esquerda:\n" +" \\a\talerta (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuprimir mais saídas\n" +" \\e\tcarácter de escape\n" +" \\E\tcarácter de escape\n" +" \\f\tform feed\n" +" \\n\tnova linha (LF)\n" +" \\r\tcarriage return (CR)\n" +" \\t\ttabulação horizontal\n" +" \\v\ttabulação vertical\n" +" \\\\\tbarra esquerda (\"\\\")\n" +" \\0nnn\to carácter cujo código ASCII é NNN (octal). NNN pode ter\n" +" \t\tde 0 a 3 dígitos octais\n" +" \\xHH\to carácter de 8-bit cujo valor é HH (hexadecimal). HH\n" +" \t\tpode ter um ou dois dígitos hexadecimais\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:591 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Mostrar ARGs na saída padrão seguidos de nova linha (LF).\n" +" \n" +" Opções:\n" +" -n\tnão acrescentar nova linha\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que ocorra um erro de escrita." + +#: builtins.c:606 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"Activar e desactivar internos da consola.\n" +" \n" +" Activa e desactiva comandos internos da consola. Desativar permite\n" +" executar um comando de disco com o mesmo nome que comando interno\n" +" sem ter de usar um caminho completo.\n" +" \n" +" Opções:\n" +" -a\timprimir lista de internos mostrando se estão ou não activos\n" +" -n\tdesactivar cada NOME ou mostrar uma lista de internos " +"desactivados\n" +" -p\timprimir a lista de internos em formato reutilizável\n" +" -s\timprimir só os nomes de internos \"especiais\" Posix\n" +" \n" +" Opções que controlam o carregamento dinâmico:\n" +" -f\tCarregar interno NOME de objecto partilhado NOMEFICH\n" +" -d\tRemover um interno carregado com -f\n" +" \n" +" Sem opções, cada NOME é activado.\n" +" \n" +" Para usar o \"test\" encontado em $PATH em vez do interno da consola\n" +" insira \"enable -n test\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja um interno da consola ou " +"ocorra um erro." + +#: builtins.c:634 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Executa argumentos como comando da consola.\n" +" \n" +" Combina ARGs numa única cadeia, usa o resultado como entrada da " +"consola,\n" +" e executa os comandos resultantes.\n" +" \n" +" Estado de saída:\n" +" Devolve estado de saída do comando ou sucesso se o comando for nulo." + +#: builtins.c:646 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters ($0 - $9), but if\n" +" more arguments are given, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Analisa argumentos da opção.\n" +" \n" +" Getopts é usado pelos procedimentos da consola para analisar parâmetros " +"posicionais\n" +" como opções.\n" +" \n" +" CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n" +" for seguida de \":\", espera-se que a opção tenha um argumento,\n" +" separado da opção por um espaço.\n" +" \n" +" Sempre que é chamado, getopts coloca a opção seguinte na variável\n" +" da consola $name, inicializa name se não existir e o índice do\n" +" argumento seguinte a processar na variável da consola OPTIND.\n" +" OPTIND é inicializado em 1 sempre que a consola ou um script da\n" +" shellé chamado. Quando uma opção requer um argumento, o\n" +" getopts coloca esse argumento na variável da consola OPTARG.\n" +" \n" +" O getopts reporta erros de duas formas. Se o primeiro carácter\n" +" de OPTCADEIA é \":\", o getopts usa um relatório de erro\n" +" silencioso. Neste modo não verá mensagens de erro. Se for vista uma\n" +" opção inválida is seen, o getopts põe o carácter de opção em OPTARG.\n" +" Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n" +" define OPTARG como o carácter de opção encontrado. Se o getopts não\n" +" estiver em modo silêncio e for vista uma opção inválida, o getopts\n" +" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento " +"requeriso,\n" +" é posto \"?\" no NOME, OPTARG é limpoe é imprimida uma mensagem de\n" +" diagnóstico.\n" +" \n" +" Se a variável da consola OPTERR tiver valor 0, o getopts desactiva a\n" +" impressão de mensagens de erro, mesmo que o 1º carácter de\n" +" CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n" +" \n" +" O getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas " +"se\n" +" receber mais argumentos, são eles que são analisados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n" +" encontrado ou se ocorrer um erro." + +#: builtins.c:688 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Substitui a consola com o comando indicado.\n" +" \n" +" Executar COMANDO, substituindo esta consola pelo programa " +"especificado.\n" +" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for " +"especificado,\n" +" quaisquer redireccionamentos têm efeito na consola actual.\n" +" \n" +" Opções:\n" +" -a nome\tpassa NOME como argumento 0 a COMANDO\n" +" -c\texecuta COMANDO com um ambiente vazio\n" +" -l\tpõe uma barra no argumento 0 de COMANDO\n" +" \n" +" Se o comando não puder ser executado, uma consola não interactiva sai, " +"a não ser que\n" +" a opção de consola \"execfail\" esteja definida.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um " +"erro de redireccionamento." + +#: builtins.c:709 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Sai da consola.\n" +" \n" +" Sai da consola com estado N. Se N for omitido, o estado de saída\n" +" é o do último comando executado." + +#: builtins.c:718 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Sai de uma consola com sessão.\n" +" \n" +" Sai de uma consola com sessão com estado de saída N. Devolve um erro " +"se não for\n" +" executado numa consola com sessão." + +#: builtins.c:728 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Mostra ou executa comandos da lista do histórico.\n" +" \n" +" fc é usado para listar ou editar e re-executar comandos da lsiat do " +"histórico.\n" +" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou " +"PRIMEIRO pode ser\n" +" cadeia, que significa o comando mais recente começado por essa\n" +" cadeia.\n" +" \n" +" Opções:\n" +" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, " +"depois EDITOR,\n" +" \t\tdepois vi\n" +" -l \tlistar linhas em vez de editar\n" +" -n\tomitir nºs de linha ao ouvir\n" +" -r\treverter a ordem das linhas (mais recentes primeiro)\n" +" \n" +" Com o formato \"fc -s [pat=rep ...] [comando]\", COMANDO é\n" +" re-executado após a substituição VELHO=NOVO ser realizada.\n" +" \n" +" Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n" +" executa o último comando começado por \"cc\" e inserir \"r\" re-" +"executa\n" +" o último comando.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um " +"erro." + +#: builtins.c:758 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Move a tarefa para 1º plano.\n" +" \n" +" Coloca a tarefa identificada com JOB_SPEC em 1º plano, tornando-a a\n" +" tarefa actual. Se JOB_SPEC não existir, é usada a noção da consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Estado do comando colocado em 1º plano ou falha se ocorrer um erro." + +#: builtins.c:773 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Move a tarefa para 2º plano.\n" +" \n" +" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se " +"tivessem\n" +" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da " +"consola de\n" +" tarefa actual.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:787 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Recorda ou mostra localizações de programas.\n" +" \n" +" Determina e recorda o caminho completo de cada comando NOME. Se\n" +" não tiver argumentos, é mostrada informação sobre comando recordados.\n" +" \n" +" Opções:\n" +" -d\tesquecer a localização recordada de cada NOME\n" +" -l\tmostrar num formato que possa ser usado como entrada\n" +" -p caminho\tuse CAMINHO como caminho completo para NOME\n" +" -r\tesquecer todas as localizações recordadas\n" +" -t\timprimir a localização recordada de cada NOME, precedendo-a\n" +" \t\tdo correspondente NOME se forem\n" +" \t\tindicados múltiplos NOMEs\n" +" Argumentos:\n" +" NOME\tCada NOME é procurado no $PATH e adicionado à lista\n" +" \t\tde comandos lembrados.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:812 +#, fuzzy +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Mostra informação sobre comandos internos.\n" +" \n" +" Mostra breves resumos de comandos internos. Se PADRÃO for\n" +" especificado, dá ajuda detalhada em todos os comandos que cumpram " +"PADRÃO,\n" +" senão imprime a lista de tópicos de ajuda.\n" +" \n" +" Opções:\n" +" -d\tmostra uma descrição breve de cada tópico\n" +" -m\tmostra uso em formato pseudo-manpage\n" +" -s\tmostra só uma sinopse curta para cada tópico que cumpre\n" +" \t\tPADRÃO\n" +" \n" +" Argumentos:\n" +" PADRÃO\tPadrão que especifica um tópico de ajuda\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma " +"opção inválida." + +#: builtins.c:836 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Mostra ou manipula a lista do histórico.\n" +" \n" +" Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n" +" modificada com um \"*\". Um argumento de N lista só as últimas N " +"entradas.\n" +" \n" +" Opções:\n" +" -c\tlimpa a lista eliminado todas as entradas\n" +" -d desvio\telimina a entrada do histórico na posição DESVIO.\n" +" \n" +" -a\tacrescentar linhas de histórico desta sessão ao ficheiro de " +"histórico\n" +" -n\tler todas as linhas de histórico ainda não lidas do ficheiro de " +"histórico\n" +" \t\te acrescentá-las à lista de histórico\n" +" -r\tler o ficheiro de histórico e acrescentar o conteúdo à lista de\n" +" \t\thistórico\n" +" -w\tescrever o histórico actual no ficheiro de histórico\n" +" \n" +" -p\trealizar expansão do histórico em cada ARG e mostrar o " +"resultado\n" +" \t\tsem gravar na lista de histórico\n" +" -s\tacrescentar ARGs à lista de histórico como entrada única\n" +" \n" +" Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n" +" se FICHHIST tiver um valor, será usado, caso contrário ~/." +"bash_history.\n" +" \n" +" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é " +"usado\n" +" como cadeia de formato para strftime(3) para imprimir o carimbo " +"associado\n" +" a cada entrad de histórico mostrada. Senão não são imprimidos quaisquer " +"carimbos.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:873 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Mostra o estado das tarefas.\n" +" \n" +" Lista as tarefas activas. JOBSPEC rea cadeiae a saída a essa tarefa.\n" +" Sem opções, é mostrado o estado de todas as tarefas activas.\n" +" \n" +" Opções:\n" +" -l\tlista IDs de processo além da informação normal\n" +" -n\tlista só processos com estado alterado desde a última\n" +" \t\tnotificação\n" +" -p\tlista só IDs de processo\n" +" -r\trea cadeiae saída a tarefas em execução\n" +" -s\trea cadeiae saída a tarefas paradas\n" +" \n" +" Se -x for usado, COMANDO é executado após todas as especificações de " +"tarefas\n" +" que aparecem em ARGS terem sido substituídas pela ID de processo do " +"líder de\n" +" grupo do processo dessat tarefa.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro.\n" +" Se -x for usado, devolve o estado de saída de COMANDO." + +#: builtins.c:900 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Remove tarefas da consola actual.\n" +" \n" +" Remove cada argumento JOBSPEC da tabela de tarefas activas. Sem\n" +" JOBSPECs, a consola usa a sua noção de tarefa actual.\n" +" \n" +" Opções:\n" +" -a\tremove todas as tarefas se JOBSPEC não for indicado\n" +" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a " +"tarefa\n" +" \t\tse a consola receber um SIGHUP\n" +" -r\tremove só tarefas em execução\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja " +"indicada." + +#: builtins.c:919 +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Envia um sinal a uma tarefa.\n" +" \n" +" Envia aos processos identificados por PID ou JOBSPEC o sinal chamado\n" +" SIGSPEC ou SIGNUM. Se nem SIGSPEC nem SIGNUM estiverem presentes,\n" +" SIGTERM é presumido.\n" +" \n" +" Opções:\n" +" -s sig\tSIG é um nome de sinal\n" +" -n sig\tSIG é um número de sinal\n" +" -l\tlista nomes de sinais; se se seguirem argumentos, são\n" +" \t\tassumidos como nºs de sinal para listar os nomes\n" +" -L\tsinónimo de -l\n" +" \n" +" Mata um interno da consola por dois motivos: permite usar as IDs de " +"tarefa\n" +" em vez de IDs de processo e permite matar processos se o limite de\n" +" processos que pode criar for atingido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:943 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Avalia as expressões aritméticas.\n" +" \n" +" Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n" +" inteiros de largura fixa sem verificação de transporte, embora a " +"divisão\n" +" por 0 seja sinalizada como erro. A seguinte lista de operadores é " +"agrupada\n" +" em níveis de igual prioridade. Os níveis estão listados\n" +" por ordem de precedência decrescente.\n" +" \n" +" \tid++, id--\tvariável pós-incremento, pós-decremento\n" +" \t++id, --id\tvariável pré-incremento, pré-decremento\n" +" \t-, +\t\tmenos, mais unário\n" +" \t!, ~\t\tnegação lógica e bitwise\n" +" \t**\t\texponenciação\n" +" \t*, /, %\t\tmultiplicação, divisão, resto\n" +" \t+, -\t\tadição, subtracção\n" +" \t<<, >>\t\tdeslocação esquerda e direita bitwise\n" +" \t<=, >=, <, >\tcomparação\n" +" \t==, !=\t\tigualdade, não igualdade\n" +" \t&\t\tE bitwise\n" +" \t^\t\tOUEX bitwise\n" +" \t|\t\tOU bitwise\n" +" \t&&\t\tE lógico\n" +" \t||\t\tOU lógico\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tatribuição\n" +" \n" +" As variáveis de consola são permitidas como operandos. O nome da " +"variável\n" +" é substituído pelo seu valor (convertido em inteiro de largura fixa) " +"dentro\n" +" de uma expressão. A variável não tem de ter o seu atributo inteiro\n" +" activado para ser usado numa expressão.\n" +" \n" +" Os operadores são avaliados por ordem de precedência. Sub-expressões\n" +" entre parênteses são avaliadas primeiro e ignoram as regras de\n" +" precedência acima.\n" +" \n" +" Estado de saída:\n" +" Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0." + +#: builtins.c:988 +#, 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\tuse Readline to obtain the line\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Lê uma linha da entrada padrão e divide-a em campos.\n" +" \n" +" Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n" +" se a opção -u for usada. A linha é dividida em campos como na divisão\n" +" de palavras e a primeira palavra é atribuída ao primeiro NOME, a " +"segunda\n" +" ao segundo NOME, e assim em diante, com quaisquer palavras que sobrem \n" +" atribuídas ao último NOME. Só caracteres encontrados em $IFS são " +"reconhecidos\n" +" como delimitadores de palavras.\n" +" \n" +" Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n" +" \n" +" Opções:\n" +" -a matriz\tatribui as palavras lidas a índices sequenciais da " +"MATRIZ\n" +" \t\tcomeçando em zero\n" +" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, " +"em vez da\n" +" \t\tnova linha\n" +" -e\tuse Readline para obter a linha numa consola interactiva\n" +" -i texto\tuse TEXTO como texto inicial para Readline\n" +" -n ncars\tvoltar após ler NCARS caracteres em vez de esperar\n" +" \t\tpor nova linha, mas respeita um delimitador se estiver\n" +" \t\tantes de NCARS caracteres\n" +" -N ncars\tvoltar após ler exactamente NCARS caracteres, a não ser " +"que\n" +" \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n" +" \t\tqualquer delimitador\n" +" -p prompt\timprime PROMPT na saída sem nova linha final antes de\n" +" \t\ttentar ler\n" +" -r\tnão permitir que barras esquerdas escapem qualquer carácter\n" +" -s\tnão ecoar entradas vindas de um terminal\n" +" -t inacção\tesgotar o tempo e devolver falha se uma linha completa\n" +" \t\tde entrada não for lida em INACÇÃO segundos. O valor da\n" +" \t\tvariável TMOUT é o predefinido de inacção. INACÇÃO pode ser\n" +" \t\tuma fracção. Se INACÇÃO for 0, read volta\n" +" \t\timediatamente, sem tentar ler quaisquer dados, devolvendo\n" +" \t\tsucesso só se a entrada estiver disponível no descritor de\n" +" \t\tficheiro especificado. O estado de saída é maior que 128\n" +" \t\tse a inacção for excedida\n" +" -u fd\tler do descritor de ficheiro FD em vez da entrada padrão\n" +" \n" +" Estado de saída:\n" +" O código devolvido é zero, a não ser que end-of-file seja encontrado, " +"haja\n" +" inacção (caso em que é maior que 128), ocorra um erro de atribuição de " +"variável,\n" +" ou seja indicado um descritor de ficheiro inválido como argumento de -u." + +#: builtins.c:1035 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"Volta de uma função de consola.\n" +" \n" +" Força a saída de uma função ou script baseado com o valor especificado\n" +" por N. Se N for omitido, o estado de saída é o do último comando\n" +" executado dentro da função ou script.\n" +" \n" +" Estado de saída:\n" +" Devolve N, ou falha se a consola não estiver a executar uma função ou " +"script." + +#: builtins.c:1048 +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Define ou limpa valores de opções ou parâmetros posicionais da consola.\n" +" \n" +" Altera o valor de atributos ou parâmetros posicionais da consola, ou\n" +" mostra os nomes e valores de variáveis da consola.\n" +" \n" +" Opções:\n" +" -a Marca variáveis modificadas ou criadas para exportação.\n" +" -b Notifica o fim da tarefa imediatamente.\n" +" -e Sai imediatamente se um comando sair com estado diferente de " +"zero.\n" +" -f Desactiva geração de nome de ficheiro (globbing).\n" +" -h Recordar localização de comandos à medida que são procurados.\n" +" -k Todos os argumentos de atribuição são colocados no ambiente para " +"um\n" +" comando, não só os que precedem o nome do comando.\n" +" -m Activa o controlo de tarefas.\n" +" -n Lê comandos, mas não os executa.\n" +" -option-name\n" +" Define a variável correspondente a option-name:\n" +" allexport igual a -a\n" +" braceexpand igual a -B\n" +" emacs usa estilo emacs de edição de linhas\n" +" errexit igual a -e\n" +" errtrace igual a -E\n" +" functrace igual a -T\n" +" hashall igual a -h\n" +" histexpand igual a -H\n" +" history activa histórico de comandos\n" +" ignoreeof a consola não sai após ler EOF\n" +" interactive-comments\n" +" permite que comentários apareçam em " +"comandos interactivos\n" +" keyword igual a -k\n" +" monitor igual a -m\n" +" noclobber igual a -C\n" +" noexec igual a -n\n" +" noglob igual a -f\n" +" nolog actualmente aceite mas ignorado\n" +" notify igual a -b\n" +" nounset igual a -u\n" +" onecmd igual a -t\n" +" physical igual a -P\n" +" pipefail o valor devolvido de um pipeline é o estado " +"do\n" +" último comando a sair com estado não-" +"zero,\n" +" ou zero se nenhum saiu com estado não-" +"zero\n" +" posix altera o comportamento do bash onde a " +"operação\n" +" predefinida diferir da norma Posix para " +"cumprir\n" +" a norma\n" +" privileged igual a -p\n" +" verbose igual a -v\n" +" vi usa estilo vi de edição de linhas\n" +" xtrace igual a -x\n" +" -p Activado sempre que as ID de utilizador reais e efectivas não\n" +" coincidam. Desactiva o processamento do ficheiro $ ENV e a \n" +" importação de funções da consola. Desligar esta opção faz com\n" +" que os uid e gid efectivos sejam definidos para os uid e gid " +"reais.\n" +" -t Sair depois de ler e executar um comando.\n" +" -u Trata as variáveis ​​não definidas como erro ao substituir.\n" +" -v Imprime as linhas de entrada da consola à medida que são lidas.\n" +" -x Imprime comandos e seus argumentos à medida que são executados.\n" +" -B a consola realizará expansão de suporte\n" +" -C Se definido, não permitir que ficheiros normais existentes " +"sejam\n" +" sobrescritos pelo redireccionamento da saída.\n" +" -E se definido, ERR é herdada pelas funções de consola.\n" +" -H Activa estilo ! de substituição do histórico. Esta bandeira\n" +" está activada por predefinição, em consolas interativas.\n" +" -P Se definido, não resolve ligações simbólicas ao executar\n" +" comandos como \"cd\" que altera a pasta actual.\n" +" -T Se definido, DEBUG e RETURN são herdadas por funções de " +"consola.\n" +" -- Atribui quaisquer outros argumentos aos parâmetros posicionais.\n" +" Se não houver mais argumentos, os parâmetros posicionais\n" +" são limpos.\n" +" - Atribui quaisquer outros argumentos aos parâmetros " +"posicionais.\n" +" As opções -x e -v são desactivadas.\n" +" \n" +" Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n" +" bandeiras também podem ser usadas por chamada da consola. O actual\n" +" conjunto de bandeiras pode ser encontrado em $-. Os n restantes ARGs\n" +" são parâmetros posicionais e são atribuídos, em ordem, a $1, $2 .. $n.\n" +" Se não houver ARGs, todas as variáveis de consola são imprimidas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida." + +#: builtins.c:1133 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Limpa valores e atributos de variáveis e funções da consola.\n" +" \n" +" Para cada NOME, remove a correspondente variável ou função.\n" +" \n" +" Opções:\n" +" -f\ttrata cada NOME como função de consola\n" +" -v\ttrata cada NOME como variável de consola\n" +" -n\ttrata cada NOME como referência de nome e limpa a própria\n" +" \t\tvariável em vez da variável que referencia\n" +" \n" +" Sem opções, unset primeiro tenta limpar uma variável e, se falhar,\n" +" tenta limpar uma função.\n" +" \n" +" Algumas variáveis não podem ser limpas; veja também \"readonly\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"só de leitura." + +#: builtins.c:1155 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Define o atributo de exportação em variáveis de consola.\n" +" \n" +" Marca cada NOME para exportação automática para o ambiente de futuros\n" +" comandos executados. Se VALOR for fornecido, atribui VALOR antes de " +"exportar.\n" +" \n" +" Opções:\n" +" -f\trefere funções de consola\n" +" -n\tremove a propriedade de exportação de cada NOME\n" +" -p\tmostra uma lista de todas as funções e variáveis exportadas\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1174 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marca as variáveis de consola como imutáveis.\n" +" \n" +" Marca cada NOME como só de leitura; os valores destes NOMEs não podem\n" +" ser alterados por subsequentes atribuições. Se VALOR for fornecido,\n" +" atribui VALOR antes de marcar como só de leitura.\n" +" \n" +" Opções:\n" +" -a\trefere a variáveis de matriz indexadas\n" +" -A\trefere a variáveis de matriz associativas\n" +" -f\trefere a funções de consola\n" +" -p\tmostra uma lista de todas as variáveis ou funções só de " +"leitura,\n" +" \t\tdependendo ou não se a opção -f é indicada\n" +" \n" +" Um argumento \"--\" desactiva futuro processamento da opção.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja " +"inválido." + +#: builtins.c:1196 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Deslocar parâmetros posicionais.\n" +" \n" +" Renomear os parâmetros posicionais $N+1,$N+2 ... para $1,$2 ... Se N\n" +" for omitido, presume-se como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que N seja negativo ou maior que $#." + +#: builtins.c:1208 builtins.c:1223 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Executa comandos de um ficheiro na consola actual.\n" +" \n" +" Lê e execute comandos do NOMEFICH na consola actual. As\n" +" entradas em $PATH são usadas para encontrar a pasta contendo NOMEFICH.\n" +" Se nenhum ARGUMENTO for fornecido,tornam-se parâmetros posicionais\n" +" quando NOMEFICH é executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado em NOMEFICH; falha se\n" +" NOMEFICH não pode ser lido." + +#: builtins.c:1239 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Suspende a execução da consola.\n" +" \n" +" Suspende a execução desta consola até receber um sinal SIGCONT.\n" +" Se não forem forçadas, as consolas com sessão não podem ser suspensas.\n" +" \n" +" Opções:\n" +" -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou " +"ocorra um erro." + +#: builtins.c:1255 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Avalia a expressão condicional.\n" +" \n" +" Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n" +" avaliação de EXPR. As expressões podem ser unárias ou binárias. " +"Expressões\n" +" uinárias são frequentemente usadas para examinar o estado de um " +"ficheiro. Há\n" +" também operadores de cadeias e operadores de comparação numérica.\n" +" \n" +" O comportamento do teste depende do número de argumentos. Leia a\n" +" página do manual do bash para a especificação completa.\n" +" \n" +" Operadores de ficheiros:\n" +" \n" +" -a FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -b FICHEIRO Verdadeiro se o ficheiro for bloqueio especial.\n" +" -c FICHEIRO Verdadeiro se o ficheiro for especial de " +"caracteres.\n" +" -d FICHEIRO Verdadeiro se o ficheiro for uma pasta.\n" +" -e FICHEIRO Verdadeiro se o ficheiro existir.\n" +" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro " +"normal.\n" +" -g FICHEIRO Verdadeiro se o ficheiro for set-group-id.\n" +" -h FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -L FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n" +" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" " +"definido.\n" +" -p FICHEIRO Verdadeiro se o ficheiro for um pipe com nome.\n" +" -r FICHEIRO Verdadeiro se o ficheiro for legível.\n" +" -s FICHEIRO Verdadeiro se o ficheiro existe e não está vazio.\n" +" -S FICHEIRO Verdadeiro se o ficheiro for um socket.\n" +" -t FD Verdadeiro se FD for aberto num terminal.\n" +" -u FICHEIRO Verdadeiro se o ficheiro for set-user-id.\n" +" -w FICHEIRO Verdadeiro se o ficheiro for gravável por si.\n" +" -x FICHEIRO Verdadeiro se o ficheiro for executável por si.\n" +" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua " +"propriedade.\n" +" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente " +"propriedade do seu grupo.\n" +" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a " +"última vez que foi lido.\n" +" \n" +" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo " +"que\n" +" o ficheiro2 (de acordo com a data " +"de modificação).\n" +" \n" +" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que " +"o ficheiro2.\n" +" \n" +" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação " +"rígida a file2.\n" +" \n" +" Operadores de cadeias:\n" +" \n" +" -z CADEIA Verdadeiro se a cadeia estiver vazia.\n" +" \n" +" -n CADEIA\n" +" CADEIA Verdadeiro se a cadeia não estiver vazia.\n" +" \n" +" CADEIA1 = CADEIA2\n" +" Verdadeiro se as cadeias são iguais.\n" +" CADEIA1 != CADEIA2\n" +" Verdadeiro se as cadeias não são iguais.\n" +" CADEIA1 < CADEIA2\n" +" Verdadeiro se CADEIA1 ficar antes de CADEIA2 " +"lexicamente.\n" +" CADEIA1 > CADEIA2\n" +" Verdadeiro se CADEIA1 ficar após CADEIA2 " +"lexicamente.\n" +" \n" +" Outros operadores:\n" +" \n" +" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está " +"activada.\n" +" -v VAR Verdadeiro se a variável de consola VAR estiver " +"definida.\n" +" -R VAR Verdadeiro se a variável de consola VAR estiver " +"definida e for um nome\n" +" referência.\n" +" ! EXPR Verdadeiro se EXPR for falso.\n" +" EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n" +" EXPR1 -o EXPR2 Verdadeiro se EXPR1 OU EXPR2 forem verdadeiros.\n" +" \n" +" arg1 OP arg2 Testes aritméticos. OP é um de -eq, -ne,\n" +"  -lt, -le, -gt, ou -ge.\n" +" \n" +" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, " +"não\n" +" igual, menor que, menor ou igual que, maior que ou maior ou igual que\n" +" ARG2.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR " +"for\n" +" avaliado como falso ou for indicado um argumento inválido." + +#: builtins.c:1337 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" This is a synonym for the \"test\" builtin, but the last argument must\n" +" be a literal `]', to match the opening `['." +msgstr "" +"Avalia uma expressão condicional.\n" +" \n" +" Este é um sinónimo para o interno \"test\", mas o último argumento tem\n" +" de ser um \"]\" literal, para fechar o \"[\" aberto." + +#: builtins.c:1346 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Mostrar tempos de processo.\n" +" \n" +" Imprime os tempos acumulados de utilizador e sistema para a consola e " +"todos\n" +" os seus processos-filho.\n" +" \n" +" Estado de saída:\n" +" Sempre com sucesso." + +#: builtins.c:1358 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Capturar sinais e outros eventos.\n" +" \n" +" Define e activa gestores a executar quando a consola recebe sinais ou\n" +" outras condições.\n" +" \n" +" ARG é um comando a ser lido e executado quando a consola recebe o(s)\n" +" sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n" +" for fornecido) ou \"-\", cada sinal especificado é reposto no seu " +"valor\n" +" original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n" +" pela consola e pelos comandos que chama.\n" +" \n" +" Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n" +" SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n" +" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de " +"consola\n" +" ou um script executado pelo . ou os internos terminam a execução. " +"SIGNAL_SPEC\n" +" de ERR significa executar ARG cada vez que uma falha do comando faça " +"com\n" +" que a consola sair quando a opção -e está activa.\n" +" \n" +" Se nenhum argumento for fornecido, trap imprime a lista de comandos \n" +" associados a cada sinal.\n" +" \n" +" Opções:\n" +" -l imprime uma lista de nomes de sinais e seus números " +"correspondentes\n" +" -p mostra os comandos trap associados a cada SIGNAL_SPEC\n" +" \n" +" Cada SIGNAL_SPEC é um nome de sinal em ou um número de " +"sinal.\n" +" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é " +"opcional.\n" +" Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma " +"opção inválida." + +#: builtins.c:1394 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Mostra informações sobre o tipo de comando.\n" +" \n" +" Para cada NOME, indica como seria interpretado se usado como um\n" +" nome de comando.\n" +" \n" +" Opções:\n" +" -a\tmostra todos os locais contendo um executável chamado NOME;\n" +" \t\tinclui aliás, internos e funções, se e só se a opção \"-p\"\n" +" \t\ttambém não for usada\n" +" -f\tsuprime a procura da função de consola\n" +" -P\tforça uma procura em PATH para cada NOME, mesmo que seja um\n" +" \t\taliás, interno ou função e devolve o nome do ficheiro em disco\n" +" \t\tque seria executado\n" +" -p\tdevolve o nome do ficheiro em disco que seria executado,\n" +" \t\tou nada se \"type -t NOME\" não devolver \"file\"\n" +" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", " +"\"function\"\n" +" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra " +"reservada\n" +" \t\tda consola, função de consola, interno da consola, ficheiro em\n" +" \t\tdisco, ou não encontrados, respectivamente\n" +" \n" +" Argumentos:\n" +" Nome do comando NOME a interpretar.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não " +"for." + +#: builtins.c:1425 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Modifica os limites de recursos da consola.\n" +" \n" +" Fornece controlo sobre os recursos disponíveis para consola e " +"processos\n" +" que cria, em sistemas que permitem esse controlo.\n" +" \n" +" Opções:\n" +" -S\tusa o limite de recursos \"soft\"\n" +" -H\tusa o limite de recursos \"hard\"\n" +" -a\ttodos os limites actuais são reportados\n" +" -b\to tamanho do buffer de socket\n" +" -c\to tamanho máximo dos ficheiros núcleo criados\n" +" -d\to tamanho máximo do segmento de dados de um processo\n" +" -e\ta prioridade máxima de agendamento (\"nice\")\n" +" -f\to tamanho máximo dos ficheiros escritos pela consola e seus " +"filhos\n" +" -i\to número máximo de sinais pendentes\n" +" -k\to número máximo de kqueues alocados para este processo\n" +" -l\to tamanho máximo que um processo pode bloquear na memória\n" +" -m\to tamanho máximo do conjunto residente\n" +" -n\to número máximo de descritores de ficheiros abertos\n" +" -p\to tamanho do buffer do pipe\n" +" -q\to número máximo de bytes nas filas de mensagens POSIX\n" +" -r\ta prioridade máxima de programação em tempo real\n" +" -s\to tamanho máximo da pilha\n" +" -t\ta quantidade máxima de tempo de CPU em segundos\n" +" -u\to número máximo de processos do utilizador\n" +" -v\to tamanho da memória virtual\n" +" -x\to número máximo de bloqueios de ficheiros\n" +" -P\to número máximo de pseudo-terminais\n" +" -T\to número máximo de threads\n" +" \n" +" Nem todas as opções estão disponíveis em todas as plataformas.\n" +" \n" +" Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n" +" valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n" +" olimite flexível actual, o limite rígido actual e nenhum limite, " +"respectivamente.\n" +" Caso contrário, é imprimido o valor actual do recurso especificado. Se\n" +" nenhuma opção for indicada, então -f é assumido.\n" +" \n" +" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em " +"segundos,\n" +" -p, que é em incrementos de 512 bytes e -u, que é um número de " +"processos\n" +" sem escala.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que seja indicada uma opção inválida ou " +"ocorra um erro." + +#: builtins.c:1475 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Mostrar ou definir a máscara do modo de ficheiro.\n" +" \n" +" Define a máscara do utilizador de criação de ficheiro para MODO. Se " +"MODO\n" +" for omitido, imprime o valor actual da máscara.\n" +" \n" +" Se MODO começa com um dígito, é interpretado como um número octal;\n" +" caso contrário, é uma cadeia de modo simbólico como a aceite por chmod" +"(1).\n" +" \n" +" Opções:\n" +" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado " +"como entrada\n" +" -S\ttorna a saída simbólica; caso contrário, a saída é um número " +"octal\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção " +"inválida." + +#: builtins.c:1495 +#, 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." +msgstr "" +"Aguarda a conclusão da tarefa e devolve o estado de saída.\n" +" \n" +" Espera por cada processo identificado por uma ID, que pode ser uma ID " +"de\n" +" processo ou uma especificação de tarefa e reporta o estado final. Se " +"não\n" +" for dada uma ID, aguarda por todos os processos-filho actualmente " +"activos e o\n" +" estado de saída é zero. Se ID for uma especificação de tarefa, espera " +"por\n" +" todos os processos no pipeline da tarefa.\n" +" \n" +" Se a opção -n for fornecida, espera que a próxima tarefa termine e\n" +" devolve seu estado de saída.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última ID; falha se a ID for inválido ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1519 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Aguarda a conclusão do processo e devolve o estado de saída.\n" +" \n" +" Espera por cada processo especificado por uma PID e reporta o estado " +"final.\n" +" Se PID não for dada, aguarda por todos os processos-filho actualmente " +"activos,\n" +" e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da última PID; falha se PID for inválido ou for " +"indicada\n" +" uma opção inválida." + +#: builtins.c:1534 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos para cada membro numa lista.\n" +" \n" +" O ciclo \"for\" executa uma seqüência de comandos para cada membro " +"numa\n" +" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@" +"\" \" é\n" +" assumido. Para cada elemento em PALAVRAS, NOME está definido para " +"esseelemento,\n" +" e os COMANDOS são executados.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1548 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Ciclo for aritmético.\n" +" \n" +" Equivalente a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMANDOS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for " +"omitida\n" +" comporta-se como se fosse avaliada como 1.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1566 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Selecciona palavras de uma lista e executa comandos.\n" +" \n" +" As PALAVRAS são expandidas, gerando uma lista de palavras. O\n" +" conjunto de palavras expandidas é imprimido no erro padrão, cada\n" +" um precedido por um número. Se \"in PALAVRAS\" não estiver presente,\n" +" \" in \"$@\" \" é assumido. O prompt PS3 é então exibido e é lida uma\n" +" linha da entrada padrão. Se a linha for constituída pelo número\n" +" correspondente a uma das palavras mostradas, NOME é definido para\n" +" essa palavra. Se a linha estiver vazia, PALAVRAS e o prompt são\n" +" mostrados de novo. Se for lido EOF, o comando é concluído. Qualquer\n" +" outro valor lido faz com que NOME seja definido como nulo. A linha\n" +" lida é gravada na variável RESPOSTA. COMANDOS são executados após cada\n" +" selecção até que um comando de interrupção seja executado.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1587 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Reporta o tempo consumido pela execução do pipeline.\n" +" \n" +" Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n" +" utilizador e tempo de CPU do sistema na execução de PIPELINE quando " +"terminar.\n" +" \n" +" Opções:\n" +" -p\timprime o resumo do tempo no formato portátil Posix\n" +" \n" +" O valor da variável FORMATOTEMPO é usado como formato de saída.\n" +" \n" +" Estado de saída:\n" +" O estado devolvido é o estado de PIPELINE." + +#: builtins.c:1604 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executea comandos baseado em comparação de padrões.\n" +" \n" +" Executar selectivamente COMANDOS baseado na comparação entre PALAVRA e\n" +" PADRÃO. \"|\" é usado para separar múltiplos padrões.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1616 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos com base em condicional.\n" +" \n" +" A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n" +" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif " +"COMANDOS\"\n" +" é executado por sua vez e se o estado de saída for zero, a " +"correspondente\n" +" lista \"then COMANDOS\" é executada e o comando if é concluído. De " +"outra forma,\n" +" a lista \"else COMANDOS\" é executada, se presente. O estado de saída " +"da\n" +" construção inteira é o estado de saída do último comando executado, ou " +"zero\n" +" se nenhuma condição for verdadeira.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1633 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"while COMANDOS\" tenha um estado de saída zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1645 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Executa comandos enquanto o teste não tiver sucesso.\n" +" \n" +" Expande e executa COMANDOS enquanto o comando final no ciclo\n" +" \"until COMANDOS\" tenha um estado de saída não zero.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1657 +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Cria um co-processo chamado NOME.\n" +" \n" +" Executa COMANDO assincronamente, com a saída e a entrada padrão " +"ligadas\n" +" via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n" +" variável de matriz NOME na consola em execução.\n" +" O NOME predefinido é \"COPROC\".\n" +" \n" +" Estado de saída:\n" +" O comando coproc devolve um estado de saída 0." + +#: builtins.c:1671 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Define uma função de consola.\n" +" \n" +" Cria uma função de consola chamada NOME. Quando chamado como comando\n" +" simples, NOME executa COMANDOs no contexto da consola. Quando NOME é\n" +" invoked, os argumentos são passados à função como $1...$n e o nome da\n" +" função está em $FUNCNAME.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que NOME seja só de leitura." + +#: builtins.c:1685 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Agrupa comandos como uma unidade.\n" +" \n" +" Executa um conjunto de comandos num grupo. Esta é uma maneira de\n" +" redireccionar um conjunto completo de comandos.\n" +" \n" +" Estado de saída:\n" +" Devolve o estado do último comando executado." + +#: builtins.c:1697 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Retoma a tarefa em primeiro plano.\n" +" \n" +" Equivalente ao argumento JOB_SPEC para o comando \"fg\". Retoma uma\n" +" tarefa parada ou em 2º plano. JOB_SPEC pode especificar um nome de\n" +" tarefa ou um número de tarefa. Pôr \"&\" a seguir a JOB_SPEC coloca a\n" +" tarefa em 2º plano, como se a especificação da tarefa tivesse sido\n" +" fornecida como um argumento para \"bg\".\n" +" \n" +" Estado de saída:\n" +" Devolve o estado da tarefa retomada." + +#: builtins.c:1712 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to \"let EXPRESSION\".\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"Avalia uma expressão aritmética.\n" +" \n" +" A expressão EXPRESSÃO é avaliada de acordo com as regras aritméticas.\n" +" Equivalente a \"let EXPRESSÃO\".\n" +" \n" +" Estado de saída:\n" +" Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0." + +#: builtins.c:1724 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Executa o comando condicional.\n" +" \n" +" Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n" +" condicional EXPRESSÃO. As expressões são compostas pelas mesmas " +"primárias\n" +" usadas pelo interno \"test\" e pode ser combinado com os seguintes " +"operadores:\n" +" \n" +" ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n" +" ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n" +" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão " +"falso\n" +" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; " +"senão falso\n" +" \n" +" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do " +"operador\n" +" é usada como padrão e é feita a comparação de padrões. Quando o " +"operador \"= ~\"\n" +" é usado, a cadeia à direita do operador é comparada como expressão " +"regular.\n" +" \n" +" Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n" +" determinar o valor da expressão." + +#: builtins.c:1750 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Nomes e uso comuns de variáveis de consola.\n" +" \n" +" BASH_VERSION\tInformações de versão para esta bash.\n" +" CDPATH\tUma lista de pastas separadas por \":\" para procurar\n" +" \t\tpor pastas dadas como argumentos a \"cd\".\n" +" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes " +"de\n" +" ficheiro a ignorar pela expansão do nome do caminho.\n" +" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é " +"armazenado.\n" +" HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n" +" HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n" +" \t\texecução pode aceder.\n" +" HOME\tNome completo do caminho para a pasta de início de sessão.\n" +" HOSTNAME\tNome do anfitrião actual.\n" +" HOSTTYPE\tTipo de CPU em que esta versão do Bash está em execução.\n" +" IGNOREEOF\tControla a acção da consola ao receber um carácter EOF\n" +" \t\tcomo única entrada. Se definido, então o seu valor é o\n" +" \t\tnúmero de caracteres EOF que podem ser vistos numa linha\n" +" \t\tvazia antes que a consola saia (predefinição 10).\n" +" \t\tQuando não definido, EOF significa o fim da entrada.\n" +" MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n" +" MAILCHECK\tFrequência, em segundos, com que a bash procura novo " +"correio.\n" +" MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n" +" \t\tnovas mensagens.\n" +" OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n" +" PATH\tLista de pastas separadas por \":\" a procurar quando\n" +" \t\tprocura comandos.\n" +" PROMPT_COMMAND\tComando a executar antes da impressão de cada\n" +" \t\tprompt primário.\n" +" PS1\t\tCadeia do prompt primário.\n" +" PS2\t\tCadeia do prompt secundário\n" +" PWD\t\tCaminho completo da pasta actual.\n" +" SHELLOPTS\tLista separada por \":\" de opções da consola activadas.\n" +" TERM\tNome do tipo de terminal actual.\n" +" TIMEFORMAT\tFormato de saída para estatísticas de tempo mostradas\n" +" pela palavra reservada \"time\".\n" +" auto_resume\tNão-nulo significa que uma palavra de comando numa linha\n" +" \t\tpor si só é procurada primeiro na lista de tarefas actualmente\n" +" \t\tparadas. Se encontrado, a tarefa passa a primeiro plano. Um\n" +" \t\tvalor \"exact\" significa que a palavra de comando deve ser\n" +" \t\texactamente igual a um comando na lista de tarefas paradas.\n" +" \t\t\"substring\" significa que a palavra de comando deve ser igual\n" +" \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n" +" \t\to comando deve ser um prefixo de uma tarefa interrompida.\n" +" histchars\tCaracteres que controlam a expansão do histórico e " +"substituições\n" +" \t\trápidas. O primeiro carácter é o carácter de subtituição do\n" +" \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n" +" \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n" +" \t\tnormalmente \"#\".\n" +" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir " +"quais\n" +" \t\tos comandos que devem ser gravados na lista de histórico.\n" + +#: builtins.c:1807 +msgid "" +"Add directories to stack.\n" +" \n" +" Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Adiciona pastas à pilha.\n" +" \n" +" Adiciona uma pasta ao topo da pilha de pastas, ou roda a pilha\n" +" tornando o novo topo da pilha a actual pasta de trabalho.\n" +" Sem argumentos, troca as duas pastas de topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao adicionar\n" +" pastas à pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda esquerda da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" -N\tRoda a pilha de modo a que a N-ésima pasta (contando\n" +" \t\tda direita da lista mostrada por \"dirs\", começando por\n" +" \t\tzero) fique no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de pastas no topo, tornando-a a\n" +" \t\tnova pasta de trabalho actual.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a\n" +" troca de pastas falhe." + +#: builtins.c:1841 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Remove pastas da pilha.\n" +" \n" +" Remove entradas da pilha de pastas. Sem argumentos, remove\n" +" a pasta do topo da pilha e muda para a nova pasta superior.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de pasta ao remover\n" +" \t\tpastas da pilha, para que só a pilha seja manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd +0\"\n" +" \t\tremove a primeira pasta, \"popd +1\" a segunda.\n" +" \n" +" -N\tRemove a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\", começando por zero. E.g.: \"popd -0\"\n" +" \t\tremove a última pasta, \"popd -1\" a penúltima.\n" +" \n" +" O interno \"dirs\" mostra a pilha de pastas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique um argumento inválido ou a troca\n" +" de pastas falhe." + +#: builtins.c:1871 +msgid "" +"Display directory stack.\n" +" \n" +" Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostra a pilha de pastas.\n" +" \n" +" Mostra a lista de pastas actualmente lembradas. As pastas\n" +" entram na lista com o comando \"pushd\"; pode recuar na\n" +" lista com o comando \"popd\".\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de pastas eliminando todos os elementos\n" +" -l\tnão imprime versões prefixadas com til de pastas relativas\n" +" \t\tà sua pasta inicial\n" +" -p\timprime a pilha de pastas com uma entrada por linha\n" +" -v\timprime a pilha de pastas com uma entrada por linha prefixada\n" +" \t\tcom a sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando da esquerda da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando da direita da lista\n" +" \t\tmostrada por \"dirs\" quando chamado sem opções, começando\n" +" \t\tpor zero.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro" + +#: builtins.c:1902 +#, fuzzy +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Define e cancela opções de consola.\n" +" \n" +" Altera a definição de cada opção de consola OPTNOME. Sem qualquer\n" +" argumento, lista todas as opções de consola com indicação de definição\n" +" ou não de estado.\n" +" \n" +" Opções:\n" +" -o\trestringe OPTNOMEs para os definidos para uso com \"set -o\"\n" +" -p\timprime cada opção de consola com indicação do seu estado\n" +" -q\tsuprime a saída\n" +" -s\tactivar (definir) cada OPTNOME\n" +" -u\tdesactivar (limpar) cada OPTNOME\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n" +" inválida ou OPTNOME esteja desactivada." + +#: builtins.c:1923 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n" +" \n" +" Opções:\n" +" -v var\tatribui a saída à variável de consola VAR em vez de\n" +" \t\tmostrar na saída padrão\n" +" \n" +" FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n" +" caracteres simples, que são simplesmente copiados para a saída padrão;\n" +" sequências de escape, que são convertidas e copiadas para a saída " +"padrão; e\n" +" especificações de formato, cada uma das quais causa a impressão do " +"argumento\n" +" sucessivo seguinte.\n" +" \n" +" Além das especificações de formato padrão descritas em printf (1),\n" +" printf interpreta:\n" +" \n" +" %b\texpande sequências de escape para o argumento correspondente\n" +" %q\tcita o argumento de forma a ser reutilizado como entrada de " +"consola\n" +" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do " +"FMT\n" +" \t\tcomo formato para strftime(3)\n" +" \n" +" O formato é reutilizado conforme necessário para consumir todos os " +"argumentos.\n" +" E se há menos argumentos do que o formato requer, especificações de " +"formato\n" +" extra comportam-se como um valor zero ou uma cadeia nula, conforme " +"apropriado,\n" +" tenha sido fornecido.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro de\n" +" escrita ou atribuição." + +#: builtins.c:1957 +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" +" \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." +msgstr "" +"Especifica como os argumentos devem ser concluídos por Readline.\n" +" \n" +" Para cada NOME, especifica como os argumentos devem ser concluídos. Se " +"não \n" +" fornecer opções, as especificações de conclusão existentes são " +"imprimidas\n" +" de forma a permitir que sejam reutilizados como entrada.\n" +" \n" +" Opções:\n" +" -p\timprime especificações de conclusão existentes em formato " +"reutilizável\n" +" -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n" +" \t\tforneceu NOMEs, todas as especificações de conclusão\n" +" -D\taplicar as conclusões e acções como predefinição para comandos\n" +" \t\tsem qualquer especificação de conclusão definida\n" +" -E\taplicar as conclusões e acções a comandos -- \"vazios\"\n" +" \t\tconclusão tentada numa linha em branco\n" +" \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. A opção -D toma\n" +" precedência sobre -E." + +#: builtins.c:1985 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Mostrar possíveis conclusões, dependendo das opções.\n" +" \n" +" Destinado a ser usado de dentro de uma função de consola gerando\n" +" possíveis conclusões. Se o argumento PALAVRA opcional for fornecido,\n" +" são geradas comparações com PALAVRA.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um " +"erro." + +#: builtins.c:2000 +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." +msgstr "" +"Modifica ou mostra as opções de conclusão.\n" +" \n" +" Modifica as opções de conclusão para cada NOME, ou, se não fornecer " +"NOME,\n" +" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, " +"imprime\n" +" as opções de conclusão para cada NOME ou a especificação de conclusão " +"actual.\n" +" \n" +" Opções:\n" +" \t-o opção\tDefinir opção de conclusão OPÇÃO para cada NOME\n" +" \t-D\tAlterar opções para a conclusão do comando \"predefinido\"\n" +" \t-E\tAlterar opções para a conclusão do comando \"vazio\"\n" +" \n" +" Usar \"+ o\" em vez de \"-o\" desliga a opção especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOME refere-se a um comando para o qual uma especificação de " +"conclusão\n" +" deve ter sido anteriormente definida usando o interno \"complete\". Se " +"não\n" +" forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n" +" gerar conclusões e as opções para esse gerador de conclusões " +"actualmente\n" +" em execução são modificadas.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida ou NOME não " +"tenha\n" +" uma especificação de conclusão definida." + +#: builtins.c:2030 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Lê linhas da entrada padrão para uma variável de matriz indexada.\n" +" \n" +" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, " +"ou\n" +" do descritor de ficheiro FD se a opção -u for fornecida. A variável " +"MAPFILE\n" +" é a MATRIZ predefinida.\n" +" \n" +" Opções:\n" +" -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n" +" -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n" +" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição " +"é 0\n" +" -s total\tDescarta as primeiras TOTAL linhas lidas\n" +" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova " +"linha)\n" +" -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n" +" -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n" +" -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n" +" \t\t\tRETORNO\n" +" \n" +" Argumentos:\n" +" ARRAY\tNome de variável de matriz a usar para dados de ficheiro\n" +" \n" +" Se -C for fornecido sem -c, a quantidade predefinida é 5000. Quando\n" +" RETORNO é avaliado, é fornecido o índice do elemento seguinte da\n" +" matriz a ser atribuído e a linha a ser atribuída a esse elemento\n" +" como argumentos adicionais.\n" +" \n" +" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ " +"antes\n" +" de lhe fazer atribuições.\n" +" \n" +" Estado de saída:\n" +" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja " +"só\n" +" de leitura ou não seja uma matriz indexada." + +#: builtins.c:2066 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Lê linhas de um ficheiro para uma variável de matriz.\n" +" \n" +" Um sinónimo para \"mapfile\"." diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index fd7eae62d..a2a0436cf 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index a2b7bb0c0..2457fb957 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -2,138 +2,138 @@ # Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Halley Pacheco de Oliveira , 2002. -# Rafael Fontenelle , 2015, 2016. -# +# Rafael Fontenelle , 2015, 2016. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2016-02-12 09:33-0200\n" -"Last-Translator: Rafael Fontenelle \n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-10-04 06:47-0200\n" +"Last-Translator: Rafael Fontenelle \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" -"X-Generator: Poedit 1.8.7\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "subscrito de array incorreto" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: removendo o atributo nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter array indexado para associativo" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chave de array associativo inválida" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossível localizar mapa de teclas para comando" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "sem `%c' de fechamento em %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s faltando separador dois-pontos" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansão de chaves: impossível alocar memória para %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "expansão de chaves: falha ao alocar memória para %d elementos" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "expansão de chaves: falha ao alocar memória para `%s'" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de apelido (alias) inválido" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "edição de linha não habilitada" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de mapa de teclas inválido" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossível ler: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': impossível desassociar (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de função desconhecida" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s não está associada a qualquer tecla.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s pode ser chamado via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': impossível desassociar (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "número de loops" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo apenas em um loop de `for', `while' ou `until'" @@ -147,165 +147,164 @@ msgstr "" " \n" " Sem EXPR, retorna " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "número excessivo de argumentos" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "\t\tencontrado no diretório atual." +msgstr "diretório nulo" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD não definida" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "linha %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: requer argumento numérico" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': não é um identificador válido" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "número do hexa inválido" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificação de sinal inválida" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" "`%s': não é um identificador de processo (pid) nem é uma especificação de " "trabalho válida" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: a variável permite somente leitura" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora dos limites" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argumento" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s fora dos limites" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: trabalho não existe" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: nenhum controle de trabalho" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "nenhum controle de trabalho" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: restrição" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "restrição" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é um comando interno do shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obter o diretório atual: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de trabalho ambígua" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "ajuda não disponível nesta versão" @@ -314,69 +313,69 @@ msgstr "ajuda não disponível nesta versão" msgid "%s: invalid action name" msgstr "%s: nome de ação inválido" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: nenhuma especificação de completação" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "aviso: a opção -F pode não funcionar como esperado" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "aviso: a opção -C pode não funcionar como esperado" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "não se está executando atualmente função de completação" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "somente pode ser usado em uma função" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: variável de referência não pode ser um array" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: referência a si próprio da variável nameref não é permitido" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s referência circular de nome" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: nome de variável inválido para referência de nome" +msgstr "\"%s\": nome de variável inválido para referência de nome" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "impossível usar `-f' para criar funções" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: função somente para leitura" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: atribuição de array composto com aspas está obsoleto" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossível destruir variáveis de array desta maneira" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter array associativo para indexado" @@ -410,68 +409,68 @@ msgstr "%s: não foi carregado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossível excluir: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: é um diretório" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: não é um arquivo irregular" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: arquivo é muito grande" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o arquivo binário" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossível executar: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "sair\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "não é um shell de login: use `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Há trabalhos parados.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Há trabalhos em execução.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "nenhum comando encontrado" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "especificação do histórico" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossível abrir arquivo temporário: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "atual" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "o trabalho %d iniciou sem controle de trabalho" @@ -486,28 +485,27 @@ msgstr "%s: opção ilegal -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção requer um argumento: -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashing está desabilitado" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabela de hash está vazia\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "número\tcomando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Comandos shell correspondendo à palavra-chave `" msgstr[1] "Comandos shell correspondendo às palavras-chave `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +513,12 @@ msgstr "" "nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " "ou `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -542,20 +540,21 @@ msgstr "" "Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "impossível usar mais de um dentre -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "posição no histórico" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s argumento inválido" +msgstr "%s: marca de tempo inválida" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansão do histórico falhou" @@ -569,16 +568,16 @@ msgstr "%s: inlib falhou" msgid "no other options allowed with `-x'" msgstr "nenhuma outra opção permitida com `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "esperava uma expressão" @@ -587,69 +586,69 @@ msgstr "esperava uma expressão" msgid "%s: not an indexed array" msgstr "%s: não é um array indexado" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificação de descritor de arquivo inválida" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de arquivo inválido: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: número de linhas inválido" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem do array inválido" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantidade de chamadas inválida" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "nome de variável array vazio" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "requer suporte a variável de array" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': faltando caractere de formato" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificação de formato de tempo inválida" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': caractere de formato inválido" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "problema ao analisar formato: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "faltando dígito hexa para \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "faltando dígito unicode para \\%c" @@ -663,19 +662,19 @@ msgstr "nenhum outro diretório" msgid "%s: invalid argument" msgstr "%s argumento inválido" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "pilha de diretórios está vazia" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "índice de pilha de diretórios" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -717,7 +716,7 @@ msgstr "" " -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" " \t\tmostrada por `dirs' chamado sem opções, iniciando com zero." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -764,7 +763,7 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretórios." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -802,48 +801,48 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretório." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificação de tempo limite inválida" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "possível retornar (`return') apenas de uma função ou script carregado (com " "`source')" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "" "impossível simultaneamente remover definição de uma função e uma variável" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível remover definição" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível remover definição: %s somente-leitura" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: não é uma variável array" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: não é uma função" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: impossível exportar" @@ -852,21 +851,21 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "número de shift" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" "impossível simultaneamente definir e remover definição de opções do shell" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção de shell inválido" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "requer argumento arquivo" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: arquivo não encontrado" @@ -879,61 +878,61 @@ msgstr "impossível suspender" msgid "cannot suspend a login shell" msgstr "impossível suspender um shell de login." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s está apelidada para `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é uma palavra-chave do shell\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s é uma função\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s é um comando interno especial do shell\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é um comando interno do shell\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está na tabela hash (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumento limite inválido" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': comando incorreto" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -952,207 +951,212 @@ msgstr "`%c': operador de modo simbólico inválido" msgid "`%c': invalid symbolic mode character" msgstr "`%c': caractere de modo simbólico inválido" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " linha " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "último comando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "tipo de comando incorreto" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "conector incorreto" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "desvio incorreto" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variável não associada" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "\atempo limite de espera excedido aguardando entrada: fim automático da " "sessão\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossível redirecionar a entrada padrão para /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': caractere de formato inválido" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "erro de `pipe'" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador incorreto" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar o arquivo binário: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': é um comando interno especial" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "excedido o nível de recursividade da expressão" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "esvaziamento de pilha de recursão" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição para algo que não é uma variável" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "erro de sintaxe na expressão" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "erro de programação: token incorreto passado para expassign()" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "esperava `:' para expressão condicional" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "erro de sintaxe: esperava operando" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (token de erro é \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valor muito grande para esta base de numeração" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a " "partir do fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" @@ -1162,156 +1166,161 @@ msgstr "" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: `pipe' de pgrp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em " "execução %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "excluindo trabalho parado %d com grupo de processo %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) em the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Concluído" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Parado(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Executando" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Concluído(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Fim da execução com status %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(imagem do núcleo gravada)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "`setpgid' filho (%ld para %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: o pid %ld não é um processo filho deste shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Sem registro do processo %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: trabalho %d está parado" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabalho %d já está em plano de fundo" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s, linha %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (imagem do núcleo gravada)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: disciplina da linha" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina da linha" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo do processo do terminal (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "nenhum controle de trabalho neste shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhou: %s\n" -#: lib/malloc/malloc.c:312 -#, fuzzy, c-format +#: lib/malloc/malloc.c:322 +#, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" @@ -1319,40 +1328,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção remendada\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:801 -#, fuzzy +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: bloco socado em lista livre" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberado" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: tamanhos de porções do início e do fim são diferentes" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanhos de porções do início e do fim são diferentes" @@ -1394,22 +1402,22 @@ msgstr "%s: especificação de caminho de rede inválida" msgid "network operations not supported" msgstr "sem suporte a operações de rede" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossível alterar locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossível alterar locale (%s): %s" @@ -1427,151 +1435,152 @@ msgstr "Você tem mensagem nova de correio em $_" msgid "The mail in %s has been read\n" msgstr "As mensagens de correio em %s foram lidas\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requer expressão aritmética" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: `;' inesperado" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo da instrução incorreto %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "excedido o número máximo de here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "encontrado EOF inesperado enquanto procurava por `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "erro de sintaxe na expressão condicional" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token inesperado `%s', esperava`)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "esperava `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para operador unário condicional" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token inesperado `%s', esperava operador binário condicional" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "esperava operador binário condicional" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para operador binário condicional" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token inesperado `%c' em comando condicional" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token inesperado `%s' em comando condicional" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "token inesperado %d em comando condicional" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe próximo ao token inesperado `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe próximo a `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair do shell.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: função `%s' não encontrada" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: possível loop de nova tentativa" # COMPSPEC é variável no código fonte, manter sem tradução para português. #: pcomplib.c:182 @@ -1579,109 +1588,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC NULO" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector incorreto `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descritor de arquivo inválido" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ponteiro de arquivo NULO" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': caractere de formato inválido" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "descritor de arquivo fora dos limites" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecionamento ambíguo" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever arquivo existente" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrição: impossível redirecionar saída" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar arquivo temporário para here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirecionamento: impossível duplicar fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "impossível localizar /tmp, por favor crie!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp deve ser um nome de diretório válido" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid para %d: uid efetivo %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid para %d: gid efetivo %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "possível iniciar o depurador; modo de depuração desabilitado" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: É um diretório" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Eu não tenho nome!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1690,52 +1703,52 @@ msgstr "" "Utilização:\t%s [opção-longa-GNU] [opção] ...\n" "\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "opções-longas-GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opções do shell:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opção\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Digite `%s -c help' para mais informações sobre os comandos internos do " "shell.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uso o comando `bashbug' para relatar erros.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "página do bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral sobre uso de software GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" @@ -1909,21 +1922,21 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituição incorreta: sem `%s' de fechamento em %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir uma lista a um membro de um array" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "impossível criar `pipe' para a substituição do processo" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "impossível criar um processo filho para a substituição do processo" @@ -1942,73 +1955,77 @@ msgstr "impossível abrir `pipe' %s para escrita" msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "substituição incorreta: sem \"`\" de fechamento em %s" +msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "impossível criar um `pipe' para substituição do comando" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "impossível criar um processo filho para substituição do comando" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: impossível duplicar o `pipe' como descritor de arquivo " "(fd) 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nome de variável inválido para referência de nome" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substituição incorreta" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indireta inválida" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parâmetro nulo ou não inicializado" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não inicializado" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de substring < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituição incorreta" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "versões futuras do shell vão forçar avaliação como um substituto aritmético" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituição incorreta: sem \"`\" de fechamento em %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "sem correspondência: %s" @@ -2031,30 +2048,30 @@ msgstr "esperava `)'" msgid "`)' expected, found %s" msgstr "esperava `)', encontrado %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: esperava operador unário" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: esperava operador binário" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "faltando `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2062,88 +2079,87 @@ msgstr "" "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%" "s) para mim mesmo" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal incorreto %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "nível do shell (%d) muito grande, redefinindo para 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nenhum contexto de função no atual escopo" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: a variável pode não ter um valor atribuído" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: nome de variável inválido para referência de nome" +msgstr "%s: atribuindo inteiro para referência de nome" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nenhum contexto de função no escopo atual" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s possui a string de exportação nula" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractere inválido na %d na exportstr para %s" # exportstr é uma variável no código fonte do bash (arquivo variiables.c) -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "Sem `=' na exportstr para %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nenhum contexto em no global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como ARQUIVO" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora dos limites" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright (C) 2015 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2166,22 +2182,22 @@ msgstr "Este é um software livre; você é livre para alterar e redistribuí-lo msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Há NENHUMA GARANTIA, na extensão permitida pela lei." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossível alocar %lu bytes" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossível alocar %lu bytes" @@ -2309,9 +2325,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [ESPEC-JOB ...] ou jobs -x COMANDO [ARGS]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" +msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]" #: builtins.c:134 msgid "" @@ -2394,7 +2409,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODO]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ID ...]" #: builtins.c:181 @@ -2518,9 +2534,10 @@ msgstr "" "CHAMADA] [-c QUANTIDADE] [ARRAY]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C CHAMADA] [-c " "QUANTIDADE] [ARRAY]" @@ -2956,6 +2973,7 @@ msgstr "" # help declare #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2974,11 +2992,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3031,9 +3049,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n" " ocorrer um erro de atribuição de variável." -# help typeset #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3041,7 +3057,7 @@ msgid "" msgstr "" "Define valores e atributos de variável.\n" " \n" -" Obsoleto. Veja `help declare'." +" Um sinônimo para `declare'. Veja `help declare'." # help local #: builtins.c:538 @@ -3535,6 +3551,7 @@ msgstr "" # help help #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3549,7 +3566,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3574,7 +3591,6 @@ msgstr "" " Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n" " inválida seja fornecida." -# help history #: builtins.c:836 #, fuzzy msgid "" @@ -3585,7 +3601,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3621,10 +3638,9 @@ msgstr "" " -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" " \t\t\t\thistórico\n" " -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" -" \t\t\t\tarquivo de histórico\n" +" \t\t\t\tarquivo de histórico e anexa-os à lista de histórico\n" " -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" -" -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" -" \t\t\t\tanexa-os à lista de histórico \n" +" -w\t\t\tescreve o histórico atual para o arquivo de histórico\n" " -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" " \t\t\t\tresultado sem armazená-lo na lista de histórico\n" " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" @@ -3643,7 +3659,7 @@ msgstr "" " ocorra um erro." # help jobs -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3689,7 +3705,7 @@ msgstr "" " ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO." # help disown -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3721,8 +3737,7 @@ msgstr "" " sejam fornecidos." # help kill -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3756,6 +3771,7 @@ msgstr "" " -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" " \t\t\t\toutros argumentos, presume-se estes sejam números de\n" " \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +" -L\t\t\tsinônimo de -l\n" " \n" " `Kill' é um comando interno do shell por duas razões: ele permite\n" " IDs de trabalho serem usados ao invés de IDs de processo e permite\n" @@ -3767,7 +3783,7 @@ msgstr "" " ocorra um erro." # help let -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3853,7 +3869,8 @@ msgstr "" " let retorna 0." # help read -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3874,7 +3891,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3960,7 +3977,7 @@ msgstr "" " arquivo inválido seja fornecido como argumento para -u." # help return -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3982,8 +3999,7 @@ msgstr "" " script." # help set -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4146,7 +4162,8 @@ msgstr "" " -P Se definida, não resolve links simbólicos ao sair de comandos, " "tais\n" " como `cd' (que altera o diretório atual).\n" -" -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções " +"do shell.\n" " -- Atribui quaisquer argumentos restantes aos parâmetros " "posicionais.\n" " Se não houver argumentos restantes, os parâmetros posicionais são\n" @@ -4168,7 +4185,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida seja fornecida." # help unset -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4209,7 +4226,7 @@ msgstr "" " um NOME seja somente-leitura." # help export -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4246,7 +4263,7 @@ msgstr "" " NOME seja inválido." # help readonly -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4286,7 +4303,7 @@ msgstr "" " NOME seja inválido." # help shift -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4306,7 +4323,7 @@ msgstr "" " Retorna sucesso, a menos que N seja negativo ou maior que $#." # help source -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4331,7 +4348,7 @@ msgstr "" " ARQUIVO não puder ser lido." # help suspend -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4357,7 +4374,7 @@ msgstr "" " ou ocorra um erro." # help test -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4527,7 +4544,7 @@ msgstr "" " avaliada como falsa ou um argumento inválido for informado." # help [ -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4540,7 +4557,7 @@ msgstr "" " argumento deve ser um `]' literal, para corresponder ao `[' que abriu." # help times -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4560,7 +4577,7 @@ msgstr "" " Sempre com sucesso." # help trap -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4641,7 +4658,7 @@ msgstr "" " uma opção inválida seja fornecida." # help type -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4698,7 +4715,7 @@ msgstr "" " deles não for encontrado." # help ulimit -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4793,7 +4810,7 @@ msgstr "" " ocorra um erro." # help umask -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4829,7 +4846,8 @@ msgstr "" " inválida seja fornecida." # help wait -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4837,13 +4855,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4865,7 +4885,7 @@ msgstr "" " inválida for fornecida." # help wait -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4891,7 +4911,7 @@ msgstr "" " inválida for fornecida." # help for -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4915,7 +4935,7 @@ msgstr "" " Retorna o status do último comando executado." # help for (( (?) -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4946,7 +4966,7 @@ msgstr "" " Retorna o status do último comando executado." # help select -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4984,7 +5004,7 @@ msgstr "" " Retorna o status do último comando executado." # help time -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5014,7 +5034,7 @@ msgstr "" " O status de retorno é o status retornado por LINHA-COMANDOS." # help case -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5033,7 +5053,7 @@ msgstr "" " Retorna o status do último comando executado." # help if -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5068,7 +5088,7 @@ msgstr "" " Retorna o status do último comando executado." # help while -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5087,7 +5107,7 @@ msgstr "" " Retorna o status do último comando executado." # help until -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5106,9 +5126,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -# help coproc -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5128,10 +5146,10 @@ msgstr "" " no shell em execução. O NOME padrão é \"COPROC\".\n" " \n" " Status de saída:\n" -" Retorna o status de saída de COMANDO." +" O comando coproc retorna um status de saída de 0." # help function -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5155,7 +5173,7 @@ msgstr "" " Retorna sucesso, a menos que NOME seja somente-leitura." # help -m { -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5173,7 +5191,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5199,7 +5217,7 @@ msgstr "" " Retorna o status de um trabalho resumido." # help '((' -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5218,7 +5236,7 @@ msgstr "" " Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." # help '[' -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5271,7 +5289,7 @@ msgstr "" " 0 ou 1 dependendo do valor de EXPRESSÃO." # help variables -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5387,7 +5405,7 @@ msgstr "" " \t\t\t\thistórico.\n" # help pushd -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5447,7 +5465,7 @@ msgstr "" " a alteração de diretório falhar." # help popd -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5498,7 +5516,7 @@ msgstr "" " a alteração de diretório falhar." # help dirs -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5552,14 +5570,14 @@ msgstr "" " ocorrer um erro." # help shopt -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5590,7 +5608,7 @@ msgstr "" " opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." # help printf -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5660,7 +5678,7 @@ msgstr "" " ocorra um erro de escrita ou atribuição." # help complete -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5712,7 +5730,7 @@ msgstr "" " ocorra um erro." # help compgen -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5735,7 +5753,7 @@ msgstr "" " ocorra um erro." # help compopt -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5793,7 +5811,7 @@ msgstr "" " NOME não tem uma especificação de completação definida." # help mapfile -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5876,7 +5894,7 @@ msgstr "" " somente leitura ou não for um array indexado." # help readarray -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5886,6 +5904,9 @@ msgstr "" " \n" " Um sinônimo para `mapfile'." +#~ msgid "Copyright (C) 2015 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2015 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." #~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." @@ -5900,10 +5921,362 @@ msgstr "" #~ msgid "false" #~ msgstr "false" +#~ msgid "disown [-h] [-ar] [jobspec ...]" +#~ msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" + # não traduzir, este é um comando #~ msgid "times" #~ msgstr "times" +# help typeset +#~ msgid "" +#~ "Set variable values and attributes.\n" +#~ " \n" +#~ " Obsolete. See `help declare'." +#~ msgstr "" +#~ "Define valores e atributos de variável.\n" +#~ " \n" +#~ " Obsoleto. Veja `help declare'." + +# help history +#~ msgid "" +#~ "Display or manipulate the history list.\n" +#~ " \n" +#~ " Display the history list with line numbers, prefixing each modified\n" +#~ " entry with a `*'. An argument of N lists only the last N entries.\n" +#~ " \n" +#~ " Options:\n" +#~ " -c\tclear the history list by deleting all of the entries\n" +#~ " -d offset\tdelete the history entry at offset OFFSET.\n" +#~ " \n" +#~ " -a\tappend history lines from this session to the history file\n" +#~ " -n\tread all history lines not already read from the history file\n" +#~ " -r\tread the history file and append the contents to the history\n" +#~ " \t\tlist\n" +#~ " -w\twrite the current history to the history file\n" +#~ " \t\tand append them to the history list\n" +#~ " \n" +#~ " -p\tperform history expansion on each ARG and display the result\n" +#~ " \t\twithout storing it in the history list\n" +#~ " -s\tappend the ARGs to the history list as a single entry\n" +#~ " \n" +#~ " If FILENAME is given, it is used as the history file. Otherwise,\n" +#~ " if HISTFILE has a value, that is used, else ~/.bash_history.\n" +#~ " \n" +#~ " If the HISTTIMEFORMAT variable is set and not null, its value is " +#~ "used\n" +#~ " as a format string for strftime(3) to print the time stamp " +#~ "associated\n" +#~ " with each displayed history entry. No time stamps are printed " +#~ "otherwise.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Exibe ou manipula a lista de histórico.\n" +#~ " \n" +#~ " Exibe a lista de histórico com números de linhas, prefixando cada\n" +#~ " entrada modificada com um `*'. Um argumento de N lista apenas as\n" +#~ " últimas N entradas.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +#~ " -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n" +#~ " -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" +#~ " \t\t\t\thistórico\n" +#~ " -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" +#~ " \t\t\t\tarquivo de histórico\n" +#~ " -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +#~ " -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" +#~ " \t\t\t\tanexa-os à lista de histórico \n" +#~ " -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" +#~ " \t\t\t\tresultado sem armazená-lo na lista de histórico\n" +#~ " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +#~ " \n" +#~ " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" +#~ " Do contrário, se a variável HISTFILE tiver um valor, este será " +#~ "usado;\n" +#~ " senão, usa de ~/.bash_history.\n" +#~ " \n" +#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor " +#~ "é\n" +#~ " usado como uma string de formato para strftime(3) para mostrar a " +#~ "marca\n" +#~ " de tempo associada com cada entrada de histórico exibida. Do " +#~ "contrário,\n" +#~ " nenhuma marca de tempo é mostrada.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help kill +#~ msgid "" +#~ "Send a signal to a job.\n" +#~ " \n" +#~ " Send the processes identified by PID or JOBSPEC the signal named by\n" +#~ " SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +#~ " SIGTERM is assumed.\n" +#~ " \n" +#~ " Options:\n" +#~ " -s sig\tSIG is a signal name\n" +#~ " -n sig\tSIG is a signal number\n" +#~ " -l\tlist the signal names; if arguments follow `-l' they are\n" +#~ " \t\tassumed to be signal numbers for which names should be listed\n" +#~ " \n" +#~ " Kill is a shell builtin for two reasons: it allows job IDs to be " +#~ "used\n" +#~ " instead of process IDs, and allows processes to be killed if the " +#~ "limit\n" +#~ " on processes that you can create is reached.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given or an error occurs." +#~ msgstr "" +#~ "Envia um sinal para um trabalho.\n" +#~ "\n" +#~ " Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n" +#~ " informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n" +#~ " não estiverem presentes, então, SIGTERM é presumido.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n" +#~ " -n SIGNUM\t\tSIGNUM representa um número de sinal\n" +#~ " -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" +#~ " \t\t\t\toutros argumentos, presume-se estes sejam números de\n" +#~ " \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +#~ " \n" +#~ " `Kill' é um comando interno do shell por duas razões: ele permite\n" +#~ " IDs de trabalho serem usados ao invés de IDs de processo e permite\n" +#~ " que processos sejam matados caso o limite de processos que você pode\n" +#~ " criar seja atingido.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +#~ " ocorra um erro." + +# help set +#~ msgid "" +#~ "Set or unset values of shell options and positional parameters.\n" +#~ " \n" +#~ " Change the value of shell attributes and positional parameters, or\n" +#~ " display the names and values of shell variables.\n" +#~ " \n" +#~ " Options:\n" +#~ " -a Mark variables which are modified or created for export.\n" +#~ " -b Notify of job termination immediately.\n" +#~ " -e Exit immediately if a command exits with a non-zero status.\n" +#~ " -f Disable file name generation (globbing).\n" +#~ " -h Remember the location of commands as they are looked up.\n" +#~ " -k All assignment arguments are placed in the environment for a\n" +#~ " command, not just those that precede the command name.\n" +#~ " -m Job control is enabled.\n" +#~ " -n Read commands but do not execute them.\n" +#~ " -o option-name\n" +#~ " Set the variable corresponding to option-name:\n" +#~ " allexport same as -a\n" +#~ " braceexpand same as -B\n" +#~ " emacs use an emacs-style line editing interface\n" +#~ " errexit same as -e\n" +#~ " errtrace same as -E\n" +#~ " functrace same as -T\n" +#~ " hashall same as -h\n" +#~ " histexpand same as -H\n" +#~ " history enable command history\n" +#~ " ignoreeof the shell will not exit upon reading EOF\n" +#~ " interactive-comments\n" +#~ " allow comments to appear in interactive " +#~ "commands\n" +#~ " keyword same as -k\n" +#~ " monitor same as -m\n" +#~ " noclobber same as -C\n" +#~ " noexec same as -n\n" +#~ " noglob same as -f\n" +#~ " nolog currently accepted but ignored\n" +#~ " notify same as -b\n" +#~ " nounset same as -u\n" +#~ " onecmd same as -t\n" +#~ " physical same as -P\n" +#~ " pipefail the return value of a pipeline is the status " +#~ "of\n" +#~ " the last command to exit with a non-zero " +#~ "status,\n" +#~ " or zero if no command exited with a non-zero " +#~ "status\n" +#~ " posix change the behavior of bash where the default\n" +#~ " operation differs from the Posix standard to\n" +#~ " match the standard\n" +#~ " privileged same as -p\n" +#~ " verbose same as -v\n" +#~ " vi use a vi-style line editing interface\n" +#~ " xtrace same as -x\n" +#~ " -p Turned on whenever the real and effective user ids do not " +#~ "match.\n" +#~ " Disables processing of the $ENV file and importing of shell\n" +#~ " functions. Turning this option off causes the effective uid " +#~ "and\n" +#~ " gid to be set to the real uid and gid.\n" +#~ " -t Exit after reading and executing one command.\n" +#~ " -u Treat unset variables as an error when substituting.\n" +#~ " -v Print shell input lines as they are read.\n" +#~ " -x Print commands and their arguments as they are executed.\n" +#~ " -B the shell will perform brace expansion\n" +#~ " -C If set, disallow existing regular files to be overwritten\n" +#~ " by redirection of output.\n" +#~ " -E If set, the ERR trap is inherited by shell functions.\n" +#~ " -H Enable ! style history substitution. This flag is on\n" +#~ " by default when the shell is interactive.\n" +#~ " -P If set, do not resolve symbolic links when executing commands\n" +#~ " such as cd which change the current directory.\n" +#~ " -T If set, the DEBUG trap is inherited by shell functions.\n" +#~ " -- Assign any remaining arguments to the positional parameters.\n" +#~ " If there are no remaining arguments, the positional parameters\n" +#~ " are unset.\n" +#~ " - Assign any remaining arguments to the positional parameters.\n" +#~ " The -x and -v options are turned off.\n" +#~ " \n" +#~ " Using + rather than - causes these flags to be turned off. The\n" +#~ " flags can also be used upon invocation of the shell. The current\n" +#~ " set of flags may be found in $-. The remaining n ARGs are " +#~ "positional\n" +#~ " parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +#~ " ARGs are given, all shell variables are printed.\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns success unless an invalid option is given." +#~ msgstr "" +#~ "Define ou remove definição de valores das opções e dos parâmetros " +#~ "posicionais\n" +#~ "do shell:\n" +#~ " \n" +#~ " Altera o valor de opções e de parâmetros posicionais do shell ou " +#~ "mostra\n" +#~ " os nomes ou valores de variáveis shell.\n" +#~ " \n" +#~ " Opções:\n" +#~ " -a Marca variáveis, que foram modificadas ou criadas, para " +#~ "exportação.\n" +#~ " -b Notifica sobre terminação de trabalho imediatamente.\n" +#~ " -e Sai imediatamente se um comando sai com um status não-zero.\n" +#~ " -f Desabilita a geração de nome de arquivo (\"globbing\").\n" +#~ " -h Memoriza a localização de comandos à medida em que são " +#~ "procurados.\n" +#~ " -k Todos argumentos de atribuição são colocados no ambiente para " +#~ "um\n" +#~ " comando, e não apenas aqueles que precedem o nome do comando.\n" +#~ " -m Controle de trabalho está habilitado.\n" +#~ " -n Lê comandos, mas não os executa.\n" +#~ " -o NOME-OPÇÃO\n" +#~ " Define a variável correspondendo a NOME-OPÇÃO:\n" +#~ " allexport mesmo que -a\n" +#~ " braceexpand mesmo que -B\n" +#~ " emacs usa interface de edição de linha estilo Emacs\n" +#~ " errexit mesmo que -e\n" +#~ " errtrace mesmo que -E\n" +#~ " functrace mesmo que -T\n" +#~ " hashall mesmo que -h\n" +#~ " histexpand mesmo que -H\n" +#~ " history habilita histórico de comandos\n" +#~ " ignoreeof shell não vai sair após leitura de EOF\n" +#~ " interactive-comments\n" +#~ " permite mostrar comentários em comandos " +#~ "interativos\n" +#~ " keyword mesmo que -k\n" +#~ " monitor mesmo que -m\n" +#~ " noclobber mesmo que -C\n" +#~ " noexec mesmo que -n\n" +#~ " noglob mesmo que -f\n" +#~ " nolog atualmente aceito, mas ignorado\n" +#~ " notify mesmo que -b\n" +#~ " nounset mesmo que -u\n" +#~ " onecmd mesmo que -t\n" +#~ " physical mesmo que -P\n" +#~ " pipefail o valor de retorno de uma linha de comandos é " +#~ "o\n" +#~ " status do último comando a sair com status não-" +#~ "zero,\n" +#~ " ou zero se nenhum comando saiu com status não " +#~ "zero\n" +#~ " posix altera o comportamento do bash, onde a " +#~ "operação\n" +#~ " padrão diverge dos padrões do Posix para\n" +#~ " corresponder a estes padrões\n" +#~ " privileged mesmo que -p\n" +#~ " verbose mesmo que -v\n" +#~ " vi usa interface de edição de linha estilo vi\n" +#~ " xtrace mesmo que -x\n" +#~ " -p Ligado sempre que IDs de usuário real e efetivo não " +#~ "corresponderem.\n" +#~ " Desabilita processamento do arquivo $ENV e importação de " +#~ "funções da\n" +#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo " +#~ "serem\n" +#~ " os uid e gid reais.\n" +#~ " -t Sai após a leitura e execução de um comando.\n" +#~ " -u Trata limpeza (unset) de variáveis como um erro quando " +#~ "substituindo.\n" +#~ " -v Mostra linhas de entrada do shell na medida em que forem " +#~ "lidas.\n" +#~ " -x Mostra comandos e seus argumentos na medida em que forme " +#~ "executados.\n" +#~ " -B o shell vai realizar expansão de chaves\n" +#~ " -C Se definido, não permite arquivos normais existentes serem\n" +#~ " sobrescritos por redirecionamento da saída.\n" +#~ " -E Se definido, a armadilha ERR é herdada por funções do shell.\n" +#~ " -H Habilita substituição de histórico estilo \"!\". Essa " +#~ "sinalização está\n" +#~ " habilitada por padrão quando shell é interativa.\n" +#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, " +#~ "tais\n" +#~ " como `cd' (que altera o diretório atual).\n" +#~ " -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +#~ " -- Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " Se não houver argumentos restantes, os parâmetros posicionais " +#~ "são\n" +#~ " limpos (unset).\n" +#~ " - Atribui quaisquer argumentos restantes aos parâmetros " +#~ "posicionais.\n" +#~ " As opções -x e -v são desligadas.\n" +#~ " \n" +#~ " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" +#~ " sinalizações também podem ser usadas por meio de chamada do shell. " +#~ "As\n" +#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n " +#~ "ARGs\n" +#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a " +#~ "$1, $2,\n" +#~ " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" +#~ " mostradas.\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna sucesso, a menos que uma opção inválida seja fornecida." + +# help coproc +#~ msgid "" +#~ "Create a coprocess named NAME.\n" +#~ " \n" +#~ " Execute COMMAND asynchronously, with the standard output and " +#~ "standard\n" +#~ " input of the command connected via a pipe to file descriptors " +#~ "assigned\n" +#~ " to indices 0 and 1 of an array variable NAME in the executing shell.\n" +#~ " The default NAME is \"COPROC\".\n" +#~ " \n" +#~ " Exit Status:\n" +#~ " Returns the exit status of COMMAND." +#~ msgstr "" +#~ "Cria um coprocesso chamado NOME.\n" +#~ " \n" +#~ " Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" +#~ " do comando conectados via um `pipe' (redirecionamento) para " +#~ "descritores\n" +#~ " de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" +#~ " no shell em execução. O NOME padrão é \"COPROC\".\n" +#~ " \n" +#~ " Status de saída:\n" +#~ " Retorna o status de saída de COMANDO." + #~ msgid "Missing `}'" #~ msgstr "Faltando `}'" @@ -7830,6 +8203,9 @@ msgstr "" #~ msgid "\t\twhen the argument to `cd' is not found in the current" #~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for" +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tencontrado no diretório atual." + #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" diff --git a/po/ro.gmo b/po/ro.gmo index 5c7cb9a8b..079dcf710 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index 2b91db364..1ccb115b6 100644 --- a/po/ro.po +++ b/po/ro.po @@ -6,129 +6,129 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 1997-08-17 18:42+0300\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ro\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "incluziune greºitã în interval" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:578 -#, fuzzy, c-format +#: arrayfunc.c:582 +#, c-format msgid "%s: invalid associative array key" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nu se poate atribui cãtre index ne-numeric" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nu s-a putut crea: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 -#, fuzzy, c-format +#: builtins/alias.def:131 +#, c-format msgid "`%s': invalid alias name" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/bind.def:270 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: comandã negãsitã" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, fuzzy, c-format +msgid "`%s': cannot unbind" +msgstr "%s: comandã negãsitã" + +#: builtins/break.def:77 builtins/break.def:119 #, fuzzy msgid "loop count" msgstr "logout" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" @@ -139,169 +139,169 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "prea mulþi parametri" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" -msgstr "\t\tdirectorul curent." +msgstr "director superior." -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:102 +#: builtins/common.c:96 #, fuzzy, c-format msgid "line %d: " msgstr "slot %3d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, fuzzy, c-format msgid "warning: " msgstr "în scriere" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "opþiunea necesitã un parametru: -" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:213 +#: builtins/common.c:207 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: comandã negãsitã" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:229 +#: builtins/common.c:223 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "`%s' nu este un identificator valid" -#: builtins/common.c:246 +#: builtins/common.c:240 #, fuzzy msgid "invalid octal number" msgstr "numãr de semnal invalid" -#: builtins/common.c:248 +#: builtins/common.c:242 #, fuzzy msgid "invalid hex number" msgstr "numãr de semnal invalid" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 #, fuzzy msgid "invalid number" msgstr "numãr de semnal invalid" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: variabilã doar în citire" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 #, fuzzy msgid "argument" msgstr "se aºteaptã parametru" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:298 +#: builtins/common.c:292 #, fuzzy, c-format msgid "%s: no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:300 +#: builtins/common.c:294 #, fuzzy msgid "no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:310 +#: builtins/common.c:304 #, fuzzy, c-format msgid "%s: restricted" msgstr "%s: jobul a fost terminat" -#: builtins/common.c:312 +#: builtins/common.c:306 #, fuzzy msgid "restricted" msgstr "Terminat" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:323 #, fuzzy, c-format msgid "write error: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: Redirectare ambiguã" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -310,70 +310,70 @@ msgstr "" msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:127 +#: builtins/declare.def:132 #, fuzzy msgid "can only be used in a function" msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -407,69 +407,69 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: este director" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, fuzzy, c-format msgid "logout\n" msgstr "logout" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:269 +#: builtins/fc.def:265 #, fuzzy msgid "no command found" msgstr "%s: comandã negãsitã" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "" @@ -484,39 +484,38 @@ msgstr "op msgid "%s: option requires an argument -- %c\n" msgstr "opþiunea necesitã un parametru: -" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "ultima comandã." -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:226 +#: builtins/help.def:224 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -528,20 +527,21 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/history.def:375 +#: builtins/history.def:442 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: se aºteaptã expresie întreagã (integer)" @@ -555,89 +555,88 @@ msgstr "%s: variabil msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:265 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Eroare necunoscutã %d" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "se aºteaptã expresie" #: builtins/mapfile.def:178 -#, fuzzy, c-format +#, c-format msgid "%s: not an indexed array" -msgstr "%s: variabilã fãrã limitã" +msgstr "" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 -#, fuzzy, c-format +#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#, c-format msgid "%s: invalid line count" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, fuzzy, c-format msgid "%s: invalid array origin" -msgstr "%c%c: opþiune invalidã" +msgstr "%s:subscriere interval invalid" -#: builtins/mapfile.def:317 -#, fuzzy, c-format +#: builtins/mapfile.def:316 +#, c-format msgid "%s: invalid callback quantum" -msgstr "numãr de semnal invalid" +msgstr "" -#: builtins/mapfile.def:350 -#, fuzzy +#: builtins/mapfile.def:349 msgid "empty array variable name" -msgstr "%s: variabilã fãrã limitã" +msgstr "" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:467 -#, fuzzy, c-format +#: builtins/printf.def:471 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -650,22 +649,22 @@ msgstr "director superior." #: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" -msgstr "%c%c: opþiune invalidã" +msgstr "%s necesitã un parametru" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 #, fuzzy msgid "" msgstr "\tnoul director de lucru curent." -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -689,7 +688,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -714,7 +713,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -735,46 +734,46 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:696 +#: builtins/read.def:729 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:834 #, fuzzy msgid "cannot simultaneously unset a function and a variable" msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME" -#: builtins/set.def:888 +#: builtins/set.def:881 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variabilã fãrã limitã" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nu s-a putut crea: %s" @@ -784,20 +783,20 @@ msgstr "%s: nu s-a putut crea: %s" msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "" -#: builtins/source.def:157 +#: builtins/source.def:154 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: comandã negãsitã" @@ -811,62 +810,62 @@ msgstr "" msgid "cannot suspend a login shell" msgstr "Ieºire dintr-un login al shell-ului." -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:276 +#: builtins/type.def:275 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%c%c: opþiune invalidã" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 #, fuzzy msgid "limit" msgstr "limitã CPU" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nu s-a putut crea: %s" @@ -886,212 +885,217 @@ msgstr "" msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "" -#: error.c:165 +#: error.c:164 #, fuzzy, c-format msgid "last command: %s\n" msgstr "ultima comandã." -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 #, fuzzy msgid "unknown command error" msgstr "Eroare necunoscutã %d" -#: error.c:464 +#: error.c:463 #, fuzzy msgid "bad command type" msgstr "ºi nume de comandã." -#: error.c:465 +#: error.c:464 #, fuzzy msgid "bad connector" msgstr "conector greºit `%d'" -#: error.c:466 +#: error.c:465 #, fuzzy msgid "bad jump" msgstr "Salt invalid %d" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: variabilã fãrã limitã" -#: eval.c:209 +#: eval.c:242 #, fuzzy, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "%ca expirat aºteptând introducere de date: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 #, fuzzy msgid "pipe error" msgstr "eroare de legãturã (pipe): %s" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: comandã negãsitã" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: este director" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nu se poate executa fiºierul binar" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nu se poate duplica fd %d în fd 0: %s" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "nivel de recursivitate al expresiei depãºit" -#: expr.c:283 +#: expr.c:291 #, fuzzy msgid "recursion stack underflow" msgstr "Stivã recursivitate prea puþin folositã(underflow)" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "eroare de sintaxã în expresie " -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "s-a încercat asignare cãtre non-variabilã" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "eroare de sintaxã în expresie " + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "împãrþire la 0" -#: expr.c:542 +#: expr.c:567 #, fuzzy msgid "bug: bad expassign token" msgstr "bug: identificator(token) expassign greºit %d" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "`)' lipsã" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 #, fuzzy msgid "syntax error: operand expected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1419 +#: expr.c:1484 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "valoare prea mare pentru bazã" -#: expr.c:1546 +#: expr.c:1611 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "eroare de redirectare" -#: general.c:68 +#: general.c:69 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "getwd: nu s-au putut accesa directoarele pãrinte" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:271 +#: input.c:266 #, fuzzy, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "nu se poate aloca descriptor de fiºier nou pentru inputul bash din fd %d: %s" -#: input.c:279 +#: input.c:274 #, fuzzy, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "check_bash_input: buffer deja existent pentru fd nou %d" @@ -1100,195 +1104,199 @@ msgstr "check_bash_input: buffer deja existent pentru fd nou %d" msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1590 +#: jobs.c:1635 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Nu existã pid-ul (%d)!\n" -#: jobs.c:1605 +#: jobs.c:1650 #, fuzzy, c-format msgid "Signal %d" msgstr "Semnal Necunoscut #%d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Finalizat" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stopat" -#: jobs.c:1628 +#: jobs.c:1673 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Stopat" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "În rulare" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Finalizat(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Ieºire %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Stare necunoscutã" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1760 +#: jobs.c:1805 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd actual: %s)\n" -#: jobs.c:1985 +#: jobs.c:2033 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid copil (de la %d la %d) a întâlnit o eroare %d: %s\n" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, fuzzy, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "aºteptaþi: pid-ul %d nu este rezultat(child) al acestui shell" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: jobul a fost terminat" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3970 +#: jobs.c:4114 #, fuzzy, c-format msgid "%s: line %d: " msgstr "slot %3d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd actual: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:4104 +#: jobs.c:4241 +msgid "initialize_job_control: no job control in background" +msgstr "" + +#: jobs.c:4257 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplinã linie: %s" -#: jobs.c:4114 +#: jobs.c:4267 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "nici un control de job în acest shell" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "necunoscut" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1330,25 +1338,25 @@ msgstr "" msgid "network operations not supported" msgstr "" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "" -#: locale.c:259 -#, fuzzy, c-format +#: locale.c:272 +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" +msgstr "" -#: locale.c:261 -#, fuzzy, c-format +#: locale.c:274 +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" +msgstr "" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1363,154 +1371,154 @@ msgstr "Ave msgid "The mail in %s has been read\n" msgstr "Mailul din %s a fost citit\n" -#: make_cmd.c:329 +#: make_cmd.c:317 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "eroare de sintaxã în expresie " -#: make_cmd.c:331 +#: make_cmd.c:319 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: make_cmd.c:332 +#: make_cmd.c:320 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "eroare de sintaxã" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tip de instrucþiune greºit %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4410 +#: parse.y:4581 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4415 +#: parse.y:4586 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:4419 +#: parse.y:4590 #, fuzzy msgid "syntax error in conditional expression" msgstr "eroare de sintaxã în expresie " -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4501 +#: parse.y:4672 #, fuzzy msgid "expected `)'" msgstr "se aºteaptã `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4579 +#: parse.y:4750 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4583 +#: parse.y:4754 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4620 +#: parse.y:4791 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4623 +#: parse.y:4794 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4627 +#: parse.y:4798 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:6014 +#: parse.y:6238 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "eroare de sintaxã" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n" -#: parse.y:6248 +#: parse.y:6472 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "EOF brusc în cãutare dupã `%c'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1520,110 +1528,114 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector greºitr `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:174 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirectare ambiguã" -#: redir.c:182 +#: redir.c:178 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nu se poate accesa(clobber) fiºierul existent" -#: redir.c:187 +#: redir.c:183 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: redir.c:192 +#: redir.c:188 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: redir.c:196 +#: redir.c:192 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nu pot asigna listã membrului intervalului" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "eroare de redirectare" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opþiune invalidã" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: este director" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nu am nici un nume!" -#: shell.c:1930 +#: shell.c:1980 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versiunea %s\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1632,54 +1644,54 @@ msgstr "" "Folosire:\t%s [GNU opþiune lungã] [opþiune] ...\n" "\t%s [GNU opþiune lungã] [opþiune] fiºier script ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "opþiuni lungi GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Opþiuni ale shell-ului:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD sau -c comandã\t\t(doar invocaþie)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s sau -o opþiune\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Apãsaþi `%s -c \"set-ajutor\"' pentru mai multe informaþii despre opþiunile " "shell-ului.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Apãsaþi `%s -c ajutor' pentru mai multe informaþii despre comenzile interne " "ale shell-ului.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1853,22 +1865,22 @@ msgstr "Semnal Necunoscut #" msgid "Unknown Signal #%d" msgstr "Semnal Necunoscut #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituþie invalidã: nu existã '%s' în %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nu pot asigna listã membrului intervalului" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: subst.c:5798 +#: subst.c:5796 #, fuzzy msgid "cannot make child for process substitution" msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" @@ -1888,73 +1900,78 @@ msgstr "nu pot deschide leg msgid "cannot duplicate named pipe %s as fd %d" msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s " -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:6083 +#: subst.c:6121 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s" -#: subst.c:6127 +#: subst.c:6164 #, fuzzy msgid "cannot make child for command substitution" msgstr "nu pot crea un copil pentru substituþia de comenzi: %s" -#: subst.c:6153 +#: subst.c:6190 #, fuzzy msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nu se poate duplica legãtura (pipe) ca fd 1: %s" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: substituþie invalidã" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%c%c: opþiune invalidã" +msgstr "" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" -msgstr "%c%c: opþiune invalidã" +msgstr "%s: variabilã fãrã limitã" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametru null sau nesetat" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresie subºir < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituþie invalidã" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9349 +#: subst.c:9903 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "" @@ -1977,107 +1994,107 @@ msgstr "se a msgid "`)' expected, found %s" msgstr "se aºteaptã `)', s-a primit %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: se aºteaptã operator unar" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "lipseºte ']'" -#: trap.c:224 +#: trap.c:216 #, fuzzy msgid "invalid signal number" msgstr "numãr de semnal invalid" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:447 +#: trap.c:439 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Semnal invalid %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "eroare în importarea definiþiei funcþiei pentru '%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2432 -#, fuzzy, c-format +#: variables.c:2531 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: nu pot asigna listã membrului intervalului" +msgstr "" -#: variables.c:3043 +#: variables.c:3246 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4218 +#: variables.c:4437 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametru null sau nesetat" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5619 -#, fuzzy, c-format +#: variables.c:5862 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: nu s-a putut crea: %s" +msgstr "" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" @@ -2105,25 +2122,25 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: xmalloc.c:91 +#: xmalloc.c:93 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" +msgstr "%s: nu s-a putut crea: %s" -#: xmalloc.c:163 +#: xmalloc.c:165 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, fuzzy, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" +msgstr "%s: nu s-a putut crea: %s" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" @@ -2355,8 +2372,8 @@ msgstr "umask [-S] [mod]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" -msgstr "wait [n]" +msgid "wait [-fn] [id ...]" +msgstr "echo [-n] [arg ...]" #: builtins.c:181 #, fuzzy @@ -2474,7 +2491,7 @@ msgstr "" #: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "type [-apt] nume [nume ...]" +msgstr "unset [-f] [-v] [nume ...]" #: builtins.c:242 msgid "" @@ -2484,8 +2501,8 @@ msgstr "" #: builtins.c:244 msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" #: builtins.c:256 @@ -2739,11 +2756,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3045,7 +3062,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3061,7 +3078,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3086,7 +3104,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3110,7 +3128,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3127,7 +3145,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:918 +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3150,7 +3168,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3195,7 +3213,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3216,7 +3234,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3247,7 +3265,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3259,7 +3277,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1047 +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3345,7 +3363,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3367,7 +3385,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3386,7 +3404,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3407,7 +3425,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -3418,7 +3436,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3432,7 +3450,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -3446,7 +3464,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3529,7 +3547,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3537,7 +3555,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -3549,7 +3567,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -3593,7 +3611,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -3623,7 +3641,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -3672,7 +3690,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -3690,7 +3708,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3698,19 +3716,21 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3725,7 +3745,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3738,7 +3758,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -3755,7 +3775,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3775,7 +3795,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3791,7 +3811,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3802,7 +3822,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3823,7 +3843,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3834,7 +3854,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3845,7 +3865,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3858,7 +3878,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -3872,7 +3892,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -3883,7 +3903,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -3897,7 +3917,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3908,7 +3928,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -3936,7 +3956,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3990,7 +4010,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -4021,7 +4041,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -4048,7 +4068,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -4077,14 +4097,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4098,7 +4117,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4137,7 +4156,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4164,7 +4183,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4177,7 +4196,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -4208,7 +4227,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4250,34 +4269,13 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "times" -#~ msgstr "ori" - -#, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "wait [n]" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - -#, fuzzy -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - -#, fuzzy -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" - #~ msgid "Missing `}'" #~ msgstr "`}' lipsã" @@ -4375,9 +4373,6 @@ msgstr "" #~ msgid "Bad code in sig.c: sigprocmask" #~ msgstr "Cod invalid în sig.c: sigprocmask" -#~ msgid "%s: bad array subscript" -#~ msgstr "%s:subscriere interval invalid" - #~ msgid "can't make pipes for process substitution: %s" #~ msgstr "nu pot face legãturi (pipes) pentru substituþia procesului: %s" @@ -4410,6 +4405,9 @@ msgstr "" #~ msgid "[%s: bad subscript" #~ msgstr "[%s: subscripþie invalidã" +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" + #~ msgid "digits occur in two different argv-elements.\n" #~ msgstr "se regãsesc digiþi în douã elemente argv diferite.\n" @@ -4437,9 +4435,6 @@ msgstr "" #~ msgid "Unknown directive `%s'" #~ msgstr "Directivã necunoscutã '%s'" -#~ msgid "%s requires an argument" -#~ msgstr "%s necesitã un parametru" - #~ msgid "%s must be inside of a $BUILTIN block" #~ msgstr "%s trebuie sa fie înãuntrul unui bloc $BUILTIN" @@ -4461,9 +4456,15 @@ msgstr "" #~ msgid "mkbuiltins: Out of virtual memory!\n" #~ msgstr "mkbuiltins: Memorie virtualã plinã!\n" +#~ msgid ":" +#~ msgstr ":" + #~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" #~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]" +#~ msgid "times" +#~ msgstr "ori" + #~ msgid "%[DIGITS | WORD] [&]" #~ msgstr "%[DIGIÞI | CUVÂNT] [&]" @@ -6323,6 +6324,9 @@ msgstr "" #~ "\t\tcãuta atunci când parametrii specificaþi comenzii `cd' nu sunt gãsiþi " #~ "în" +#~ msgid "\t\tdirectory." +#~ msgstr "\t\tdirectorul curent." + #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" diff --git a/po/ru.gmo b/po/ru.gmo index 86ac1a6a3..7587f20a8 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index b42cd5d57..e07ed021c 100644 --- a/po/ru.po +++ b/po/ru.po @@ -2,138 +2,139 @@ # Copyright (C) 2002 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Ruslan Batdalov , 2002. -# Pavel Maryanov , 2014. +# Pavel Maryanov , 2014, 2018. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-13 17:51+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2018-04-17 14:09+0300\n" "Last-Translator: Pavel Maryanov \n" -"Language-Team: Russian \n" +"Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 1.6.9\n" +"X-Generator: Poedit 2.0.6\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "неправильный индекс массива" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: удаляется атрибут nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не удаётся преобразовать индекс в ассоциативный массив" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: недействительный ключ ассоциативного массива" +msgstr "%s: недопустимый ключ ассоциативного массива" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не удаётся присвоить значение нечисловому индексу" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не удаётся создать файл: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: не удаётся найти keymap для команды" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: первый непробельный символ не является «\"»" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "нет закрывающего «%c» в %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: отсутствует разделитель-двоеточие" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "расширение скобки: не удаётся выделить память для %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "расширение скобки: не удаётся выделить память для %d элементов" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "расширение скобки: не удалось выделить память для «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: недопустимый псевдоним" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редактирование строки не включено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: недопустимое название keymap" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не удаётся прочитать файл: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: не удаётся отменить привязку" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: неизвестное название функции" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не привязан ни к какой клавише.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s можно вызвать через " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не удаётся отменить привязку" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "счётчик циклов" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "имеет значение только для циклов «for», «while» или «until»" @@ -147,234 +148,233 @@ msgstr "" " \n" " Без EXPR выполняет возврат " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Не задана переменная HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "слишком много аргументов" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "\t\tкаталоге." +msgstr "нулевой каталог" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Не задана переменная OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "строка %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: использование: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: для параметра требуется аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: требуется числовой аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не найден" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: недопустимый параметр" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: недопустимое название параметра" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: это недопустимый идентификатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "недопустимое восьмеричное число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "недопустимое шестнадцатеричное число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "недопустимое число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: недопустимое указание сигнала" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: это не идентификатор процесса и не допустимый указатель задания" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: переменная только для чтения" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s за пределами диапазона" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s за пределами диапазона" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нет такого задания" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: нет управления заданиями" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "нет управления заданиями" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограниченный режим" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограниченный режим" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: это не не встроенная команда bash" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "ошибка записи: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "ошибка назначения атрибутов терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "ошибка получения атрибутов терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: ошибка определения текущего каталога: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: неоднозначный указатель задания" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "справка отсутствует в этой версии" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: недопустимое название действия" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: нет определения завершения" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: параметр -F может работать не так, как ожидается" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: параметр -C может работать не так, как ожидается" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "сейчас не выполняет функцию завершения" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "можно использовать только внутри функции" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ссылочная переменная не может быть массивом" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: переменные nameref, ссылающиеся сами на себя, не допускаются" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: круговая ссылка на имя" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: недопустимое название переменной для ссылки на имя" +msgstr "«%s»: недопустимое название переменной для ссылки на имя" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "«-f» нельзя использовать для создания функций" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: значение функции можно только считать" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: присвоение составного массива в кавычках устарело" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: переменные массива нельзя уничтожить таким образом" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не удаётся преобразовать ассоциативный массив в индексированный" @@ -396,7 +396,7 @@ msgstr "не удаётся найти %s в общем объекте %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "загрузка функции %s завершилась ошибкой (%d): не загружена" #: builtins/enable.def:512 #, c-format @@ -408,68 +408,68 @@ msgstr "%s: не загружается динамически" msgid "%s: cannot delete: %s" msgstr "%s: не удаётся удалить: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: это каталог" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: это не обычный файл" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файл слишком велик" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не удаётся запустить бинарный файл" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не удаётся запустить: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "выход\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "не командный процессор login: используйте «exit»" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Есть остановленные задания.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Есть выполняемые задания.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "команда не найдена" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "указание журнала команд" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не удаётся открыть временный файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текущий" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "задание %d запущено без возможности управления" @@ -484,29 +484,28 @@ msgstr "%s: недопустимый параметр — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: для параметра требуется аргумент — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хэширование отключено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблица хэшей пустая\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "вызовы\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команды, соответствующие ключевому слову «" msgstr[1] "Команды, соответствующие ключевым словам «" msgstr[2] "Команды, соответствующие ключевым словам «" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -514,12 +513,12 @@ msgstr "" "нет разделов справки, соответствующих «%s». Попробуйте ввести «help help» или " "«man -k %s» или «info %s»." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не удаётся открыть файл: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +540,21 @@ msgstr "" "отключена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "нельзя использовать больше одного параметра -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "положение журнала команд" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: недопустимый аргумент" +msgstr "%s: недопустимая метка времени" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: не удалось расширить журнал команд" @@ -568,16 +568,16 @@ msgstr "%s: ошибка inlib" msgid "no other options allowed with `-x'" msgstr "с параметром «-x» нельзя указывать другие параметры" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументами должны быть идентификаторы процессов или заданий" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Неизвестная ошибка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "ожидается выражение" @@ -586,69 +586,69 @@ msgstr "ожидается выражение" msgid "%s: not an indexed array" msgstr "%s: это не индексированный массив" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: недопустимое указание дескриптора файла" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid недопустимый дескриптор файла: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: недопустимое число строк" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: недопустимое начало массива" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: недопустимый квант обратного вызова" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "пустое имя переменной массива" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "требуется поддержка переменных массива" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "«%s»: отсутствует символ форматирования" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: недопустимое указание формата времени" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: недопустимый символ форматирования" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "ошибка анализа формата: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "отсутствует шестнадцатеричная цифра для \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "отсутствует цифра Юникода для \\%c" @@ -662,19 +662,19 @@ msgstr "отсутствует другой каталог" msgid "%s: invalid argument" msgstr "%s: недопустимый аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<отсутствует текущий каталог>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стек каталогов пуст" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "индекс стека каталогов" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -716,7 +716,7 @@ msgstr "" " -N\tпоказать N-ю запись справа в списке каталогов,\n" "\tпоказанного при вызове без параметров, начиная с нуля." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -763,7 +763,7 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -801,67 +801,67 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: недопустимое указание тайм-аута" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "ошибка чтения: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "возврат можно выполнить только из функции или исходного скрипта" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "нельзя одновременно сбросить функцию и переменную" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: не удаётся выполнить сброс" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не удаётся выполнить сброс: %s доступен только для чтения" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: это не переменная массива" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: это не функция" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: не удаётся выполнить сброс" +msgstr "%s: не удаётся экспортировать" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "счётчик смещений" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "нельзя одновременно задать и сбросить параметры командного процессора" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: недопустимое название параметра командного процессора" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "требуется аргумент с именем файла" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файл не найден" @@ -874,61 +874,61 @@ msgstr "не удаётся приостановить" msgid "cannot suspend a login shell" msgstr "не удаётся приостановить командный процессор login" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s — это псевдонимом для «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — это ключевое слово командного процессора\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s — это функция\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s — это встроенная команда bash\n" +msgstr "%s — это специальная встроенная команда bash\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s — это встроенная команда bash\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s является %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "для %s вычислен хэш (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: недопустимый аргумент ограничения" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: недопустимая команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не удаётся получить ограничение: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не удаётся изменить ограничение: %s" @@ -947,206 +947,211 @@ msgstr "«%c»: недопустимый оператор символьного msgid "`%c': invalid symbolic mode character" msgstr "«%c»: недопустимый знак символьного режима" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " строка " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последняя команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Прерывание..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "ИНФО: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "неизвестная ошибка команды" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "неверный тип команды" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "неверный соединитель" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "ошибка перехода" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: не заданы границы переменной" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\\aпревышено время ожидания ввода: auto-logout\n" +msgstr "\aпревышено время ожидания ввода: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не удаётся перенаправить стандартный ввод из /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: недопустимый символ форматирования" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] всё ещё существует" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "ошибка конвейера" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4624 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" +msgstr "eval: достигнут максимальный уровень вложенности eval (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4636 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" +msgstr "%s: достигнут максимальный уровень вложенности source (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: команда не найдена" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неверный интерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не удаётся запустить бинарный файл: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: это специальная встроенная команда" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не удаётся скопировать файловый дескриптор %d в %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "слишком много вложенных выражений" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "отрицательное переполнение стека вложенных выражений" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "синтаксическая ошибка в выражении" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "значение можно присвоить только переменной" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтаксическая ошибка в выражении" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "деление на 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "ошибка: недопустимый маркер присвоения выражения" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "в условном выражении должен быть символ «:»" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "экспонента меньше нуля" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "после предварительного инкремента или декремента ожидается идентификатор " -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "отсутствует символ «)»" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "синтаксическая ошибка: ожидается операнд" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "ошибка синтаксиса: недопустимый математический оператор" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (неверный маркер «%s»)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "недопустимое математическое основание" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "слишком большое значение для основания" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: ошибка выражения\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: нет доступа к родительским каталогам" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не удаётся выделить новый дескриптор для входных данных bash из файлового " "дескриптора %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: у нового файлового дескриптора %d уже есть буфер" @@ -1155,157 +1160,162 @@ msgstr "save_bash_input: у нового файлового дескриптор msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "идентификатор дочернего процесса %d принадлежит запущенному заданию %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "удаление остановленного задания %d с группой процесса %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процесс %5ld (%s) в the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нет процесса с таким идентификатором" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Завершён" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Остановлен" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Остановлен (%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Запущен" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Завершён (%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Выход %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Состояние неизвестно" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(стек памяти сброшен на диск) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (рабочий каталог: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дочерний setpgid (%ld к %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" "wait: процесс %ld не является дочерним процессом этого командного процессора" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: нет записей процесса %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: задание %d остановлено" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: выполнение задания прервано" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: задание %d уже выполняется в фоновом режиме" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого " "блока" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: строка %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (стек памяти сброшен на диск)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(рабочий каталог: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: ошибка вызова getpgrp " -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: дисциплина строки" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина строки" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не удаётся задать группу процесса терминала (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "этот командный процессор не может управлять заданиями" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: ошибка утверждения: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1314,43 +1324,43 @@ msgstr "" "\\r\n" "malloc: %s:%d: утверждение не удалось\\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "неизвестно" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: блок в списке свободных затёрт" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: вызван с аргументом уже освобождённого блока" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " "диапазона" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: размеры начального и конечного блока отличаются" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " "диапазона" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: размеры начального и конечного блока отличаются" @@ -1392,22 +1402,22 @@ msgstr "%s: недопустимое указание сетевого пути" msgid "network operations not supported" msgstr "сетевые операции не поддерживаются" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не удаётся изменить язык (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не удаётся изменить язык (%s): %s" @@ -1425,261 +1435,267 @@ msgstr "Для вас есть почта в $_" msgid "The mail in %s has been read\n" msgstr "Сообщения в %s были прочитаны\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтаксическая ошибка: требуется математическое выражение" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтаксическая ошибка: ожидается «;»" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксическая ошибка: «((%s))»" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: недопустимый тип инструкции %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) превысил SIZE_MAX (%lu): строка " +"обрезана" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "достигнуто максимальное число переменных here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неожиданный конец файла во время поиска «%c»" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "неожиданный конец файла во время поиска «]]»" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксическая ошибка в условном выражении: неожиданный маркер «%s»" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "синтаксическая ошибка в условном выражении" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неожиданный маркер «%s», ожидался «)»" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "ожидается символ «)»" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неожиданный аргумент «%s» для условного унарного оператора" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "неожиданный аргумент для условного унарного оператора" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неожиданный маркер «%s», ожидается условный бинарный оператор" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "ожидается условный бинарный оператор" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неожиданный аргумент «%s» для условного бинарного оператора" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "неожиданный аргумент для условного бинарного оператора" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неожиданный маркер «%c» в условной команде" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неожиданный маркер «%s» в условной команде" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "неожиданный маркер %d в условной команде" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксическая ошибка рядом с неожиданным маркером «%s»" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "синтаксическая ошибка рядом с «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "синтаксическая ошибка: неожиданный конец файла" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "синтаксическая ошибка" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Для выхода из командного процессора используйте «%s».\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "неожиданный конец файла во время поиска «)»" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: функция «%s» не найдена" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: возможен бесконечный цикл повторов" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: неверный соединитель «%d»" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: недопустимый идентификатор файла" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: пустой указатель на файл" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: недопустимый символ форматирования" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "файловый дескриптор за пределами диапазона" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначное перенаправление" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не удаётся перезаписать существующий файл" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограниченный режим: не удаётся перенаправить вывод" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не удаётся создать временный файл для блока here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не удаётся присвоить файловый дескриптор переменной" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не поддерживается без сети" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "ошибка перенаправления: не удаётся создать копию файлового дескриптора" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не удалось найти /tmp; создайте этот каталог" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp должен быть допустимым названием каталога" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: недопустимый параметр" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" +msgstr "не удаётся установить UID %d: эффективный UID %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" +msgstr "не удаётся установить GID %d: эффективный GID %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не удаётся запустить отладчик: режим отладки отключён" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" msgstr "%s: это каталог" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Не удаётся определить название" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1688,54 +1704,55 @@ msgstr "" "Использование:\t%s [длинные параметры GNU] [параметры] ...\n" "\t\t%s [длинные параметры GNU] [параметры] файл_скрипта ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Длинные параметры GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Параметры командного процессора:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s или -o параметр\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Для получения дополнительных сведений о параметрах командного процессора " "введите «%s -c \"help set\"».\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Для получения дополнительных сведений о встроенных командах введите «%s -c " "help».\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Для отправки сообщений об ошибках используйте команду «bashbug».\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "Домашняя страница bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" +"Общая справка по использованию программ GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: недопустимая операция" @@ -1909,21 +1926,21 @@ msgstr "Неизвестный номер сигнала" msgid "Unknown Signal #%d" msgstr "Неизвестный номер сигнала %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неверная подстановка: нет закрывающей «%s» в %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не удаётся присвоить список элементу массива" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "не удаётся создать конвейер для подстановки процесса" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "не удаётся создать дочерний процесс для подстановки" @@ -1943,60 +1960,64 @@ msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "неверная подстановка: нет закрывающей «`» в %s" +msgstr "подстановка команды: во входных данных проигнорирован нулевой байт" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "не удаётся создать конвейер для подстановки команды" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "не удаётся создать дочерний процесс для подстановки команды" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: недопустимое название переменной для ссылки на имя" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: неверная подстановка" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: недопустимое число строк" +msgstr "%s: недопустимое непрямое раскрытие" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "«%s»: недопустимый псевдоним" +msgstr "%s: недопустимое имя переменной" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр не задан или пустой" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр не задан или пустой" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: заданное подстрокой выражение меньше нуля" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: недопустимая подстановка" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: такое присвоение невозможно" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2004,12 +2025,12 @@ msgstr "" "в будущих версиях командный процессор оценка будет выполняться как " "математическая подстановка" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неверная подстановка: нет закрывающей «`» в %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "нет совпадений: %s" @@ -2032,30 +2053,30 @@ msgstr "ожидается символ «)»" msgid "`)' expected, found %s" msgstr "ожидается символ «)», обнаружено %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: ожидается унарный оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: ожидается бинарный оператор" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "отсутствует символ «]»" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "недопустимый номер сигнала" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2063,88 +2084,87 @@ msgstr "" "run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) " "самому себе" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неверный сигнал %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "ошибка импорта определения функции для «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "слишком высокий уровень командного процессора (%d); сбрасывается до 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: в текущей области отсутствует контекст функции" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: переменной не может быть присвоено значение" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: недопустимое название переменной для ссылки на имя" +msgstr "%s: целое числе присваивается ссылке на имя" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: в текущей области отсутствует контекст функции" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s имеет пустую exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "недопустимый символ %d в exportstr для %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "отсутствует «=» в exportstr для %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: заголовок shell_variables не является контекстом функции" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: отсутствует контекст global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: заголовок shell_variables не является областью временного " "окружения" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не удаётся открыть как ФАЙЛ" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: недопустимое значение для дескриптора файла трассировки" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значение совместимости за пределами диапазона" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc, 2013." +msgstr "© Free Software Foundation, Inc, 2016." #: version.c:47 version2.c:47 msgid "" @@ -2169,22 +2189,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "НИКАКАЯ ГАРАНТИЯ не предоставляется в пределах, допускаемых законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не удаётся выделить %lu байт" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не удаётся выделить %lu байт" @@ -2239,9 +2259,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [имя[=значение] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] имя[=значение] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] имя[=значение] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2314,9 +2333,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [задание ...]" +msgstr "disown [-h] [-ar] [задание ... | pid ...]" #: builtins.c:134 msgid "" @@ -2391,16 +2409,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] имя [имя ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ограничение]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [идентификатор ...]" #: builtins.c:181 @@ -2503,7 +2521,6 @@ msgstr "" "P префикс] [-S суффикс] [имя ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" @@ -2517,24 +2534,23 @@ msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o параметр] [-DE] [имя ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c " -"quantum] [массив]" +"mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C " +"callback] [-c quantum] [массив]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c " "quantum] [массив]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2558,10 +2574,10 @@ msgstr "" " Если не указать аргументы, alias выводит список псевдонимов\n" " в виде «alias имя=значение» на стандартный вывод.\n" " \n" -" В противном случае каждому имени, для которого указано значение, " -"назначается псевдоним.\n" -" Если значение в конце содержит пробел, следующее слово будет\n" -" проверяться на замену псевдонима при его развёртывании.\n" +" В противном случае каждому имени, для которого указано значение,\n" +" назначается псевдоним. Если значение в конце содержит пробел,\n" +" следующее слово будет проверяться на замену псевдонима при его\n" +" развёртывании.\n" " \n" " Параметры:\n" " -p\tвыводит все определённые псевдонимы\n" @@ -2571,7 +2587,6 @@ msgstr "" " псевдоним." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2580,10 +2595,10 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Удаляет каждое имя из списка определённых псевдонимов.\n" +"Удаляет все имена из списка определённых псевдонимов.\n" " \n" " Параметры:\n" -" -a\tудаляет все определения псевдонимов\n" +" -a\tудаляет все псевдонимы\n" " \n" " Возвращает успех, если имя связано с существующим псевдонимом." @@ -2978,11 +2993,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3559,7 +3574,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3595,7 +3610,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3655,7 +3671,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3704,7 +3720,7 @@ msgstr "" "ошибка.\n" " Если указан параметр -x, возвращает состояние выхода команды." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3735,7 +3751,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или задание." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3781,7 +3797,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3871,7 +3887,7 @@ msgstr "" " Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном " "случае let возвращает 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3893,7 +3909,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3978,7 +3994,7 @@ msgstr "" "присвоения переменной\n" " или не был указан недопустимый файловый дескриптор как аргумент для -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3999,7 +4015,7 @@ msgstr "" " Возвращает N или ошибку, если командный процессор не выполняет функцию " "или скрипт." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4184,7 +4200,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4227,7 +4243,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или указанное имя " "доступно для записи." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4261,7 +4277,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4302,7 +4318,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4320,7 +4336,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если N положительный или меньше $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4346,7 +4362,7 @@ msgstr "" "ошибку,\n" " если файл не удаётся прочитать." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4374,7 +4390,7 @@ msgstr "" " Возвращает успех, если не включено управление заданиями или не произошла " "ошибка." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4547,7 +4563,7 @@ msgstr "" "ложно\n" " или указан недопустимый аргумент." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4559,7 +4575,7 @@ msgstr "" " Это синоним встроенной команды test, но последним аргументом должна\n" " быть скобка «]», соответствующая открывающей «[»." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4579,7 +4595,7 @@ msgstr "" " Состояние выхода:\n" " Всегда возвращает успех." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4662,7 +4678,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый сигнал или параметр." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4723,7 +4739,7 @@ msgstr "" " Возвращает успех, если все указанные имена были найдены, или ошибку в " "противном случае." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4821,7 +4837,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4858,7 +4874,8 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый РЕЖИМ или параметр." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4866,13 +4883,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4894,7 +4913,7 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4920,7 +4939,7 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4943,7 +4962,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4974,7 +4993,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5016,7 +5035,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5046,7 +5065,7 @@ msgstr "" " Состояние выхода:\n" " Возвращаемое состояние соответствует состоянию выхода конвейера." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5064,7 +5083,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5100,7 +5119,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5118,7 +5137,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5136,7 +5155,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -5161,7 +5180,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние выхода команды." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5186,7 +5205,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если переменная ИМЯ доступно для записи." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5205,7 +5224,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5231,7 +5250,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние возобновлённого задания." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5249,7 +5268,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает 1, если выражение равно 0, в противном случае возвращает 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5304,7 +5323,7 @@ msgstr "" " Состояние выхода:\n" " 0 или 1 в зависимости от значения выражения." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5416,7 +5435,7 @@ msgstr "" "команды,\n" " \t\tкоторые должны быть сохранены в журнале.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5476,7 +5495,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5527,7 +5546,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5581,14 +5600,14 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5620,7 +5639,7 @@ msgstr "" " Возвращает успех, если указанный параметр включён. Возвращает ошибку,\n" " если был указан недопустимый параметр или параметр отключён." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5695,7 +5714,7 @@ msgstr "" "ошибка\n" " записи или присвоения." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5747,7 +5766,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5770,7 +5789,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или не возникла " "ошибка." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5829,7 +5848,7 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или для имени\n" " определена спецификация завершения." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5908,7 +5927,7 @@ msgstr "" "доступен для записи\n" " и является индексированным." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5918,9 +5937,8 @@ msgstr "" " \n" " Синоним команды «mapfile»." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "© Free Software Foundation, Inc, 2013." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc, 2012." #~ msgid ":" #~ msgstr ":" @@ -5934,9 +5952,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "© Free Software Foundation, Inc, 2012." - #~ msgid "Missing `}'" #~ msgstr "Пропущен символ `}'" diff --git a/po/sk.gmo b/po/sk.gmo index 366d2179b..bf1c921ef 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index 702e7a5f2..86f0ed07e 100644 --- a/po/sk.po +++ b/po/sk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2011-03-16 21:22+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -15,122 +15,123 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "chybný index poľa" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný kľúč asociatívneho poľa" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: pri priraďovaní asociatívnemu poľu je potrebné použiÅ¥ index" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie je možné vytvoriÅ¥: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: nie je možné nájsÅ¥ klávesovú mapu pre príkaz" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "chýba zatvárajúca „%c“ v %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: chýba oddeľovač dvojbodka" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: neplatný názov aliasu" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "úpravy riadka nie sú zapnuté" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: neplatný názov klávesovej mapy" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie je možné prečítaÅ¥: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámy názov funkcie" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie je zviazaný (bind) s žiadnymi klávesmi.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s je možné vyvolaÅ¥ ako " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "počet cyklov" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“" @@ -144,163 +145,163 @@ msgstr "" " \n" " Bez EXPR, vracia " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME nebola nastavená" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "príliÅ¡ veľa argumentov" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "na nový vrchol zásobníka." -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD nebola nastavená" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "riadok %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "upozornenie: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: použitie " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: voľba vyžaduje argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžaduje sa numerický argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: nenájdené" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: neplatná voľba" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: neplatný názov voľby" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: nie je platný identifikátor" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neplatné osmičkové číslo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "neplatné Å¡estnástkové číslo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "neplatné číslo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neplatné určenie signálu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: nie je pid ani platný Å¡pecifikátor úlohy" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: premenná len na čítanie" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je mimo rozsahu" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s mimo rozsahu" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: taká úloha neexistuje" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: riadenie úloh nedostupné" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "riadenie úloh nedostupné" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: obmedzené" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "obmedzené" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie je vstavaný príkaz (builtin) shellu" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "chyba zapisovania: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba pri nastavovaní atribútov terminálu: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba pri zisÅ¥ovaní atribútov terminálu: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba pri zisÅ¥ovaní aktuálneho adresára: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznačné určenie úlohy" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -309,69 +310,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: neplatný názov akcie" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: chýba Å¡pecifikácia dokončovania" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "upozornenie: voľba -F nemusí fungovaÅ¥ tak ako očakávate" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako očakávate" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "momentálne sa nevykonáva funkcia doplňovania" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "je možné použiÅ¥ iba vo funkcii" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "„%s“: neplatný názov aliasu" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkcia iba na čítanie" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: nie je možné takto robiÅ¥ deÅ¡trukciu premenných polí" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie je možné previesÅ¥ asociatívne pole na indexované" @@ -405,68 +406,68 @@ msgstr "%s: nie je dynamicky načítané" msgid "%s: cannot delete: %s" msgstr "%s: nie je možné zmazaÅ¥: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: je adresár" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: nie je obyčajný súbor" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: súbor je príliÅ¡ veľký" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie je možné spustiÅ¥: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odhlásenie\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "toto nie je login shell: použite „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Existujú zastavené úlohy.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Existujú bežiace úlohy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "prákaz nenájdený" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "Å¡pecifikácia histórie" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie je možné otvoriÅ¥ odkladací súbor: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuálny" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "úloha %d začala bez riadenia úloh" @@ -481,29 +482,28 @@ msgstr "%s: neplatná voľba -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: voľba vyžaduje argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "haÅ¡ovanie vypnuté" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: haÅ¡ovacia tabuľka je prázdna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "použití\tpríkaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Príkazy shellu zodpovedajúce kľúčovému slovu „" msgstr[1] "Príkazy shellu zodpovedajúce kľúčovým slovám „" msgstr[2] "Príkazy shellu zodpovedajúce kľúčovým slovám „" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +511,12 @@ msgstr "" "pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n" "Skúste „help help“ alebo „man -k %s“ alebo „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie je možné otvoriÅ¥: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "Hviezdička (*) vedľa názvu znamená, že príkaz je vypnutý.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "nie je možné použiÅ¥ viac ako jednu z volieb -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "poloha histórie" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: neplatný argument limitu" +msgstr "%s: neplatný názov voľby" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozšírenie histórie zlyhalo" @@ -564,16 +565,16 @@ msgstr "%s: inlib zlyhalo" msgid "no other options allowed with `-x'" msgstr "iné voľby prípustné s „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenty musia byÅ¥ ID procesov alebo úloh" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznáma chyba" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "očakával sa výraz" @@ -582,69 +583,69 @@ msgstr "očakával sa výraz" msgid "%s: not an indexed array" msgstr "%s: nie je indexované pole" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neplatná Å¡pecifikácia popisovača súboru" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný popisovač súboru: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: neplatný počet riadkov" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: neplatný začiatok poľa" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné kvantum spätného volania" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "názov prázdnej premennej poľa" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "vyžaduje sa podpora premennej poľa" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s“: chýba formátovací znak" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: neplatná Å¡pecifikácia formátu času" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "upozornenie: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "chýba hexadecimálna číslica v \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "chýba číslica Unicode pre \\%c" @@ -658,19 +659,19 @@ msgstr "žiadny iný adresár" msgid "%s: invalid argument" msgstr "%s: neplatný argument limitu" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<žiadny aktuálny adresár>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "zásobník adresárov je prázdny" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "index zásobníka adresárov" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tzobrazuje N-tú položku počítajúc sprava zoznamu, ktorý zobrazuje\n" " \tdirs vyvolaný bez volieb, počínajúc nulou." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +757,7 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -795,47 +796,47 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "chyba pri čítaní: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "návrat („return“) je možné vykonaÅ¥ iba z funkcie alebo skriptu vyvolaného " "pomocou „source“" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: nie je možné zruÅ¡iÅ¥" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie je možné zruÅ¡iÅ¥: len na čítanie %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: nie je premenná poľa" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: nie je funkcia" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: nie je možné zruÅ¡iÅ¥" @@ -844,20 +845,20 @@ msgstr "%s: nie je možné zruÅ¡iÅ¥" msgid "shift count" msgstr "posun o" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "nie je možné zároveň nastaviÅ¥ aj zruÅ¡iÅ¥ voľby shellu" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neplatný názov voľby shellu" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "vyžaduje sa argument názov súboru" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: súbor sa nepodarilo nájsÅ¥" @@ -870,61 +871,61 @@ msgstr "nie je možné suspendovaÅ¥" msgid "cannot suspend a login shell" msgstr "nie je možné suspendovaÅ¥ login shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s má alias „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je kľúčové slovo shellu\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcia\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je haÅ¡ovaný (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neplatný argument limitu" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný príkaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie je možné zistiÅ¥ limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "obmedzenie" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie je možné zmeniÅ¥ limit: %s" @@ -943,202 +944,207 @@ msgstr "„%c“: neplatný operátor symbolického režimu" msgid "`%c': invalid symbolic mode character" msgstr "„%c“: neplatný znak symbolického režimu" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " riadok " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "posledný príkaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Ruší sa..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "chyba neznámeho príkazu" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "chybný typ príkazu" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "chybný konektor" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "chybný skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: neviazaná premenná" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\ačas vyprÅ¡al pri čakaní na vstup: automatické odhlásenie\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nie je možné presmerovaÅ¥ Å¡tandardný vstup z /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "chyba rúry" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: obmedzené: nie jemožné uviesÅ¥ „/“ v názvoch príkazov" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: príkaz nenájdený" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpreter" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "bola prekročená úroveň rekurzie výrazu" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "podtečenie zásobníka rekurzie" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "chyba syntaxe vo výraze" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "pokus o priradenie mimo premennej" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "chyba syntaxe vo výraze" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "delenie nulou" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "chyba: chybný expassign token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "pre podmienený výraz sa očakáva „:“" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponent menší ako 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po pre-inkrementácii alebo pre-dekrementácii sa očakáva identifikátor" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "chýba „)“" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "chyba syntaxe: očakáva sa operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "chyba syntaxe: neplatný aritmetický operátor" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "neplatný aritmetický základ" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "hodnota je ako základ príliÅ¡ veľká" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nie je možné pristupovaÅ¥ k rodičovským adresárom" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "nie je možné alokovaÅ¥ nový popisovač súboru pre vstup bashu z fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufer už existuje pre nový fd %d" @@ -1147,153 +1153,158 @@ msgstr "save_bash_input: bufer už existuje pre nový fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rúra" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) v the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) je stále označený ako živý" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: taký pid neexistuje" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signál %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Hotovo" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Zastavené" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Zastavené(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Beží" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Hotovo(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Ukončenie %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Neznámy stav" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(bol uložený výpis pamäte) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid detského procesu (%ld to %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nie je dieÅ¥a tohto shellu" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Neexistuje záznam o procese %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je zastavená" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d už je v pozadí" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurčitému blokovaniu" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: riadok %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (bol uložený výpis pamäte)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd teraz: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: funkcia getpgrp zlyhala" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: riadkový systém" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "v tomto shelli nie je riadenie úloh" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: zlyhal predpoklad: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1302,39 +1313,39 @@ msgstr "" "\r\n" "malloc: %s:%d: zbabraný predpoklad\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "neznámy" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: blok na zozname voľných zaprataný" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: zavolaný s argumentom už uvoľneného bloku" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: veľkosti začiatočného a konečného bloku (chunk) sa líšia" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: veľkosti začiatočného a konečného bloku (chunk) sa líšia" @@ -1376,22 +1387,22 @@ msgstr "%s: chybná Å¡pecifikácia sieÅ¥ovej cesty" msgid "network operations not supported" msgstr "sieÅ¥ové operácie nie sú podporované" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: nemožno zmeniÅ¥ locale (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s): %s" @@ -1409,148 +1420,148 @@ msgstr "Máte novú poÅ¡tu v súbore $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v súbore %s bola prečítaná\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neočakávaná „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný typ inÅ¡trukcie %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na riadku %d oddelený znakom konca riadku (očakávalo sa „%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „%c“" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "neočakávaný koniec súboru počas hľadania „]]“" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "chyba syntaxe v podmienečnom príkaze: neočakávaný token „%s“" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "chyba syntaxe v podmienečnom príkaze" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočakávaný token „%s“, očakávalo sa `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "očakávalo sa `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočakávaný argument „%s“ podmienečného unárneho operátora" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "neočakávaný argument podmienečného unárneho operátora" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočakávaný token „%s“, očakáva sa podmienečný binárny operátor" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "očakáva sa podmienečný binárny operátor" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočakávaný argument „%s“ v podmienečnom binárnom operátore" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "neočakávaný argument v podmienečnom binárnom operátore" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočakávaný token „%c“ v podmienečnom príkaze" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočakávaný token „%s“ v podmienečnom príkaze" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočakávaný token %d v podmienečnom príkaze" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe neďaleko neočakávaného tokenu „%s“" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe neďaleko „%s“" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: neočakávaný koniec súboru" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Na opustenie shellu použite „%s“.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „)“" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "dokončovanie: funkcia „%s“ nebola nájdená" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1560,109 +1571,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: chybný konektor `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neplatný popisovač súboru" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ukazovateľ súboru je NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: neplatný formátovací znak" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "popisovač súboru mimo rozsahu" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné presmerovanie" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie je možné prepísaÅ¥ existujúci súbor" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie je možné vytvoriÅ¥ odkladací súbor pre here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp musí byÅ¥ platný názov adresára" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neplatná voľba" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je adresár" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Nemám meno!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verzia %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1671,53 +1686,53 @@ msgstr "" "Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n" "\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU dlhé voľby:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Voľby shellu:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s alebo -o voľba\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch " "(builtins) shellu.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operácia" @@ -1891,21 +1906,21 @@ msgstr "Neznáme číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámy signál #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substitúcia: chýba „%s“ v %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" @@ -1924,59 +1939,64 @@ msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na zápis" msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie je možné duplikovaÅ¥ pomenovanú rúru %s ako fd %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`”" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: chybná substitúcia" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neplatný počet riadkov" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "„%s“: neplatný názov aliasu" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je null alebo nenastavený" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podreÅ¥azca < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: chybná substitúcia" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2004,12 @@ msgstr "" "budúce verzie shellu budú vynucovaÅ¥ vyhodnocovanie ako aritmetickú " "substitúciu" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`”" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "bez zhody: %s" @@ -2012,107 +2032,107 @@ msgstr "očakávala sa „)“" msgid "`)' expected, found %s" msgstr "očakávala sa „)“, bolo nájdené %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: očakával sa unárny operátor" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: očakával sa binárny operátor" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "chýba „]“" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pri importe definície funkcie „%s“" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) je príliÅ¡ vysoká, nastavujem späť na 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s má null exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "žiadne „=“ v exportstr %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlavička shell_variables nie je kontext funkcie" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chýba kontext global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: hlavička shell_variables nie je dočasný rozsah prostredia" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nemožno otvoriÅ¥ ako SÚBOR" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je mimo rozsahu" @@ -2147,22 +2167,22 @@ msgstr "" "Nie sú poskytované ŽIADNE ZÁRUKY v rozsahu aký povoľuje\n" "aplikovateľné právo.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: nie je možné alokovaÅ¥ %lu bajtov" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" @@ -2382,13 +2402,13 @@ msgstr "umask [-p] [-S] [režim]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 #, fuzzy msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2509,9 +2529,10 @@ msgstr "" "[-c kvantum] [pole]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n počet] [-O začiatok] [-s počet] [-t] [-u fd] [-C " "spätné_volanie] [-c kvantum] [pole]" @@ -2939,11 +2960,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3491,7 +3512,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3526,7 +3547,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3580,7 +3602,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3624,7 +3646,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba.\n" " Ak je použitá voľba -x, vráti sa návratová hodnota PRÍKAZu." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3655,7 +3677,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná JOBSPEC." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3697,7 +3719,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3782,7 +3804,7 @@ msgstr "" " Návratová hodnota:\n" " Ak sa posledný ARG vyhodnotí na 0, let vráti 1; 0 inak sa vráti 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3804,7 +3826,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3877,7 +3899,7 @@ msgstr "" " Vráti 0 ak sa nenarazí pri čítaní nakoniec súboru, nevyprší čas na\n" " čítanie a ako argument -u nebol je zadaný neplatný popisovač." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3898,7 +3920,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti N alebo zlyhá ak shell nevykonáva funkciu či skript." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4070,7 +4092,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4110,7 +4132,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4145,7 +4167,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4185,7 +4207,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4203,7 +4225,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je N záporné alebo väčšie ako $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4227,7 +4249,7 @@ msgstr "" " Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n" " možné SÚBOR načítaÅ¥." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4251,7 +4273,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4413,7 +4435,7 @@ msgstr "" " Vráti 0 ak VÝR vyhodnotí ako pravdivý; zlyhá ako sa VÝR vyhodnotí\n" " ako nepravdivý alebo je zadaný neplatný argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4425,7 +4447,7 @@ msgstr "" " Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" " argument musí byÅ¥ literál „]“, ktorý uzatvára otvárajúcu „[“." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4444,7 +4466,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4524,7 +4546,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4580,7 +4602,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak boli nájdené vÅ¡etky NÁZVY; zlyhá ak nie." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4670,7 +4692,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4704,7 +4726,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4713,13 +4735,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4736,7 +4760,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" " neplatná voľba." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4762,7 +4786,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" " voľba." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4784,7 +4808,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4814,7 +4838,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4849,7 +4873,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4877,7 +4901,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je návratová hodnota RÚRY." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4895,7 +4919,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4932,7 +4956,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4950,7 +4974,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4968,7 +4992,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4991,7 +5015,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÍKAZu." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5016,7 +5040,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5034,7 +5058,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5058,7 +5082,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu obnovenej úlohy." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5076,7 +5100,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 1 ak sa VÝRAZ vyhodnotí na 0; inak vráti 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5124,7 +5148,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 alebo 1 v závislosti na hodnote VÝRAZu." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5228,7 +5252,7 @@ msgstr "" " HISTIGNORE\tBodkočiarkami oddelený zoznam vzoriek, ktoré\n" " \t\tsa používajú na rozhodovanie, či sa príkaz uloží do histórie.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5285,7 +5309,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5336,7 +5360,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5388,14 +5412,14 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5426,7 +5450,7 @@ msgstr "" " Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" " neplatná voľba alebo OPTNAME je vypnuté." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5491,7 +5515,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" " zápise či priradení." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5540,7 +5564,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5560,7 +5584,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5616,7 +5640,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a NÁZOV nemá definovanú\n" " Å¡pecifikáciu dopĺňania." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5691,7 +5715,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na čítanie a\n" " nie je to indexované pole." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5701,9 +5725,15 @@ msgstr "" " \n" " Synonymum k „mapfile“." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novÅ¡ia http://gnu.org/licenses/" +#~ "gpl.html\n" #~ msgid ":" #~ msgstr ":" @@ -5717,23 +5747,6 @@ msgstr "" #~ msgid "times" #~ msgstr "-krát" -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licencia GPLv2+: GNU GPL verzie 2 alebo novÅ¡ia http://gnu.org/licenses/" -#~ "gpl.html\n" - -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" - #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/sl.gmo b/po/sl.gmo index 52935ec88..ba9422b05 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index 9c23fad4f..b757fa01e 100644 --- a/po/sl.po +++ b/po/sl.po @@ -1,139 +1,140 @@ -# Slovenian translation for bash. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Slovenian translation of bash. +# Copyright (C) 2012 - 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Klemen KoÅ¡ir , 2012. -# Andrej ŽnidarÅ¡ič , 2012. -# Damir JerovÅ¡ek , 2012. +# +# Damir JerovÅ¡ek , 2012 - 2013. +# Klemen KoÅ¡ir , 2012 - 2013. # msgid "" msgstr "" -"Project-Id-Version: bash 4.2\n" +"Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2012-05-29 16:17+0100\n" -"Last-Translator: Klemen KoÅ¡ir \n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2013-03-09 20:21+0100\n" +"Last-Translator: Klemen KoÅ¡ir \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "slab podpis polja" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ni mogoče pretvoriti zabeleženega polja v povezano polje" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neveljaven ključ povezanega polja" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ni mogoče dodeliti v ne-Å¡tevilčno kazalo" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ni mogoče ustvariti: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak brez presledka ni `\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "brez zaključka `%c' v %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: manjka ločilnik dvopičja" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:427 +#: braces.c:429 #, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': neveljaven vzdevek" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "urejanje vrstic ni omogočeno" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': neveljavno ime tipkovne razvrstitve" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ni mogoče brati: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': ni mogoče odvezati" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': neznano ime funkcije" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ni vezan na nobeno tipko.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se lahko pokliče s pomočjo " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': ni mogoče odvezati" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "Å¡tevec zanke" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "smiselno samo v `for', `while', ali `until' zanki" @@ -147,163 +148,163 @@ msgstr "" " \n" " Brez EXPR vrne " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME ni nastavljen" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "preveč argumentov" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "ni druge mape" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD ni nastavljen" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "vrstica %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "opozorilo: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: možnost zahteva argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: zahtevan je Å¡tevni argument" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: ni mogoče najti" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: neveljavna možnost" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: neveljavno ime možnosti" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': neveljavno določilo" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "neveljavno osmiÅ¡ko Å¡tevilo" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "neveljavno Å¡estnajstiÅ¡ko Å¡tevilo" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "neveljavno Å¡tevilo" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neveljavno določilo signala" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ni določilo opravila ali neveljavno določilo posla" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: spremenljivka le za branje" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s izven dosega" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s izven dosega" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: ni takÅ¡nega posla" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ni nadzora posla" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ni nadzora posla" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: omejeno" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "omejeno" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ni vgrajena lupina" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "napaka med pisanjem: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "napaka med nastavljanjem atributov terminala: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "napaka med pridobivanjem atributov terminala: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dvoumno določilo posla" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -312,69 +313,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s: neveljavno ime dejanja" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: ni določila dopolnjevanja" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "Opozorilo: možnost -F morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "Opozorilo: možnost -C morda ne bo delovala po pričakovanjih" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "trenutno se ne izvaja funkcija dopolnjevanja" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "se lahko uporabi samo v funkciji" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 -#, fuzzy, c-format +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 +#, c-format msgid "%s: circular name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "`%s': neveljaven vzdevek" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za branje" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: na ta način ni mogoče uničiti spremenljivk polja" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ni mogoče pretvoriti povezanega polja v zabeleženo polje" @@ -408,68 +409,68 @@ msgstr "%s: ni dinamično naloženo" msgid "%s: cannot delete: %s" msgstr "%s: ni mogoče izbrisati: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: je mapa" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: ni običajna datoteka" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ni mogoče izvesti binarne datoteke" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ni mogoče izvesti: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "ni prijavna lupina: uporabite `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Obstajajo ustavljeni posli.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Obstajajo posli, ki se izvajajo.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "najdenega ni nobenega ukaza" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "določilo zgodovine" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ni mogoče odpreti začasne datoteke: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "trenutno" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "posel %d se je pričel brez nadzora" @@ -484,22 +485,21 @@ msgstr "%s: neveljavna možnost -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: možnost zahteva argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "razprÅ¡itev je onemogočena" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: razprÅ¡itvena razpredelnica je prazna\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "zadetki\tukaz\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ključnih besed, ki se ujemajo z ukazi lupine `" @@ -507,7 +507,7 @@ msgstr[1] "Ključna beseda, ki se ujema z ukazi lupine `" msgstr[2] "Ključni besedi, ki se ujemata z ukazi lupine `" msgstr[3] "Ključne besede, ki se ujemajo z ukazi lupine `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -515,12 +515,12 @@ msgstr "" "nobena tema pomoči se ne ujema s `%s'. Poskusite `help help' ali `man -k %" "s' ali `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ni mogoče odpreti: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -541,20 +541,21 @@ msgstr "" "Zvezdica (*) poleg imena pomeni, da je ukaz onemogočen.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "ni mogoče uporabiti več kot eno od -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "položaj zgodovine" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" -msgstr "%s: neveljaven argument omejitve" +msgstr "%s: neveljavno ime možnosti" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: razÅ¡iritev zgodovine je spodletela" @@ -568,16 +569,16 @@ msgstr "%s: inlib je spodletel" msgid "no other options allowed with `-x'" msgstr "druge možnosti niso dovoljene z `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenti morajo biti določila opravila ali posla" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznana napaka" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "izraz je bil pričakovan" @@ -586,69 +587,69 @@ msgstr "izraz je bil pričakovan" msgid "%s: not an indexed array" msgstr "%s: ni zabeleženo polje" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neveljavno določilo opisnika datoteke" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neveljaven opisnik datoteke: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: neveljavno Å¡tetje vrstic" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: neveljaven izvor polja" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neveljaven del povratnega klica" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "prazno ime spremenljivke polja" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "potrebna podpora spremenljivke polja" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': manjka znak oblike" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': neveljavno določilo vrste časa" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': neveljaven znak oblike" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "opozorilo: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "manjka Å¡estnajstiÅ¡ka Å¡tevka za \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "manjka Å¡tevka s podporo unicode za \\%c" @@ -662,19 +663,19 @@ msgstr "ni druge mape" msgid "%s: invalid argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "sklad mape je prazen" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "kazalo sklada mape" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -715,7 +716,7 @@ msgstr "" " -N\tPrikaže Nti vnos s Å¡tetjem z desne strani seznama, prikazan s\n" "\tpomočjo map, ko kličemo brez možnosti, začenÅ¡i z nič." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -761,7 +762,7 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -799,45 +800,45 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neveljavno določilo časovne omejitve" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "napaka med branjem: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "ni mogoče ponastaviti funkcije in spremenljivke hkrati" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: ni mogoče ponastaviti" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ni mogoče ponastaviti: samo za branje %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: ni spremenljivka polja" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: ni funkcija" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: ni mogoče ponastaviti" @@ -846,20 +847,20 @@ msgstr "%s: ni mogoče ponastaviti" msgid "shift count" msgstr "Å¡tetje premika" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "ni mogoče nastaviti in ponastaviti možnosti lupine hkrati" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neveljavno ime možnosti lupine" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "zahtevan je argument imena datoteke" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: datoteke ni mogoče najti" @@ -872,61 +873,61 @@ msgstr "ni mogoče dati v pripravljenost" msgid "cannot suspend a login shell" msgstr "prijavne lupine ni mogoče dati v pripravljenost" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je drugo ime za `%s'\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je ključna beseda lupine\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je razprÅ¡eno (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': slab ukaz" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ni mogoče dobiti omejitve: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "omejitev" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ni mogoče spremeniti omejitve: %s" @@ -945,202 +946,207 @@ msgstr "`%c': neveljaven operator simbolnega načina" msgid "`%c': invalid symbolic mode character" msgstr "`%c': neveljaven znak simbolnega načina" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " vrstica " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "zadnji ukaz: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Prekinjanje ..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "neznana napaka ukaza" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "slaba vrsta ukaza" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "slab povezovalnik" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "slab skok" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: nedoločena spremenljivka" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\apotekla je časovna omejitev med čakanjem na vnos: samodejna odjava\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ni mogoče preusmeriti običajnega vnosa iz /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "napaka cevi" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omejeno: ni mogoče določiti `/' v imenih ukaza" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: ukaza ni mogoče najti" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: slab tolmač" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ni mogoče izvesti binarne datoteke" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vgrajena lupina\n" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ni mogoče podvajati fd %d v fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "stopnja rekurzivnosti izraza presežena" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "prekoračitev spodnje meje sklada rekurzivnosti" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "skladenjska napaka v izrazu" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "poskus dodelitve ne-spremenljivki" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "skladenjska napaka v izrazu" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "delitev z 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "hrošč: slab žeton expassign" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "`:' pričakovano za pogojni izraz" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "eksponent je manjÅ¡i kot 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po predhodnem večanju ali manjÅ¡anju je pričakovano določilo" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "manjka `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "skladenjska napaka: pričakovan operand" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "skladenjska napaka: neveljaven aritmetični operand" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (žeton napake je \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "neveljavna aritmetična zbirka" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "vrednost je prevelika za zbirko" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: napaka izraza\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ni mogoče dostopati do nadrejenih map" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "ni mogoče dodeliti opisnika novih map za vnos bash iz fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" @@ -1149,153 +1155,158 @@ msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: cev pgrp" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razvejen id opravila %d se pojavi v izvajajočem se poslu %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: opravilo %5ld (%s) v the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: id opravila %5ld (%s) je označen kot Å¡e živ" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ni takÅ¡nega določila opravila" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Končano" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Se izvaja" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Končano(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Končaj %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Neznano stanje" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(izpis jedra) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "podrejeno opravilo setpgid (%ld v %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: ni zapisov o opravilu %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posel %d je zaustavljen" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: posel je uničen" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: posel %d se že izvaja v ozadju" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: vklop WNOHANG za preprečitev nedoločenosti bloka" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: vrstica %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (izpis jedra)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd zdaj: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp je spodletel" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: vrstična disciplina" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vrstična disciplina" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ni mogoče nastaviti skupine opravil terminala (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "brez nadzora posla v tej lupini" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: spodletela trditev: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1304,41 +1315,41 @@ msgstr "" "\r\n" "malloc: %s:%d: trditev je bila slabo izpeljana\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "neznano" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: poklican z že sproščenim argumentom bloka" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "" "free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " "razlikujejo" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zaznana prekoračitev spodnje meje; mh_nbytes je izven dosega" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " @@ -1382,22 +1393,22 @@ msgstr "%s: slabo določilo omrežne poti" msgid "network operations not supported" msgstr "omrežno opravilo ni podprto" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s): %s" @@ -1415,147 +1426,147 @@ msgstr "Imate novo poÅ¡to v $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je bila prebrana\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "skladenjska napaka: potreben je aritmetični izraz" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "skladenjska napaka: `;' nepričakovano" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "skladenjska napaka: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: slaba vrsta navodila %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `%c'" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "skladenjska napaka v pogojnem izrazu: nepričakovan žeton `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "skladenjska napaka v pogojnem izrazu" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nepričakovan žeton `%s', pričakovan je bil `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "pričakovan `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nepričakovan argument `%s' do pogojnega enoslovnega operatorja" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "nepričakovan argument do pogojnega enoslovnega operatorja" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nepričakovan žeton `%s', pričakovan je binarni pogojni operator" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "pričakovan je binarni pogojni operator" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nepričakovan argument `%s' do pogojnega binarnega operatorja" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "nepričakovan argument do pogojnega binarnega operatorja" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nepričakovan žeton `%c' v pogojnem ukazu" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nepričakovan žeton `%s' v pogojnem ukazu" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "nepričakovan žeton %d v pogojnem ukazu" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "skladenjska napaka blizu nepričakovanega žetona `%s'" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "skladenjska napaka blizu `%s'" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "skladenjska napaka: nepričakovan konec datoteke" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "skladenjska napaka" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Uporabite \"%s\", če želite zapustiti lupino.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "končano: funkcije `%s' ni mogoče najti" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1565,109 +1576,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: slab povezovalnik `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neveljaven opisnik datoteke" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: prazen kazalec datoteke NULL" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': neveljaven znak oblike" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "opisnik datoteke je izven dosega" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: dvoumna preusmeritev" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ni mogoče prepisati obstoječe datoteke" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omejitev: ni mogoče preusmeriti izhoda" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ni mogoče ustvariti začasne datoteke za here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "napaka preusmeritve: ni mogoče podvajati fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "ni mogoče najti /tmp, ustvarite ga!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti veljavno ime mape" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neveljavna možnost" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: je mapa" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Ni imena!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, različica %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1676,50 +1691,50 @@ msgstr "" "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Dolge možnosti GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Možnosti lupine:\n" -#: shell.c:1938 +#: shell.c:1988 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD ali ukaz -c ali -O shopt_option\t\t(samo sklicevanje)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ali možnost -o\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "VpiÅ¡ite `%s -c \"help set\"' za več podrobnosti o možnostih lupine.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "VpiÅ¡ite `%s -c help' za več podrobnosti o možnostih ukazov lupine.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uporabite ukaz `bashbug' za poročanje hroščev.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neveljavno opravilo" @@ -1893,21 +1908,21 @@ msgstr "Neznan signal #" msgid "Unknown Signal #%d" msgstr "Neznan signal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "slaba zamenjava: ni zaključka `%s' v %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ni mogoče dodeliti seznama članu polja" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" -msgstr "ni mogoče ustvariti pipe za zamenjavo opravila" +msgstr "ni mogoče ustvariti cevi za zamenjavo opravila" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo opravila" @@ -1926,71 +1941,76 @@ msgstr "ni mogoče odpreti imenovane cevi %s za pisanje" msgid "cannot duplicate named pipe %s as fd %d" msgstr "ni mogoče podvajati imenovane cevi %s kot fd %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "ni mogoče ustvariti cevi za zamenjavo ukaza" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo ukaza" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: ni mogoče podvajati cevi kot fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: slaba zamenjava" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: neveljavno Å¡tetje vrstic" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "`%s': neveljaven vzdevek" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parameter je prazen ali pa ni določen" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je prazen ali pa ni določen" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: izraz podniza < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: slaba zamenjava" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ni mogoče dodeliti na tak način" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "prihodnje različice lupine bodo prisilile ocenitev kot aritmetično zamenjavo" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "ni ujemanja: %s" @@ -2013,107 +2033,107 @@ msgstr "pričakovan je `)'" msgid "`)' expected, found %s" msgstr "pričakovan je `)', najden je %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: pričakuje se enosnoven operator" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: pričakuje se binarni operator" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "manjka `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "neveljavna Å¡tevka signala" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: ročnik signala je SIG_DFL, ponovno poÅ¡iljanje %d (%s) sebi" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: slab signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "napaka med uvozom določila funkcije `%s'" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:2432 +#: variables.c:2531 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" +msgstr "" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazen exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neveljaven znak %d v exportstr za %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "ni `=' v exportstr za %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ni vsebine global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ni mogoče odpreti kot DATOTEKO" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: variables.c:5669 +#: variables.c:5912 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s izven dosega" @@ -2146,22 +2166,22 @@ msgstr "To je prosta programska oprema; lahko jo spreminjate in razÅ¡irjate.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Je BREZ KAKRÅ NEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: ni mogoče dodeliti %lu bajtov (%lu bajtov je dodeljenih)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ni mogoče dodeliti %lu bajtov" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov (%lu bajtov dodeljenih)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ni mogoče dodeliti %lu bajtov" @@ -2382,7 +2402,7 @@ msgstr "umask [-p] [-S] [način]" #: builtins.c:177 #, fuzzy -msgid "wait [-n] [id ...]" +msgid "wait [-fn] [id ...]" msgstr "wait [id]" #: builtins.c:181 @@ -2507,9 +2527,10 @@ msgstr "" "c del] [polje]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] " "[-c del] [polje]" @@ -2933,11 +2954,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3482,7 +3503,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3517,7 +3538,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3575,7 +3597,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je podana neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3620,7 +3642,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake. Če se uporabi -x, vrne stanje končanja UKAZA." -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3653,7 +3675,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je dano\n" " DOLOČILO_POSLA." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3696,7 +3718,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3783,7 +3805,7 @@ msgstr "" " Stanje končanja\n" " Če zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0." -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3805,7 +3827,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3876,7 +3898,7 @@ msgstr "" " omejitev prekoračena ali če je dan neveljaven opisnik datotek kot\n" " argument v -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3896,7 +3918,7 @@ msgstr "" " Stanje končanja\n" " Vrne N ali neuspeÅ¡no, če lupina ne izvede funkcije ali skripta." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4069,7 +4091,7 @@ msgstr "" " Stanje končanja\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost." -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4108,7 +4130,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je IME samo\n" " za branje." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4142,7 +4164,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4182,7 +4204,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4200,7 +4222,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je N negativen ali večji kot $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4224,7 +4246,7 @@ msgstr "" " Vrne stanje zadnjega izvrÅ¡enega ukaza v IMENU_DATOTEKE; vrne\n" " neuspeÅ¡no, če IMENA_DATOTEKE ni mogoče brati." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4250,7 +4272,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če nadzor posla ni omogočen ali če pride do\n" " napake." -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4412,7 +4434,7 @@ msgstr "" " Vrne uspeÅ¡no, če IZRAZ ovrednoti prav, neuspeÅ¡no vrne, če IZRAZ \n" " ovrednoti napak ali če je dan neveljaven argument." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4424,7 +4446,7 @@ msgstr "" " To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" " mora biti dobesedni `]' za ujemanje z uklepajem `['." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4443,7 +4465,7 @@ msgstr "" " Stanje končanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4523,7 +4545,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je SIGSPEC neveljaven ali je dana neveljavna " "možnost." -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4581,7 +4603,7 @@ msgstr "" " Vrne uspeÅ¡no, če so vsa IMENA najdena; vrne neuspeÅ¡no, če katero\n" " ni najdeno." -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4673,7 +4695,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4707,7 +4729,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je NAČIN neveljaven ali če je dana neveljavna\n" " možnost." -#: builtins.c:1494 +#: builtins.c:1495 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4716,13 +4738,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4740,7 +4764,7 @@ msgstr "" " Vrne stanje ID-ja; vrne neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1515 +#: builtins.c:1519 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4765,7 +4789,7 @@ msgstr "" " Vrne stanje ID-ja; neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4788,7 +4812,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4819,7 +4843,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4856,7 +4880,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4885,7 +4909,7 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je stanje končanja CEVOVODA." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4903,7 +4927,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4937,7 +4961,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4955,7 +4979,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4973,7 +4997,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4996,7 +5020,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja UKAZA." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5020,7 +5044,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je IME samo za branje." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5038,7 +5062,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5062,7 +5086,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje obnovljenega posla." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5080,7 +5104,7 @@ msgstr "" " Stanje končanja:\n" " Vrne 1, če je IZRAZ enakovreden; sicer vrne 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5134,7 +5158,7 @@ msgstr "" " Stanje končanja:\n" " 0 ali 1, odvisno od vrednosti IZRAZA." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5238,7 +5262,7 @@ msgstr "" " HISTIGNORE\tZ dvopičjem ločen seznam vzorcev, ki so uporabljeni \n" " \t\tza odločanje, kateri ukazi naj se shranijo na seznam zgodovine.\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5295,7 +5319,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5346,7 +5370,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5398,14 +5422,14 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do napake." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5435,7 +5459,7 @@ msgstr "" " Vrne uspeÅ¡no, če je IME_MOŽNOSTI omogočeno; neuspeÅ¡no, če je\n" " dana neveljavna možnost ali če je IME_MOŽNOSTI onemogočeno." -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5501,7 +5525,7 @@ msgstr "" "napake\n" " branja ali dodelitve." -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5553,7 +5577,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5575,7 +5599,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5631,7 +5655,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali pa IME\n" " nima določenega določila dopolnjevanja." -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5709,7 +5733,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost oz. je POLJE samo\n" " za branje ali pa ni zabeleženo polje." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5719,9 +5743,15 @@ msgstr "" " \n" " Je sopomenka za `mapfile'." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejÅ¡e \n" #~ msgid ":" #~ msgstr ":" @@ -5734,17 +5764,3 @@ msgstr "" #~ msgid "times" #~ msgstr "krat" - -#, fuzzy -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." - -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" - -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejÅ¡e \n" diff --git a/po/sr.gmo b/po/sr.gmo index c052db364..85ec67a46 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index f1af8c73b..8a623ea2c 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,13 +1,13 @@ # Serbian translation for bash. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Мирослав Николић , 2014—2015. +# Мирослав Николић , 2014—2016. msgid "" msgstr "" -"Project-Id-Version: bash-4.4-beta1\n" +"Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-12-23 11:31+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-10-01 19:25+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "MIME-Version: 1.0\n" @@ -16,120 +16,121 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "лош индекс низа" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: уклањам атрибут упуте назива" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не могу да претворим пописани низ у придружив" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неисправан кључ придруживог низа" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не могу да доделим у не-бројевни попис" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: мора користити индекс приликом додељивања придруживог низа" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не могу да направим: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "баш_изврши_јуникс_наредбу: не могу да нађем мапу кључа за наредбу" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: први не-празан знак није \"" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "нема затварајућег „%c“ у %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: недостаје раздвојник двотачке" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "ширење заграде: не могу да доделим меморију за „%s“" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "ширење заграде: нисам успео да доделим меморију за %d елемента" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "ширење заграде: нисам успео да доделим меморију за „%s“" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: неисправан назив алијаса" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "уређивање реда није укључено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: неисправан назив мапе кључа" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не могу да читам: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s“: не могу да развежем" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: непознат назив функције" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "„%s“ није привезано ни за један кључ.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "„%s“ не може бити призвано путем" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: не могу да развежем" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "број петљи" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "једино има смисла у петљи „for“, „while“, или „until“" @@ -143,163 +144,162 @@ msgstr "" "\n" " Без „EXPR“, исписује" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "„HOME“ није подешено" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "превише аргумената" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "нема другог директоријума" +msgstr "ништаван директоријум" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "„OLDPWD“ није подешено" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "%d. ред:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "упозорење:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: употреба:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: опција захтева аргумент" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: потребан је бројевни аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не постоји" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: неисправна опција" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: неисправан назив опције" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: није исправан одредник" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "неисправан октални број" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "неисправан хексадецимални број" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "неисправан број" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: неисправна одредба сигнала" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: није пиб или исправна одредба посла" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: променљива само за читање" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: „%s“ је ван опсега" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "„%s“ је ван опсега" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нема таквог посла" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: нема управљања послом" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "нема управљања послом" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: ограничено" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "ограничено" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: није уграђеност шкољке" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "грешка писања: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка подешавања особина терминала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка добављања особина терминала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нејасна одредба посла" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "помоћ није доступна у овом издању" @@ -308,69 +308,69 @@ msgstr "помоћ није доступна у овом издању" msgid "%s: invalid action name" msgstr "%s: неисправан назив радње" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: нема одредбе довршавања" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "упозорење: опција „-F“ можда неће радити како сте очекивали" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "упозорење: опција „-C“ можда неће радити како сте очекивали" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "тренутно не обавља функцију довршавања" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може бити коришћено једино у функцији" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променљива упуте не може бити низ" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: самоупућивање променљиве упуте назива није дозвољено" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: кружна упута назива" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "не можете користити „-f“ да направите функције" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: функција само за читање" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: додела низа цитираног споја је застарела" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: не могу да уништим променљиве низа на овај начин" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не могу да претворим придруживи низ у пописани" @@ -404,68 +404,68 @@ msgstr "%s: није динамички учитано" msgid "%s: cannot delete: %s" msgstr "%s: не могу да обришем: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: је директоријум" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: није обична датотека" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: датотека је превелика" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не могу да извршим бинарну датотеку" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не могу да извршим: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "одјави\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "није шкољка пријављивања: користите „exit“" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Има заустављених послова.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Има покренутих послова.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "нема такве наредбе" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "одредба историјата" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не могу да отворим привремену датотеку: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "текуће" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "посао „%d“ је започет без управљања послом" @@ -480,29 +480,28 @@ msgstr "%s: неисправна опција -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: опција захтева аргумент -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "хеширање је искључено" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: хеш табела је празна\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "покреће\tнаредбу\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Наредбе шкољке које одговарају кључној речи `" msgstr[1] "Наредбе шкољке које одговарају кључним речима `" msgstr[2] "Наредбе шкољке које одговарају кључним речима `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -510,12 +509,12 @@ msgstr "" "нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %" "s“ или „info %s“." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не могу да отворим: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -534,20 +533,21 @@ msgstr "" "Звездица (*) поред назива значи да је наредба искључена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "не могу користити више од једног „-anrw“" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "положај историјата" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: неисправан аргумент" +msgstr "%s: неисправна ознака времена" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: није успело ширење историјата" @@ -561,16 +561,16 @@ msgstr "%s: није успело „inlib“" msgid "no other options allowed with `-x'" msgstr "нису допуштене друге опције уз „-x“" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи морају бити процеси или ИБ-ови посла" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Непозната грешка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "очекиван је израз" @@ -579,69 +579,69 @@ msgstr "очекиван је израз" msgid "%s: not an indexed array" msgstr "%s: није пописани низ" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неисправна одредба описника датотеке" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неисправан описник датотеке: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: неисправан број реда" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: неисправно порекло низа" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неисправна количина опозива" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "празан назив променљиве низа" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "потребна је подршка променљиве низа" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "„%s“: недостаје знак записа" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: неисправна одредба записа времена" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: неисправан знак записа" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "упозорење: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "проблем обраде записа: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "недостаје хексадецимална цифра за \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "недостаје цифра уникода за \\%c" @@ -655,19 +655,19 @@ msgstr "нема другог директоријума" msgid "%s: invalid argument" msgstr "%s: неисправан аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<нема текућег директоријума>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "празан спремник директоријума" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "попис спремника директоријума" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -709,7 +709,7 @@ msgstr "" " -N\tПриказује н-ти унос почевши с десна на списку приказаном\n" "\t директоријумима када се призову без опција, почевши од нуле." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -755,7 +755,7 @@ msgstr "" " \n" " Уграђено „dirs“ приказује спремник директоријума." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -794,45 +794,45 @@ msgstr "" " \n" " Уграђено „dirs“ приказује спремник директоријума." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: неисправна одредба временског истека" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "грешка читања: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "могу једино да „испишем“ из функције или изворног списа" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "не могу истовремено да расподесим функцију и променљиву" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: не могу да расподесим" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не могу да расподесим: „%s“ је само за читање" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: није променљива низа" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: није функција" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не могу да извезем" @@ -841,20 +841,20 @@ msgstr "%s: не могу да извезем" msgid "shift count" msgstr "број помака" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "не могу истовремено да подесим и да расподесим опције шкољке" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неисправан назив опције шкољке" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "потребан је аргумент назива датотеке" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: нисам пронашао датотеку" @@ -867,61 +867,61 @@ msgstr "не могу да обуставим" msgid "cannot suspend a login shell" msgstr "не могу да обуставим шкољку пријављивања" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s је измењен у псеудоним „%s“\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s“ је кључна реч шкољке\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s: је функција\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s: је нарочита уграђеност шкољке\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s: јесте уграђеност шкољке\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "„%s“ јесте „%s“\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s“ је хеширано (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: неисправан аргумент ограничења" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "„%c“: лоша наредба" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не могу да добавим ограничење: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "ограничење" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не могу да изменим ограничење: %s" @@ -940,202 +940,207 @@ msgstr "„%c“: неисправан оператер симболичког msgid "`%c': invalid symbolic mode character" msgstr "„%c“: неисправан знак симболичког режима" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " ред " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "последња наредба: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Прекидам..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ПОДАЦИ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "непозната грешка наредбе" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "лоша врста наредбе" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "лош спајач" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "лош скок" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: несвезана променљива" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aистекло је време чекајући на улаз: сам се одјављујем\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не могу да преусмерим стандардни улаз из „/dev/null:“: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ЗАПИСВРЕМЕНА: „%c“: неисправан знак записа" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "изврши_копроц: копроцес [%d:%s] још увек постоји" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "грешка спојке" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ограничено: не могу да наведем / у називима наредби" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош тумач" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не могу да извршим бинарну датотеку: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: јесте посебна уграђеност" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не могу да удвостручим „fd %d“ у „fd %d“" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "премашен је ниво дубачења израза" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "недоток спремника дубачења" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "садржајна грешка у изразу" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "покушано је додељивање у не-променљиву" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "садржајна грешка у изразу" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "дељење 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "грешка: лош симбол доделе израза" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "„:“ је очекивано за условни израз" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "изложилац је мањи од 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "одредник је очекиван након пре-увећања или пре-умањења" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "недостаје )" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "садржајна грешка: очекиван је операнд" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "садржајна грешка: неисправан аритметички оператор" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (симбол грешке је „%s“)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "неисправна аритметичка основа" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "вредност је превише велика за основу" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка израза\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не могу да приступим родитељском директоријуму" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не могу да поништим режим без-кашњења за фд „%d“" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "не могу да доделим нови описник датотеке за улаз баша из фд „%d“" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: већ постоји међумеморија за нови фд „%d“" @@ -1144,153 +1149,158 @@ msgstr "save_bash_input: већ постоји међумеморија за н msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: „pgrp“ спојка" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "исцепљени пиб „%d“ се јавља у покренутом послу „%d“" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "бришем заустављени посао „%d“ са групом процеса %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процес %5ld (%s) у спојном_реду" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: пиб %5ld (%s) је означен да је још жив" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нема таквог пиб-а" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Урађен" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Заустављен" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Заустављен(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Покренут" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Урађен(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Изађи из „%d“" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Непознато стање" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(језгрени избачај)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "сетпгиб порода (%ld у %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: пиб %ld није пород ове шкољке" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема записа о процесу %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: посао „%d“ је заустављен" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: посао је завршио" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: посао „%dд је већ у позадини" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (језгрени избачај)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(„wd“ сада: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: није успело „getpgrp“" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: дисциплина реда" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина реда" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не могу да подесим групу процеса терминала (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "нема управљања послом у овој шкољци" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: тврдња није успела: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1299,39 +1309,39 @@ msgstr "" "\r\n" "malloc: %s:%d: тврдња је лоше изведена\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "непознато" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: блок на слободном списку је преписан" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: позвана са већ ослобођеним аргументом блока" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: почетна и крајња величина дела се разликују" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: позвана са недодељеним аргументом блока" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: откривена је недовољност тока; mh_n-бајтова је ван опсега" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: почетна и крајња величина дела се разликују" @@ -1373,22 +1383,22 @@ msgstr "%s: лоша одредба путање мреже" msgid "network operations not supported" msgstr "радње мреже нису подржане" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не могу да изменим језик (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не могу да изменим језик (%s): %s" @@ -1406,259 +1416,265 @@ msgstr "Имате нову пошту у $_" msgid "The mail in %s has been read\n" msgstr "Пошта у „%s“ је прочитана\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "садржајна грешка: потребан је аритметички израз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "садржајна грешка: није очекивано „;“" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "садржајна грешка: „((%s))“" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: лоша врста упутства „%d“" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи се „%s“)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: упутсво преусмерења „%d“ је ван опсега" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила НАЈВЕЋУ_ВЕЛИЧИНУ (%" +"lu): ред је скраћен" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "премашен је највећи број „овде-документ“" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "неочекивани крај датотеке приликом тражења „]]“" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "садржајна грешка у условном изразу: неочекивани симбол „%s“" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "садржајна грешка у условном изразу" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочекивани симбол „%s“, очекивана је )" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "очекивана је )" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочекивани аргумент „%s“ условном једночланом оператору" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "неочекивани аргумент условном једночланом оператору" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочекивани симбол „%s“, очекиван је условни двочлани оператор" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "очекиван је условни двочлани оператор" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочекивани аргумент „%s“ условном двочланом оператору" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "неочекивани аргумент условном двочланом оператору" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочекивани симбол „%c“ у условној наредби" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочекивани симбол „%s“ у условној наредби" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочекивани симбол „%d“ у условној наредби" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "садржајна грешка близу неочекиваног симбола „%s“" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "садржајна грешка близу „%s“" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "садржајна грешка: неочекивани крај датотеке" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "садржајна грешка" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Користите „%s“ да напустите шкољку.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "неочекивани крај датотеке приликом тражења поклапајуће )" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "довршавање: нисам нашао функцију „%s“" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: могуће понављање покушаја" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: НИШТАВНА ОДРЕДБА_ДОВРШАВАЊА" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: лош спајач „%d“" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: неисправан описник датотеке" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: НИШТАВАН указивач датотеке" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: неисправан знак записа" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "описник датотеке је ван опсега" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: нејасно преусмерење" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не могу да препишем постојећу датотеку" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограничено: не могу да преусмерим излаз" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не могу да направим привремену датотеку за документ-овде: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не могу да доделим фд променљивој" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "грешка преусмерења: не могу да удвостручим фд" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не могу да нађем „/tmp“, направите га!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ мора бити исправан назив директоријума" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неисправна опција" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не могу да подесим јиб на %d: стварни јиб %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не могу да подесим гиб на %d: стварни гиб %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не могу да покренем прочишћавача; режим прочишћавања је искључен" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: је директоријум" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Немам назив!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "Гну баш, издање %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1667,49 +1683,49 @@ msgstr "" "Употреба:\t%s [Гнуова дуга опција] [опција] ...\n" " \t%s [Гнуова дуга опција] [опција] датотека-списа ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Гнуове дуге опције:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Опције шкољке:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање само)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t„-%s“ или опција „-o“\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Користите наредбу „bashbug“ да известите о грешкама.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Матична страница баша: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "Општа помоћ коришћења Гну софтвера: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: неисправна операција" @@ -1883,21 +1899,21 @@ msgstr "Непознат сигнал #" msgid "Unknown Signal #%d" msgstr "Непознат сигнал #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лоша замена: нема затварајуће „%s“ у „%s“" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не могу да доделим списак члану низа" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "не могу да начиним спојку за замену процеса" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "не могу да начиним пород за замену процеса" @@ -1916,70 +1932,74 @@ msgstr "не могу да отворим именовану спојку „%s msgid "cannot duplicate named pipe %s as fd %d" msgstr "не могу да удвостручим именовану спојку „%s“ као фд %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "лоша замена: нема затварајућег „`“ у „%s“" +msgstr "замена наредбе: занемарих ништавни бајт у улазу" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "не могу да начиним спојку за замену наредбе" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "не могу да начиним пород за замену наредбе" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: не могу да удвостручим спојку као фд 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неисправан назив променљиве за упуту назива" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: лоша замена" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: неисправно посредно ширење" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: неисправан назив променљиве" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметар је ништаван или није подешен" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметар је ништаван или није подешен" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: израз подниске < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: лоша замена" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не могу дадоделим на овај начин" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "будућа издања шкољке ће приморати процену као аритметичку замену" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лоша замена: нема затварајућег „`“ у „%s“" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "нема поклапања: %s" @@ -2002,30 +2022,30 @@ msgstr "очекивана је )" msgid "`)' expected, found %s" msgstr "очекивана је ), а пронађена %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: очекиван је једночлани оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: очекиван је двочлани оператор" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "недостаје ]" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неисправан сигнални број" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: лоша вредност у „trap_list[%d]“: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2033,85 +2053,84 @@ msgstr "" "run_pending_traps: руковалац сигналом је „SIG_DFL“, поново шаљем %d (%s) " "мени самом" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: лош сигнал %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка увоза одреднице функције за „%s“" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "ниво шкољке (%d) је превисок, поново постављам на 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: вредности не може бити додељена вредност" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: неисправан назив променљиве за упуту назива" +msgstr "%s: додељујем цео број упути назива" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variable: нема садржаја функције на текућем досегу" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s има ништавну ниску извоза" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неисправан знак %d у нисци извоза за „%s“" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "нема = у нисци извоза за „%s“" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: глава променљивих шкољке није садржајност функције" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: нема садржаја општих променљивих" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: глава променљивих шкољке није привремени досег окружења" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не могу да отворим као ДАТОТЕКУ" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: неисправна вредност за описник праћења датотеке" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: вреднсот сагласности је ван опсега" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Ауторска права (C) 2015 Задужбина слободног софтвера, Доо." +msgstr "Ауторска права (C) 2016 Задужбина слободног софтвера, Доо." #: version.c:47 version2.c:47 msgid "" @@ -2135,22 +2154,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Нема НИКАКВЕ ГАРАНЦИЈЕ у оквирима дозвољеним законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не могу да доделим %lu бајта (%lu бајта је додељено)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не могу да доделим %lu бајта" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не могу да доделим %lu бајта (%lu бајта је додељено)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могу да доделим %lu бајта" @@ -2277,9 +2296,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [одредба_посла ...] или jobs -x наредба [аргументи]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [одредба_посла ...]" +msgstr "disown [-h] [-ar] [одредба_посла ... | пид ...]" #: builtins.c:134 msgid "" @@ -2362,7 +2380,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [иб ...]" #: builtins.c:181 @@ -2485,9 +2504,10 @@ msgstr "" "опозив] [-c количина] [низ]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c " "количина] [низ]" @@ -2910,6 +2930,7 @@ msgstr "" " Даје излазно стање НАРЕДБЕ, или неуспех ако се НАРЕДБА не пронађе." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2928,11 +2949,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2986,7 +3007,6 @@ msgstr "" " не дође до грешке доделе променљиве." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2994,7 +3014,7 @@ msgid "" msgstr "" "Подешава вредности и атрибуте променљиве.\n" " \n" -" Застарело. Погледајте „help declare“." +" Синоним за „declare“. Погледајте „help declare“." #: builtins.c:538 msgid "" @@ -3477,6 +3497,7 @@ msgstr "" "неисправна опција." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3491,7 +3512,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3526,7 +3547,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3562,9 +3584,9 @@ msgstr "" " -a\t додаје редове историјата из ове сесије у датотеку историјата\n" " -n\t чита све редове историјата који нису прочитани из датотеке " "историјата\n" +" \t\tи додаје их на списак историјата\n" " -r\t чита датотеку историјата и додаје садржај на списак историјата\n" " -w\t пише текући историјат у датотеку историјата\n" -" \t и додаје их на спсак историјата\n" " \n" " -p\t обавља ширење историјата на сваком АРГ-у и приказује резултат\n" " \t без смештања на списак историјата\n" @@ -3585,7 +3607,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не " "дође до грешке." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3631,7 +3653,7 @@ msgstr "" "дође до грешке.\n" " Ако се користи „-x“, даје излазно стање НАРЕДБЕ." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3663,8 +3685,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или " "ОДРЕДБАПОСЛА." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3698,6 +3719,7 @@ msgstr "" " -n сиг\tСИГ је број сигнала\n" " -l\tисписује називе сигнала; ако аргументи прате „-l“ подразумева\n" " \t се да су бројеви сигнала за које називи требају бити исписани\n" +" -L\tсиноним за „-l“\n" " \n" " „Kill“ је уграђеност шкољке из два разлога: омогућава да ИБ-ови послова " "буду\n" @@ -3709,7 +3731,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не " "дође до грешке." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3793,7 +3815,8 @@ msgstr "" " Излазно стање:\n" " Ако се последњи АРГ процени на 0, исписује 1; у супротном даје 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3814,7 +3837,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3893,7 +3916,7 @@ msgstr "" " или ако се не достави неисправан описник датотеке као аргумент опције „-" "u“." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3913,8 +3936,7 @@ msgstr "" " Излазно стање:\n" " Даје N, или неуспех ако шкољка не извршава функцију или спис." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3999,7 +4021,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Подешава или расподешava вредности опција шкољке и положајних параметара.\n" +"Подешава или расподешава вредности опција шкољке и положајних параметара.\n" " \n" " Мења вредност особина шкољке и положајних параметара, или\n" " приказује називе и вредности променљивих шкољке.\n" @@ -4069,8 +4091,8 @@ msgstr "" " по основи када је шкољка међудејствена.\n" " -P Ако је подешено, не решава симболичке везе приликом извршавања\n" " наредби као што је „cd“ која мења текући директоријум.\n" -" -T Ако је подешено, хватање ПРОЧИШЋАВАЊА се наслеђује функцијама " -"шкољке.\n" +" -T Ако је подешено, хватања ПРОЧИШЋАВАЊА и РЕЗУЛТАТА се наслеђују " +"функцијама шкољке.\n" " -- Додељује све преостале аргументе положајним параметрима.\n" " Ако нема преосталих аргумената, положајни параметри се\n" " расподешавају.\n" @@ -4086,7 +4108,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако није дата неисправна опција." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4127,7 +4149,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако је " "НАЗИВ само за читање." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4161,7 +4183,7 @@ msgstr "" " Даје позитиван резултат осим ако је дата неисправна опција или је НАЗИВ " "неисправан." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4203,7 +4225,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако је " "НАЗИВ неисправан." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4221,7 +4243,7 @@ msgstr "" " Излазно стање:\n" " Резултати су успешни осим ако N није негативно иливеће од $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4245,7 +4267,7 @@ msgstr "" " Даје стање последње извршене наредбе у ДАТОТЕЦИ; не успева\n" " ако назив ДАТОТЕКЕ не може бити прочитан." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4270,7 +4292,7 @@ msgstr "" " Даје позитиван резултат осим ако није укључено управљање послом или ако " "не дође до грешке." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4434,7 +4456,7 @@ msgstr "" "ИЗРАЗ процени\n" " на нетачно или ако је дат неисправан аргумент." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4446,7 +4468,7 @@ msgstr "" " Ово је синоним за уграђеност „test“, али последњи аргумент мора\n" " бити дословна ], да поклопи отворену [." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4465,7 +4487,7 @@ msgstr "" " Излазно стање:\n" " Увек успешно." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4548,7 +4570,7 @@ msgstr "" " Даје позитиван резултат осим за неисправну ОДРЕДБА_СИГНАЛА или за " "неисправну опцију." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4608,7 +4630,7 @@ msgstr "" " Даје позитиван резултат ако су пронађени сви НАЗИВИ; неуспех ако ниједан " "није пронађен." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4703,7 +4725,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4737,7 +4759,8 @@ msgstr "" " Даје позитиван резултат осим ако је РЕЖИМ неисправан или ако је дата " "неисправна опција." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4745,13 +4768,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4770,7 +4795,7 @@ msgstr "" " Исписује стање последњег ИБ-а; неуспех ако је ИБ неисправан или ако је\n" " дата неисправна опција." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4797,7 +4822,7 @@ msgstr "" "дата\n" " неисправна опција." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4819,7 +4844,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4850,7 +4875,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4886,7 +4911,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4915,7 +4940,7 @@ msgstr "" " Излазно стање:\n" " Стање резултата јесте стање резултата СПОЈНОГРЕДА." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4933,7 +4958,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4971,7 +4996,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4989,7 +5014,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5007,8 +5032,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5028,9 +5052,9 @@ msgstr "" " Основни НАЗИВ је „COPROC“.\n" " \n" " Излазно стање:\n" -" Даје излазно стање НАРЕДБЕ." +" Наредба копроцеса даје излазно стање 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5056,7 +5080,7 @@ msgstr "" " Излазно стање:\n" " Даје позитиван резултат осим ако је НАЗИВ само за читање." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5074,7 +5098,7 @@ msgstr "" " Излазно стање:\n" " Исписује стање последње извршене наредбе." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5098,7 +5122,7 @@ msgstr "" " Излазно стање:\n" " Даје стање настављеног посла." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5116,7 +5140,7 @@ msgstr "" " Излазно стање:\n" " Даје 1 ако се ИЗРАЗ процени на 0; у супротном даје 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5169,7 +5193,7 @@ msgstr "" " Излазно стање:\n" " 0 или 1 у зависности од вредност ИЗРАЗА." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5297,7 +5321,7 @@ msgstr "" " о наредбама које требају бити сачуване на списку " "историјата.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5356,7 +5380,7 @@ msgstr "" "замена\n" " директоријума не успе." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5409,7 +5433,7 @@ msgstr "" "измена\n" " директоријума не успе." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5464,14 +5488,14 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5503,7 +5527,7 @@ msgstr "" "дата\n" " неисправна опција или ако је НАЗИВ_ОПЦИЈЕ искључен." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5570,7 +5594,7 @@ msgstr "" " Даје позитиван резултат осим ако није дата неисправна опција или ако не\n" " дође до грешке писања или доделе." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5619,7 +5643,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5640,7 +5664,7 @@ msgstr "" " Даје позитиван резултат осим ако се не достави неисправна опција или ако " "не дође до грешке." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5696,7 +5720,7 @@ msgstr "" "НАЗИВ\n" " нема одређену одредбу довршавања." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5777,7 +5801,7 @@ msgstr "" "НИЗ само\n" " за читање или није индексирани низ." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/sv.gmo b/po/sv.gmo index ba977e8da..fbd5aa6df 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 7ae3f0d6f..54ebc25fe 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,138 +1,140 @@ # Swedish translation of bash -# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015. # -# $Revision: 1.20 $ +# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016. +# +# $Revision: 1.22 $ msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-11-01 10:54+0100\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-17 12:29+0200\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sv\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "felaktigt vektorindex" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: tar bort attributet namnreferens" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: det går inte att konvertera en indexerad vektor till associativ" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ogiltig nyckel till associativ vektor" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: det går inte att tilldela till ickenumeriska index" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: måste använda index vid tilldelning av associativ vektor" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: det går inte att skapa: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: det går inte att hitta en tangentbindning för " "kommandot" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: första ickeblanka tecknet är inte '\"'" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "ingen avslutande ”%c” i %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolonseparator saknas" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "klammerexpansion: kan inte allokera minne för %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "klammerexpansion: misslyckades att allokera minne för %d element" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "klammerexpansion: misslyckades att allokera minne för ”%s”" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "”%s”: ogiltigt aliasnamn" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "radredigering är inte aktiverat" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "”%s”: ogiltigt tangentbindningsnamn" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: det går inte att läsa: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "”%s”: det går inte att avbinda" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "”%s”: okänt funktionsnamn" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s är inte bundet till några tangenter.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kan anropas via " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "”%s”: det går inte att avbinda" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "slingräknare" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "endast meningsfullt i en ”for”-, ”while”- eller ”until”-slinga" @@ -146,163 +148,162 @@ msgstr "" " \n" " Utan UTTR, returnerar " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME är inte satt" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "för många argument" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "ingen annan katalog" +msgstr "null-katalog" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD är inte satt" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "rad %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "varning: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: användning: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: flaggan kräver ett argument" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeriskt argument krävs" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: finns inte" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: ogiltig flagga" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: ogiltigt flaggnamn" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "”%s”: inte en giltig identifierare" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "ogiltigt oktalt tal" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "ogiltigt hexadecimalt tal" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "ogiltigt tal" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ogiltig signalspecifikation" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "”%s”: inte en pid eller giltig jobbspecifikation" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: endast läsbar variabel" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s utanför giltigt intervall" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argument" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s utanför giltigt intervall" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: inget sådant jobb" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbstyrning" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "ingen jobbstyrning" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: begränsat" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "begränsat" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: inte inbyggt i skalet" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "skrivfel: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "fel när terminalattribut ställdes in: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "fel när terminalattribut hämtades: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig jobbspecifikation" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "hjälp är inte tillgängligt i denna version" @@ -311,69 +312,69 @@ msgstr "hjälp är inte tillgängligt i denna version" msgid "%s: invalid action name" msgstr "%s: ogiltigt åtgärdsnamn" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen kompletteringsspecifikation" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "kör inte en kompletteringsfunktion" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "kan endast användas i en funktion" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: en referensvariabel kan inte vara en vektor" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: att en namnreferensvariabel självrefererar är inte tillåtet" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: cirkulär namnreferens" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: ogiltigt variabelnamn för referens" +msgstr "”%s”: ogiltigt variabelnamn för referens" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "det går inte att använda ”-f” för att göra funktioner" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: endast läsbar funktion" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: det går inte att förstöra vektorvariabler på detta sätt" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: det går inte att konvertera en associativ vektor till indexerad" @@ -407,68 +408,68 @@ msgstr "%s: inte dynamiskt laddad" msgid "%s: cannot delete: %s" msgstr "%s: kan inte ta bort: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: är en katalog" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: inte en normal fil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: filen är för stor" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: det går inte att köra binär fil" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan inte köra: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "utloggning\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "inte ett inloggningsskal: använd ”exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Det finns stoppade jobb.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Det finns körande jobb.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "hittar inget kommando" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "historiespecifikation" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: det går inte att öppna temporärfil: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "aktuell" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "jobb %d startade utan jobbstyrning" @@ -483,28 +484,27 @@ msgstr "%s: ogiltig flagga -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "hashning avslaget" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hashtabellen tom\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "träffar\tkommando\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandon som matchar nyckelordet '" msgstr[1] "Skalkommandon som matchar nyckelorden '" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -512,12 +512,12 @@ msgstr "" "inget hjälpämne matchar ”%s”. Prova ”help help” eller ”man -k %s” eller " "”info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: det går inte att öppna: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -537,20 +537,21 @@ msgstr "" "En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "det går inte att använda mer än en av -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "historieposition" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: ogiltigt argument" +msgstr "%s: ogiltig tidsstämpel" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: historieexpansionen misslyckades" @@ -564,16 +565,16 @@ msgstr "%s: inlib misslyckades" msgid "no other options allowed with `-x'" msgstr "inga andra flaggor är tillåtna med ”-x”" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argument måste vara processer eller jobb-id:n" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Okänt fel" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "uttryck förväntades" @@ -582,69 +583,69 @@ msgstr "uttryck förväntades" msgid "%s: not an indexed array" msgstr "%s: inte en indexerad vektor" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ogiltig filbeskrivarspecifikation" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ogiltig filbeskrivare: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: ogiltigt radantal" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: ogiltig vektorstart" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ogiltigt kvantum för återanrop" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tomt vektorvariabelnamn" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "stöd för vektorvariabler krävs" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "”%s”: formateringstecken saknas" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "”%c”: ogiltig specifikation av tidsformat" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: ogiltigt formateringstecken" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "varning: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "formattolkningsproblem: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "hexadecimal siffra saknas för \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffra saknas för \\%c" @@ -658,19 +659,19 @@ msgstr "ingen annan katalog" msgid "%s: invalid argument" msgstr "%s: ogiltigt argument" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "katalogstacken är tom" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "katalogstackindex" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -712,7 +713,7 @@ msgstr "" " -N\tVisa den N:e posten räknat från höger i listan som visas\n" "\tav dirs när det anropas utan flaggor, räknat från noll." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -758,7 +759,7 @@ msgstr "" " \n" " Den inbyggda ”dirs” visar katalogstacken." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -796,46 +797,46 @@ msgstr "" " \n" " Den inbyggda ”dirs” visar katalogstacken." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ogiltig tidsgränsspecifikation" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "läsfel: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "det går bara att göra ”return” från en funktion eller källinläst skript" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "det går inte att samtidigt ta bort en funktion och en variabel" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: det går inte att ta bort tilldelning" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: det går inte att ta bort tilldelning: endast läsbar %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: inte en vektorvariabel" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: inte en funktion" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: det går inte att exportera" @@ -844,20 +845,20 @@ msgstr "%s: det går inte att exportera" msgid "shift count" msgstr "skiftantal" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "det går inte att sätta och ta bort skalflaggor samtidigt" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ogiltigt skalflaggsnamn" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "filnamnsargument krävs" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: filen finns inte" @@ -870,61 +871,61 @@ msgstr "det går inte att suspendera" msgid "cannot suspend a login shell" msgstr "det går inte att suspendera ett inloggningsskal" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s är ett alias för ”%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s är ett nyckelord i skalet\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s är en funktion\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s är en special inbyggd i skalet\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s är inbyggt i skalet\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s är %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s är hashad (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ogiltigt gränsargument" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "”%c”: felaktigt kommando" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan inte avgöra gränsen: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "gräns" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan inte ändra gränsen: %s" @@ -943,203 +944,208 @@ msgstr "”%c”: ogiltig operator för symboliskt läge" msgid "`%c': invalid symbolic mode character" msgstr "”%c”: ogiltigt tecken för symboliskt läge" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " rad " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "senaste kommando: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Avbryter..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "INFORMATION: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "okänt kommandofel" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "felaktig kommandotyp" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "felaktig anslutning" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "felaktigt hopp" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: obunden variabel" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atiden gick ut i väntan på indata: automatisk utloggning\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "det går inte att omdirigera standard in från /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ”%c”: ogiltigt formateringstecken" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] finns fortfarande" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "rörfel" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: maximal nästning av eval överskriden (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: maximal nästning av source överskriden (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximal nästning av funktioner överskriden (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begränsat: det går inte att ange ”/” i kommandonamn" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: kommandot finns inte" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: felaktig tolk" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: det går inte att köra binär fil: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "”%s”: är en speciell inbyggd" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "det går inte att duplicera fb %d till fb %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "rekursionsnivå i uttryck överskriden" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "underspill i rekursionsstacken" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "syntaxfel i uttrycket" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "försök att tilldela till en icke-variabel" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "syntaxfel i uttrycket" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "division med 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "fel: felaktig expassign-symbol" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "”:” förväntades i villkorligt uttryck" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "exponenten är mindre än 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "”)” saknas" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "syntaxfel: en operand förväntades" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfel: ogiltig aritmetisk operator" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (felsymbol är ”%s”)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "ogiltig aritmetisk bas" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "värdet är för stort för basen" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: uttrycksfel\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: det går inte att komma åt föräldrakatalogen" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "det går inte att återställa fördröjningsfritt läge för fb %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "det går inte att allokera en ny filbeskrivare för bashindata från fb %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffert finns redan för ny fb %d" @@ -1148,153 +1154,158 @@ 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:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "avgrenad pid %d finns i körande jobb %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "tar bort stoppat jobb %d med processgrupp %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) i the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen sådan pid" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Klart" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Stoppad" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Stoppad(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Kör" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Klart(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Avslut %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Okänd status" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(minnesutskrift skapad) " -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (ak: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "barns setpgid (%ld till %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld är inte ett barn till detta skal" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen uppgift om process %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: jobb %d är stoppat" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: jobbet har avslutat" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d är redan i bakgrunden" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slår på WNOHANG för att undvika oändlig blockering" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: rad %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (minnesutskrift skapad)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(ak nu: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp misslyckades" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: linjedisciplin" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "det går inte att sätta terminalprocessgrupp (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "ingen jobbstyrning i detta skal" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: försäkran misslyckades: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1303,39 +1314,39 @@ msgstr "" "\r\n" "malloc: %s:%d: försäkran gick fel\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "okänd" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: block på frilista överskrivet" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: anropad med redan frigjort block som argument" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: anropad med oallokerat block som argument" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: start- och slutstyckesstorlekar skiljer" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: anropat med oallokerat block som argument" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- och slutstyckesstorlekar skiljer" @@ -1377,22 +1388,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg" msgid "network operations not supported" msgstr "nätverksoperationer stöds inte" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: det går inte att ändra lokal (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: det går inte att ändra lokal (%s): %s" @@ -1410,260 +1421,266 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s har lästs\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "syntaxfel: aritmetiskt uttryck krävs" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "syntaxfel: oväntat ”;”" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfel: ”((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: felaktig instruktionstyp %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "här-dokument på rad %d avgränsas av filslut (ville ha ”%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: omdirigeringsinstruktion ”%d” utanför giltigt intervall" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden " +"avhuggen" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "maximalt antal av här-dokument överskridet" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "oväntat filslut vid sökning efter matchande ”%c”" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "oväntat filslut vid sökning efter ”]]”" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfel i villkorligt uttryck: oväntad symbol ”%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "syntaxfel i villkorligt uttryck" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "oväntad symbol ”%s”, ”)” förväntades" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "”)” förväntades" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "oväntat argument ”%s” till villkorlig unär operator" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "oväntat argument till villkorlig unär operator" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "oväntad symbol ”%s”, villkorlig binär operator förväntades" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "villkorlig binär operator förväntades" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "oväntat argument ”%s” till villkorlig binär operator" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "oväntat argument till villkorlig binär operator" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "oväntad symbol ”%c” i villkorligt kommando" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "oväntad symbol ”%s” i villkorligt kommando" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "oväntad symbol %d i villkorligt kommando" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfel nära den oväntade symbolen ”%s”" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfel nära ”%s”" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "syntaxfel: oväntat filslut" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "syntaxfel" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Använd ”%s” för att lämna skalet.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "oväntat filslut när matchande ”)” söktes" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "komplettering: funktion ”%s” finns inte" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: möjlig slinga av omförsök" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: felaktig anslutning ”%d”" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: ogiltig filbeskrivare" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL-filpekare" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: ogiltigt formateringstecken" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "filbeskrivare utanför giltigt intervall" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig omdirigering" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: det går inte att skriva över en existerande fil" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begränsat: det går inte att omdirigera utdata" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "det går inte att skapa temporärfil för här-dokument: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: det går inte att tilldela fb till variabel" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "omdirigeringsfel: det går inte att duplicera fb" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "hittade inte /tmp, var god skapa!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp måste vara ett giltigt katalognamn" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ogiltig flagga" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "det går sätta uid till %d: effektiv uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "det går inte att sätta gid till %d: effektiv gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: är en katalog" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Jag har inget namn!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1672,52 +1689,52 @@ msgstr "" "Användning:\t%s [GNU lång flagga] [flagga] ...\n" "\t\t%s [GNU lång flagga] [flagga] skriptfil ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU långa flaggor:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Skalflaggor:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s eller -o flagga\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Skriv ”%s -c 'help set'” för mer information om skalflaggor.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Skriv ”%s -c help” för mer information om inbyggda skalkommandon.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Använd kommandot ”bashbug” för att rapportera fel.\n" "Skicka synpunkter på översättningen till .\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "bash hemsida: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Allmän hjälp i att använda GNU-program: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ogiltig operation" @@ -1891,21 +1908,21 @@ msgstr "Okänd signal nr " msgid "Unknown Signal #%d" msgstr "Okänd signal nr %d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "felaktig substitution: ingen avslutande ”%s” i %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: det går inte att tilldela listor till vektormedlemmar" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "det går inte att skapa rör för processubstitution" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "det går inte att skapa barn för processubstitution" @@ -1924,59 +1941,63 @@ msgstr "det går inte att öppna namngivet rör %s för skrivning" msgid "cannot duplicate named pipe %s as fd %d" msgstr "det går inte att duplicera namngivet rör %s som fb %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "felaktig ersättning: ingen avslutande ”`” i %s" +msgstr "kommandoersättning: ignorerade nollbyte i indata" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "det går inte att skapa rör för kommandosubstitution" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "det går inte att skapa barn för kommandosubstitution" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: det går inte att duplicera rör som fb 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ogiltigt variabelnamn för referens" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: felaktig substitution" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: felaktig indirekt expansion" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: felaktigt variabelnamn" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametern tom eller inte satt" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametern tom eller inte satt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: delstränguttryck < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: felaktig substitution" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: det går inte att tilldela på detta sätt" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1984,12 +2005,12 @@ msgstr "" "framtida versioner av skalet kommer att framtvinga evaluering som en " "aritmetisk substitution" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "felaktig ersättning: ingen avslutande ”`” i %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "ingen matchning: %s" @@ -2012,30 +2033,30 @@ msgstr "”)” förväntades" msgid "`)' expected, found %s" msgstr "”)” förväntades, fann %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: unär operator förväntades" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: binär operator förväntades" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "”]” saknas" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "ogiltigt signalnummer" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2043,87 +2064,86 @@ msgstr "" "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig " "själv" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: felaktig signal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "fel vid import av funktionsdefinition för ”%s”" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalnivå (%d) för hög, återställer till 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabeln får inte tilldelas ett värde" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: ogiltigt variabelnamn för referens" +msgstr "%s: tilldelar ett heltal till en namnreferens" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s har tom exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ogiltigt tecken %d i exportstr för %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "inget ”=” i exportstr för %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: huvudet på shell_variables är inte en funktionskontext" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen kontext global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: huvudet på shell_variables är inte en temporär omgivningsräckvidd" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: går inte att öppna som FILE" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ogiltigt värde för spårningsfilbeskrivare" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Copyright © 2015 Free Software Foundation, Inc." +msgstr "Copyright © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2147,22 +2167,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Det finns INGEN GARANTI, så långt lagen tillåter." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: det går inte att allokera %lu byte (%lu byte allokerade)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: det går inte att allokera %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: det går inte att allokera %lu byte (%lu byte allokerade)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: det går inte att allokera %lu byte" @@ -2290,9 +2310,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [jobbspec ...]" +msgstr "disown [-h] [-ar] [jobbspec … | pid …]" #: builtins.c:134 msgid "" @@ -2375,7 +2394,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [rättigheter]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id …]" #: builtins.c:181 @@ -2498,9 +2518,10 @@ msgstr "" "återanrop] [-c kvanta] [vektor]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C återanrop] [-c " "kvanta] [vektor]" @@ -2919,6 +2940,7 @@ msgstr "" " finns." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2937,11 +2959,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2995,7 +3017,6 @@ msgstr "" " variabeltilldelning inträffar." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3003,7 +3024,7 @@ msgid "" msgstr "" "Sätt variabelvärden och -attribut.\n" " \n" -" Föråldrat. Se ”help declare”." +" En synonym för ”declare”. Se ”help declare”." #: builtins.c:538 msgid "" @@ -3479,6 +3500,7 @@ msgstr "" " Returnerar framgång om inte NAMN inte hittas eller en ogiltig flagga ges." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3493,7 +3515,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3529,7 +3551,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3560,13 +3583,13 @@ msgstr "" " \n" " Flaggor:\n" " -c\tnollställ historielistan genom att ta bort alla poster\n" -" -d avstånd\tta bort historieposten på avstånd AVSTÅND\n" +" -d avstånd\tta bort historieposten på position AVSTÅND\n" " \n" " -a\tlägg till historierader från denna session till historiefilen\n" " -n\tläs alla historierader som inte redan lästs från historiefilen\n" +" \t\toch lägg till dem till historielistan\n" " -r\tläs historiefilen och lägg till innehållet till historielistan\n" -" -w\tskriv den aktuella historien till historiefilen och lägg till\n" -" \t\tdem till historielistan\n" +" -w\tskriv den aktuella historien till historiefilen\n" " \n" " -p\tutför historieexpansion på varje ARG och visa resultatet utan\n" " \t\tatt lagra det i historielistan\n" @@ -3584,7 +3607,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3628,7 +3651,7 @@ msgstr "" "inträffar.\n" " Om -x används returneras slutstatus från KOMMANDO." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3658,8 +3681,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga eller JOBBSPEC ges." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3693,6 +3715,7 @@ msgstr "" " -n sig\tSIG är ett signalnummer\n" " -l\tlista signalnamnen. Om argument följer ”-l” antas de vara\n" " \t\tsignalnummer som namn skall listas för\n" +" -L\tsynonym för -l\n" " \n" " Kill är inbyggt i skalet av två skäl: det tillåter att jobb-id:n " "används\n" @@ -3704,7 +3727,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga angivits eller ett fel\n" " inträffar." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3792,7 +3815,8 @@ msgstr "" " Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 " "annars." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3813,7 +3837,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3890,7 +3914,7 @@ msgstr "" "eller\n" " en ogiltig filbeskrivare ges som argument till -u." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3911,8 +3935,7 @@ msgstr "" " Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" " skript." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4067,7 +4090,7 @@ msgstr "" " standard när skalet är interaktivt.\n" " -P Om satt löses inte symboliska länkar upp när kommandon såsom cd\n" " körs som ändrar aktuell katalog.\n" -" -T Om satt ärvs DEBUG-fällan av skalfunktioner.\n" +" -T Om satt ärvs DEBUG och RETURN-fällorna av skalfunktioner.\n" " -- Tilldela eventuella återstående argument till " "positionsparametrar.\n" " Om det inte finns några återstående argument nollställs\n" @@ -4086,7 +4109,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4126,7 +4149,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN endast är\n" " läsbart." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4159,7 +4182,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4197,7 +4220,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4216,7 +4239,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte N är negativt eller större än $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4240,7 +4263,7 @@ msgstr "" " Returnerar status på det sista kommandot som körs i FILNAMN, misslyckas\n" " om FILNAMN inte kan läsas." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4266,7 +4289,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4426,7 +4449,7 @@ msgstr "" " Returnerar framgång om UTTR beräknas till sant. Misslyckas ifall UTTR\n" " beräknas till falskt eller ett ogiltigt argument ges." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4438,7 +4461,7 @@ msgstr "" " Detta är en synonym till det inbyggda ”test”, men det sista argumentet\n" " måste vara en bokstavlig ”]”, för att matcha den inledande ”[”." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4458,7 +4481,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4536,7 +4559,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4591,7 +4614,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om alla NAMNen finns, misslyckas om något inte finns." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4688,7 +4711,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga anges eller ett fel " "inträffar." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4724,7 +4747,8 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4732,13 +4756,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4759,7 +4785,7 @@ msgstr "" " Returnerar status på den sista ID, misslyckas ifall ID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4783,7 +4809,7 @@ msgstr "" " Returnerar status på den sista PID, misslyckas ifall PID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4805,7 +4831,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status för det sist exekverade kommandot." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4835,7 +4861,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4870,7 +4896,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4899,7 +4925,7 @@ msgstr "" " Slutstatus:\n" " Returstatusen är returstatusen från RÖR." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4917,7 +4943,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4952,7 +4978,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status från det sist exekverade kommandot." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4970,7 +4996,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4988,8 +5014,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5009,9 +5034,9 @@ msgstr "" " ”COPROC”.\n" " \n" " Slutstatus:\n" -" Returnerar statusen från KOMMANDO." +" Kommandot coproc returnerar slutstatusen 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5034,7 +5059,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgång om inte NAMN endast är läsbart." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5052,7 +5077,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen från det sist exekverade kommandot." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5076,7 +5101,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen på det återupptagna jobbet." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5094,7 +5119,7 @@ msgstr "" " Slutstatus:\n" " Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5146,7 +5171,7 @@ msgstr "" " Slutstatus:\n" " 0 eller 1 beroende på värdet av UTTRYCK." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5251,7 +5276,7 @@ msgstr "" " HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n" " \t\tbestämma vilka kommandon som skall sparas i historielistan.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5309,7 +5334,7 @@ msgstr "" " Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5359,7 +5384,7 @@ msgstr "" " Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5412,14 +5437,14 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5448,7 +5473,7 @@ msgstr "" " Returnerar framgång om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" " flagga ges eller FLGNAMN är avaktiverat." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5516,7 +5541,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett skriv-\n" " eller tilldelningsfel inträffar." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5566,7 +5591,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5588,7 +5613,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5646,7 +5671,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller NAMN inte har\n" " någon kompletteringsspecifikation definierad." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5723,7 +5748,7 @@ msgstr "" " Returnerar framgång om inte en ogiltig flagga ges eller VEKTOR är\n" " oföränderlig eller inte en indexerad vektor." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5732,18 +5757,3 @@ msgstr "" "Läs rader från en fil till en vektorvariabel.\n" " \n" " En synonym till ”mapfile”." - -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." - -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" diff --git a/po/tr.gmo b/po/tr.gmo index a4a89c6fe..ed77da0c7 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index a144d8224..ea4ab4b54 100644 --- a/po/tr.po +++ b/po/tr.po @@ -3,135 +3,136 @@ # This file is distributed under the same license as the bash package. # # Nilgün Belma Bugüner , 2006. -# Volkan Gezer , 2013, 2014. +# Volkan Gezer , 2013, 2014, 2017. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2014-10-24 16:11+0200\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2017-05-05 11:49+0100\n" "Last-Translator: Volkan Gezer \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" -"X-Generator: Lokalize 1.5\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "hatalı dizi indisi" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: removing nameref niteliği kaldırılıyor" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: geçersiz ilişkisel dizi anahtarı" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: sayısal olmayan indise atama yapılamaz" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: oluşturulamıyor: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: boşluk olmayan ilk karakter `\"' değil" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s içinde kapatan `%1$c' yok" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: ikinokta imi eksik" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "destek genişletme: %s için bellek ayrılamıyor" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "destek genişletme: %d öge için bellek ayrılamıyor" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "destek genişletme: `%s' için bellek ayrılamıyor" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': geçersiz takma isim" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "satır düzenleme etkin değil" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': kısayol ismi geçersiz" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: okunamıyor: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': kısayol değiştirilemiyor" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': işlev ismi bilinmiyor" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s için bir kısayol atanmamış.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s bunun üzerinden çağrılabilir: " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': kısayol değiştirilemiyor" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "döngü sayısı" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı" @@ -145,234 +146,233 @@ msgstr "" " \n" " İFADE olmadan, şu döner " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME atanmamış" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "çok fazla argüman" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "yığıtın tepesinde kalan dizine geçer." +msgstr "boş dizini" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD boş" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "satır %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "uyarı: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: kullanım: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: seçenek bir argüman gerektirir" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: sayısal argüman gerekli" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s:yok" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: seçenek geçersiz" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: seçenek ismi geçersiz" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': geçerli bir belirteç değil" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "geçersiz sekizli sayı" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "geçersiz onaltılık sayı" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "geçersiz sayı" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sinyal belirtimi geçersiz" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: salt okunur değişken" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s aralık dışı" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "argüman" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s aralık dışı" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: böyle bir iş yok" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: iş denetimi yok" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "iş denetimi yok" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: kısıtlı" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "kısıtlı" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bir kabuk yerleşiği değil" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "yazma hatası: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "uçbirim nitelikleri ayarlanırken hata: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "uçbirim nitelikleri alınırken hata: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: geçerli dizin alınırken hata: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: iş belirtimi belirsiz" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" -msgstr "" +msgstr "bu sürümde yardım kullanılamıyor" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: eylem adı geçersiz" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: tamamlama belirtimi yok" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "şuan tamamlama işlevi çalıştırılmıyor" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "sadece bir işlevde kullanılabilir" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referans değeri bir dizi olamaz" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: çembersel isim referansı" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" +msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "işlev yapmak için `-f' kullanılamaz" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: salt okunur işlev" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: dizi değişkenleri bu yolla iptal edilemez" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez" @@ -394,7 +394,7 @@ msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "" +msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi" #: builtins/enable.def:512 #, c-format @@ -406,68 +406,68 @@ msgstr "%s: özdevimli olarak yüklenmemiş" msgid "%s: cannot delete: %s" msgstr "%s: silinemiyor: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: bir dizin" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: bir dosya değil" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: dosya çok büyük" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ikili dosya çalıştırılamıyor" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: çalıştırılamıyor: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "çıkış\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "oturum açma kabuğu değil: `exit' kullanın" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Durmuş işler var.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Çalışan görevler mevcut.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "komut yok" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "geçmiş belirtimi" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: geçici dosya açılamıyor: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "şimdiki" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "%d. iş, iş denetimsiz başlamış" @@ -482,28 +482,27 @@ msgstr "%s: kuraldışı seçenek -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: seçenek bir argüman gerektirir -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "çitleme iptal edildi" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: çitleme tablosu boş\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "eşleşme\tkomut\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Bu anahtar sözcükle eşleşen komutlar: `" msgstr[1] "Bu anahtar sözcüklerle eşleşen komutlar: `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -511,12 +510,12 @@ msgstr "" "`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " "`info %s'.yazmayı deneyebilirsiniz." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: açılamıyor: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,20 +535,21 @@ msgstr "" "Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "tek bir -anrw kullanılabilir" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "geçmiş konumu" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: geçersiz argüman" +msgstr "%s: geçersiz zaman damgası" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: geçmiş yorumlaması başarısız" @@ -563,16 +563,16 @@ msgstr "%s: inlib başarısız" msgid "no other options allowed with `-x'" msgstr "`-x' ile başka seçenek kullanılamaz" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Bilinmeyen hata" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "ifade bekleniyordu" @@ -581,69 +581,69 @@ msgstr "ifade bekleniyordu" msgid "%s: not an indexed array" msgstr "%s: bir sıralı dizi değil" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: dosya tanıtıcı belirtimi geçersiz" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: dosya tanıtıcı geçersiz: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: geçersiz satır sayısı" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: geçersiz dizi kökeni" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: geçersiz geri çağırım niceliği" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "boş bir dizi değişken adı" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "dizi değişken desteği gerekli" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "`%s': biçim karakteri eksik" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': geçersiz zaman biçimi belirtimi" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "`%c': biçim karakteri geçersiz" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "uyarı: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "biçim ayıklama sorunu: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "\\x için onaltılık rakam eksik" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "evrensel kod rakamı eksik \\%c" @@ -657,19 +657,19 @@ msgstr "başka dizin yok" msgid "%s: invalid argument" msgstr "%s: geçersiz argüman" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "dizin yığını boş" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "dizin yığını indisi" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +711,7 @@ msgstr "" " -N\tDizinler tarafından gösterilen listenin sağından başlayarak\n" "\tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan başlar." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -756,7 +756,7 @@ msgstr "" " \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -794,67 +794,67 @@ msgstr "" " \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: zamanaşımı belirtimi geçersiz" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "okuma hatası: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "bir işlev ve bir değişken aynı anda unset yapılamaz" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: unset yapılamaz" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s:unset yapılamaz: %s salt okunur" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: bir dizi değişkeni değil" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: bir işlev değil" -#: builtins/setattr.def:196 -#, fuzzy, c-format +#: builtins/setattr.def:194 +#, c-format msgid "%s: cannot export" -msgstr "%s: unset yapılamaz" +msgstr "%s: export yapılamıyor" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift sayısı" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: kabuk seçenek ismi geçersiz" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "dosya ismi argüman gerekir" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: dosya yok" @@ -867,61 +867,61 @@ msgstr "engellenemez" msgid "cannot suspend a login shell" msgstr "bir oturum açma kabuğu engellenemez" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s `%s' için takma addır\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s bir kabuk anahtar sözcüğüdür\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s bir işlevdir\n" -#: builtins/type.def:300 -#, fuzzy, c-format +#: builtins/type.def:299 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s bir kabuk yerleşiğidir\n" +msgstr "%s özel bir kabuk yerleşiğidir\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s bir kabuk yerleşiğidir\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s %s'dir\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s çitilmiş (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: sınırlama argümanı geçersiz" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "`%c': hatalı komut" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: sınır alınamıyor: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "sınır" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: sınır değiştirilemiyor: %s" @@ -940,203 +940,208 @@ msgstr "`%c': simgesel kip işleci geçersiz" msgid "`%c': invalid symbolic mode character" msgstr "`%c': simgesel kip karakteri geçersiz" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " satır " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "son komut: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Çıkılıyor..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "BİLGİLENDİR:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "bilinmeyen komut hatası" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "hatalı komut türü" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "hatalı bağlantı" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "hatalı sıçrama" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: bağlanmamış değişken" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] hala mevcut" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "iletişim tüneli hatası" -#: execute_cmd.c:4496 -#, fuzzy, c-format +#: execute_cmd.c:4624 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" +msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:4508 -#, fuzzy, c-format +#: execute_cmd.c:4636 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" +msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: komut yok" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: hatalı yorumlayıcı" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ikili dosya çalıştırılamıyor: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "%s: bir kabuk yerleşiğidir" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d, fd %d olarak yinelenemiyor" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "ifade özyineleme düzeyi aşıldı" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "özyineleme yığıtı alttan taştı" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "ifadede sözdizimi hatası" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "değişken olmayana atama yapmaya çalışıldı" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "ifadede sözdizimi hatası" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "sıfırla bölme" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "yazılım hatası: bad expassign token" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "koşullu ifade için `:' bekleniyordu" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "üs sıfırdan küçük" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "eksik `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "sözdizimi hatası: terim umuluyordu" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "sözdizimi hatası: geçersiz aritmetik işleci" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hata belirtisi \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "geçersiz sayı tabanı" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "değer taban için fazla büyük" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: ifade hatası\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: üst dizinlere erişilemiyor" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: yeni fd %d için tampon zaten var" @@ -1145,153 +1150,158 @@ msgstr "save_bash_input: yeni fd %d için tampon zaten var" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp iletişim tüneli" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "çatallanan pid %d, çalışan iş %d içinde görünüyor" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "durdurulan %2$ld süreç gruplu iş %1$d siliniyor" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld (%s) program kimliği hala canlı olarak işaretli" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: böyle bir pid yok" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Sinyal %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Bitti" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Durdu" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Durdu(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Çalışıyor" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Bitti(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Çıkış %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Bilinmeyen durum" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(çekirdek döküldü)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "alt setpgid (şuradan: %ld şuraya: %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld bu kabuğun bir alt sürecine ait değil" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: süreç %ld için kayıt yok" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: iş %d durdu" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: iş sonlanmış" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: iş %d zaten artalanda" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: satır %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (çekirdek döküldü)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd artık: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp başarısız" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: satır düzeni" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: satır düzeni" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "uçbirim süreç grunu (%d) ayarlanamaz" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "bu kabukta iş denetimi yok" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: kanaat doğrulaması başarısız: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1300,39 +1310,39 @@ msgstr "" "\r\n" "malloc: %s:%d: kanaat doğrulaması battı\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "bilinmeyen" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: zaten serbest bırakılmış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: ayrılmamış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: başlangıç ve son tomar boyutları farklı" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: ayrılmamış blok argümanı ile çağrıldı" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: başlangıç ve son tomar boyutları farklı" @@ -1374,22 +1384,22 @@ msgstr "%s: hatalı ağ yolu belirtimi" msgid "network operations not supported" msgstr "desteklenmeyen ağ işlemleri" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: (%s) diline değiştirilemedi" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: şu dile (%s) değiştirilemedi: %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: yerel (%s) değiştirilemiyor" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: yerel (%s) değiştirilemiyor: %s" @@ -1407,259 +1417,265 @@ msgstr "$_'de yeni postanız var" msgid "The mail in %s has been read\n" msgstr "%s'deki posta okundu\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "sözdizimi hatası: `;' beklenmiyordu" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "sözdizimi hatası: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hatalı yönerge türü %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): " +"satır kırpıldı" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "en fazla buraya belge sayısı aşıldı" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' aranırken beklenmedik dosya sonu" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "koşullu ifadede sözdizimi hatası" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "`)' umuluyordu" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "koşullu iki terimli işleç umuluyordu" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%c'" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%s'" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik %d" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "`%s' yakınında sözdizimi hatası" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "sözdizimi hatası: beklenmeyen dosya sonu" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "sözdizimi hatası" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "completion: `%s' işlevi yok" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: muhtemel yeniden deneme döngüsü" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: hatalı bağlayıcı `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: geçersiz dosya tanımlayıcısı" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: BOŞ dosya işaretçisi" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': geçersiz biçim karakteri" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "dosya tanıtıcı aralık dışında" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: belirsiz yönlendirme" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: mevcut dosyanın üzerine yazılamıyor" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "belge için geçici dosya oluşturulamıyor: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: fd değişkene atanamıyor" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "yönlendirme hatası: fd yinelenemiyor" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "/tmp bulunamadı, lütfen oluşturun!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp geçerli bir dizinin adı olmalıdır" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: geçersiz seçenek" -#: shell.c:1282 -#, fuzzy, c-format +#: shell.c:1299 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" +msgstr "uid %d olarak ayarlanamıyor: etkin uid %d" -#: shell.c:1289 -#, fuzzy, c-format +#: shell.c:1306 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" +msgstr "gid %d olarak ayarlanamıyor: etkin gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "hata ayıklayıcı başlatılamadı, hata ayıklama devre dışı" -#: shell.c:1566 -#, fuzzy, c-format +#: shell.c:1608 +#, c-format msgid "%s: Is a directory" -msgstr "%s: bir dizin" +msgstr "%s: Bir dizin" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Hiç ismim yok!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, sürüm %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1668,54 +1684,55 @@ msgstr "" "Kullanım:\t%s [GNU uzun seçeneği] [seçenek] ...\n" "\t%s [GNU uzun seçeneği] [seçenek] betik-dosyası ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU uzun seçenekleri:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Kabuk seçenekleri:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ya da -o seçeneği\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " "yazın.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Yazılım hatalarını raporlamak için `bashbug' komutunu kullanınız.\n" "Çeviri hatalarını ise adresine bildiriniz.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash ana sayfası: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" +"GNU yazılımı kullanımı hakkında genel yardım: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: geçersiz işlem" @@ -1889,21 +1906,21 @@ msgstr "Bilinmeyen Sinyal #" msgid "Unknown Signal #%d" msgstr "Bilinmeyen Sinyal #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: dizi üyesine liste atanamaz" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "süreç ikamesi için borulama yapılamıyor" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "süreç ikamesi için alt süreç yapılamıyor" @@ -1922,59 +1939,63 @@ msgstr "isimli boru %s yazmak için açılamıyor" msgid "cannot duplicate named pipe %s as fd %d" msgstr "isimli boru %s fd %d olarak yinelenemiyor" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" +msgstr "komut ikamesi: girdideki null bayt yoksayıldı" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "komut ikamesi için boru yapılamıyor" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "komut ikamesi için alt süreç yapılamıyor" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" -#: subst.c:6666 subst.c:8351 subst.c:8371 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format -msgid "%s: bad substitution" -msgstr "%s: hatalı ikame" - -#: subst.c:6800 -#, fuzzy, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: geçersiz satır sayısı" +msgstr "%s: geçersiz dolaylı yayılım" -#: subst.c:6807 -#, fuzzy, c-format +#: subst.c:6771 subst.c:6910 +#, c-format msgid "%s: invalid variable name" -msgstr "`%s': geçersiz takma isim" +msgstr "%s: geçersiz değişken adı" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: parametre boş ya da değer atanmamış" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametre boş ya da değer atanmamış" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: altdizge ifadesi < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: hatalı ikame" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: bu yolla atama yapılmaz" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1982,12 +2003,12 @@ msgstr "" "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye " "zorlayacak" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "eşleşme yok: %s" @@ -2010,116 +2031,115 @@ msgstr "`)' bekleniyordu" msgid "`)' expected, found %s" msgstr "`)' bekleniyordu, %s bulundu" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: tek terimli işleci bekleniyordu" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: iki terimli işleci bekleniyordu" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "eksik `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "geçersiz sinyal numarası" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:hatalı sinyal %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s'nin işlev tanımının içeri aktarılmasında hata" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "kabuk düzeyi (%d) çok yüksek, 1 yapılıyor" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: geçerli etki alanında hiç işlev bağlamı yok" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: değişkene değer atanmamış olabilir" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: dosya izleme tanımlayıcısı için geçersiz değer" +msgstr "%s: isim referansına tamsayı ataması" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: geçerli etki alanında hiç işlev bağlamı yok" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s boş exportstr içeriyor" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s için exportstr içinde geçersiz karakter %1$d" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s için exportstr içinde `=' yok" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: kabuk değişkenlerinin başı bir işlev bağlamı değil" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: genel değişkenler bağlamı yok" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: DOSYA olarak açılamaz" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz değer" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: uyumlulukdeğeri aralık dışı" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş." +msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş." #: version.c:47 version2.c:47 msgid "" @@ -2142,22 +2162,22 @@ msgstr "Bu ücretsiz bir yazılımdır; değiştirmekte ve dağıtmakta özgürs msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: %lu bayt ayrılamıyor" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu bayt ayrılamıyor" @@ -2212,9 +2232,8 @@ msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [isim[=değer] ...]" #: builtins.c:80 -#, fuzzy msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] isim[=değer] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] isim[=değer] ..." #: builtins.c:82 msgid "local [option] name[=value] ..." @@ -2285,9 +2304,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [görevtan ...]" +msgstr "disown [-h] [-ar] [görevtan ... | pid ...]" #: builtins.c:134 msgid "" @@ -2362,16 +2380,16 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] isim [isim ...]" #: builtins.c:171 -#, fuzzy msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [sınır]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [sınır]" #: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [kip]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2473,12 +2491,11 @@ msgstr "" "[isim ...]" #: builtins.c:235 -#, fuzzy msgid "" "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W " +"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W " "kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " "[kelime]" @@ -2487,24 +2504,23 @@ msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" #: builtins.c:242 -#, fuzzy msgid "" "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " "callback] [-c quantum] [array]" msgstr "" -"mapfile [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " -"parçacık] [dizi]" +"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C " +"geriçağırım] [-c parçacık] [dizi]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " "parçacık] [dizi]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2540,7 +2556,6 @@ msgstr "" " Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür." #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2552,13 +2567,12 @@ msgstr "" "Tanımlı rumuzlar listesinden her İSMİ kaldır.\n" " \n" " Seçenekler:\n" -" -a\ttüm rumuz tanımlamalarını kaldır.\n" +" -a\ttüm rumuz tanımlamalarını kaldır\n" " \n" " İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n" " döndür." #: builtins.c:291 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2631,8 +2645,8 @@ msgstr "" " -x TUŞDİZİSİ:KABUK-KOMUTU\tTUŞDİZİSİnin her girilişinde KABUK-" "KOMUTUnun\n" " \t\t\t\tçalıştırılmasını sağlar.\n" -" -X\t\t Tuş dizilerini -x ve ilişkili komutlarını tekrar bir girdi " -"olarak kullanılabilecek\n" +" -X Tuş dizilerini -x ve ilişkili komutlarını tekrar " +"bir girdi olarak kullanılabilecek\n" " biçimde listeler.\n" " \n" " Çıkış Durumu:\n" @@ -2731,7 +2745,6 @@ msgstr "" "döndürür." #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2795,12 +2808,16 @@ msgstr "" " için kullanılır\n" " \n" " Seçenekler:\n" -" -L\tsembolik bağlantıların takip edilmesini zorla\n" -" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan\n" +" -L\tsembolik bağlantıların takip edilmesini zorla: '..' " +"örneklerinin\n" +" \t\tişlenmesinden sonra DİZİN içindeki sembolik bağlantıları çöz\n" +" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' " +"örneklerinin\n" +" \t\tişlenmesinden önce DİZİN içindeki sembolik bağlantıları çöz\n" " -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini " "başarılı şekilde\n" " \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n" -" -@ destekleyen sistemlerde, dosya niteliklerini içeren bir dizin " +" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin " "olarak uzatılmış\n" " niteliklere sahip bir dosya sun \n" " Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip " @@ -2812,7 +2829,6 @@ msgstr "" " sıfır olmayan bir değer döndürür." #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2880,7 +2896,6 @@ msgstr "" " Her zaman başarısızdır." #: builtins.c:471 -#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2907,11 +2922,11 @@ msgstr "" " diskte komutları çalıştırmak için kullanılabilir.\n" " \n" " Seçenekler:\n" -" -p\tYOL için, tüm standart yardımcıları bulabilmek için bir öntanımlı " -"değer\n" +" -p YOL için, tüm standart yardımcıları bulabilmek için bir " +"öntanımlı değer\n" " \tkullan\n" -" -v\t`type' dahilisine benzer bir KOMUT açıklaması göster\n" -" -V\ther KOMUTun fazla açıklamasını göster\n" +" -v `type' dahilisine benzer bir KOMUT açıklaması göster\n" +" -V her KOMUTun fazla açıklamasını göster\n" " \n" " Çıkış Durumu:\n" " KOMUTun çıkış durumunu döndürür. KOMUT bulunamazsa başarısız olur." @@ -2936,11 +2951,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2965,10 +2980,10 @@ msgstr "" " -f\teylemi veya işlev ismi ile tanımları gösterimini kısıtla\n" " -F\tsadece işlev isim gösterimlerini kısıtla (ek olarak satır sayısı " "ve hata ayıklarken\n" -" \tkaynak dosyayı)\n" +" \t\tkaynak dosyayı)\n" " -g\tbir kabuk fonksiyonunda kullanıldığında evrensel değişken " "oluştur,\n" -" \taksi takdirde yoksayılır\n" +" \t\taksi takdirde yoksayılır\n" " -p\ther İSİMin değeri ve niteliklerini görüntüle\n" " \n" " Nitelik ayarlayan seçenekler:\n" @@ -2998,7 +3013,6 @@ msgstr "" " başarılı döner." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3006,7 +3020,7 @@ msgid "" msgstr "" "Değişken isim ve niteliklerini ayarla.\n" " \n" -" Kullanılmıyor. Bkz. `help declare'." +" `declare' ile eş anlamlıdır. Bkz. `help declare'." #: builtins.c:538 msgid "" @@ -3037,7 +3051,6 @@ msgstr "" " kabuk bir işlev çalıştırmıyorsa başarılı döner." #: builtins.c:555 -#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -3094,9 +3107,9 @@ msgstr "" " \\\\\tters bölü\n" " \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası " "sekizli\n" -" \trakamlardan oluşabilir.\n" +" \t\trakamlardan oluşabilir.\n" " \\xHH\tdeğeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n" -" \tonaltılık rakam olabilir\n" +" \t\tonaltılık rakam olabilir\n" " \n" " Çıkış Durumu:\n" " Yazma hatası oluşmadığı takdirde başarılı döner." @@ -3292,7 +3305,6 @@ msgstr "" " encountered or an error occurs." #: builtins.c:688 -#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3322,8 +3334,8 @@ msgstr "" " \n" " Seçenekler:\n" " -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n" -" -c\t\tKOMUTu boş bir ortamla çalıştır\n" -" -l\t\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" +" -c\tKOMUTu boş bir ortamla çalıştır\n" +" -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n" " \n" " Eğer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece " "etkileşimsiz kabuk\n" @@ -3496,7 +3508,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3512,7 +3524,7 @@ msgstr "" " -d\ther konu için kısa açıklama yazdır\n" " -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n" " -s\tsadece DESEN ile eşleşen konular için kısa kullanım\n" -" \tbilgisi yazdır\n" +" \t\tbilgisi yazdır\n" " \n" " Argümanlar:\n" " DESEN\tBir yardım konusunu belirten desen\n" @@ -3531,7 +3543,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3563,12 +3576,12 @@ msgstr "" " \n" " Seçenekler:\n" " -c\tkomut geçmişi listesini tüm girdilerini silerek temizler.\n" -" -d\tile satır numarası KONUM olan geçmiş girdisi silinir.\n" +" -d\tile konumu KONUM olan geçmiş girdisi silinir.\n" " \n" " -a\tile oturumunun başlangıcından itibaren girilen geçmiş satırları\n" " \tgeçmiş dosyasına eklenir.\n" -" -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları,\n" -" \tgeçmiş listesine eklenir.\n" +" -n\tile geçmiş dosyasından henüz okunmamış olan geçmiş satırları okur\n" +" \t\tve geçmiş listesine ekler\n" " -r\tile dosya okunur ve içeriği geçmiş listesine eklenir.\n" " -w\tile geçmiş listesi çıktısı geçmiş dosyasına yazılır.\n" " \n" @@ -3576,10 +3589,10 @@ msgstr "" " \tdepolamadan görüntüle\n" " -s\tARGümanları geçmiş listesine tek bir girdi olarak ekle\n" " \n" -" DOSYAİSMİ verilmezse, $HISTFILE değişkenindeki değer, o da yoksa\n" +" DOSYAİSMİ verilmezse, HISTFILE değişkenindeki değer, o da yoksa\n" " ~/.bash_history dosyası kullanılır.\n" " \n" -" $HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n" +" HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n" " sahipse, değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n" " damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n" " takdirde hiç zaman damgası basılmaz. \n" @@ -3587,8 +3600,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:872 -#, fuzzy +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3617,10 +3629,10 @@ msgstr "" " Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n" " \n" " Seçenekler:\n" -" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " -"\tlisteler\n" +" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) " +"listele\n" " -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n" -" \tberi durumları değişen işler hakkında bilgi gösterir.\n" +" \t\tberi durumları değişen işler hakkında bilgi gösterir.\n" " -p\tile işlerin sadece süreç kimliklerini listeler\n" " -r\tile sadece çalışmakta olan,\n" " -s\tile ise sadece durmuş olan işler listelenir.\n" @@ -3634,8 +3646,7 @@ msgstr "" "başarılı döner.\n" " -x kullanılmışsa, KOMUTun çıkış durumu döndürülür." -#: builtins.c:899 -#, fuzzy +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3661,14 +3672,13 @@ msgstr "" " -a\tİŞTANIMı belirtilmemişse tüm görevleri kaldır\n" " -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve " "SIGHUP\n" -" \tgönderme\n" +" \t\tgönderme\n" " -r\tsadece çalışan görevleri kaldırremove \n" " \n" " Çıkış Durumu:\n" " Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3700,8 +3710,9 @@ msgstr "" " -s sig\tSİNYAL bir sinyal\n" " -n sig\tSİNYAL bir sinyal numarası\n" " -l\t-l seçeneği ile sinyal isimleri listelenir.\n" -" Argümanlı -l seçeneğinde argümanların listelenecek\n" +" \t\tArgümanlı -l seçeneğinde argümanların listelenecek\n" " sinyal isimlerinin numaraları olduğu varsayılır. \n" +" -L\t, -l anahtarının eş anlamlısıdır\n" " Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine " "iş\n" " kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz " @@ -3714,7 +3725,7 @@ msgstr "" " Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı " "döner." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3800,7 +3811,7 @@ msgstr "" " Çıktı Durumu:\n" " Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." -#: builtins.c:987 +#: builtins.c:988 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3821,7 +3832,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3852,7 +3863,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3872,8 +3883,7 @@ msgstr "" " Çıkış Durumu:\n" " N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4042,7 +4052,7 @@ msgstr "" " kabuklarda öntanımlı olarak etkindir.\n" " -P Verildiğinde, örneğin çalışılan dizini değiştirmek için cd gibi bir\n" " komut sembolik bağları izlemez.\n" -" -T Etkinse DEBUG üstündeki bir tuzak kabuk işlevlerince\n" +" -T Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk işlevlerince\n" " miras alınır.\n" " -- Geri kalan argümanları konumsal parametrelere ata. Eğer kalan\n" " argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n" @@ -4058,7 +4068,7 @@ msgstr "" " Çıktı Durumu:\n" " Geçersiz seçenek belirtilmediği sürece başarılı döner." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4080,7 +4090,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4099,7 +4109,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4120,7 +4130,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4131,7 +4141,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4158,7 +4168,7 @@ msgstr "" " DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n" " okunamazsa başarısız döner." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4172,8 +4182,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1254 -#, fuzzy +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4316,6 +4325,8 @@ msgstr "" " Diğer işleçler:\n" " \n" " -o SEÇENEK Kabuk seçeneği SEÇENEK etkinse doğrudur.\n" +" -v DEĞŞ Kabuk DEĞŞ ayarlanmış ise true.\n" +" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n" " ! İFADE İFADE yanlışsa doğrudur.\n" " İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur.\n" " İFADE1 -o İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur.\n" @@ -4333,7 +4344,7 @@ msgstr "" "geçersiz\n" " argümanda başarısız döner." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4345,7 +4356,7 @@ msgstr "" " \"test\" yerleşiği ile aynıdır, fakat son argüman açan `[' ile eşleşen\n" " kapatan `]' olmak zorundadır." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4364,7 +4375,7 @@ msgstr "" " Çıktı Durumu:\n" " Her zaman başarılı döner." -#: builtins.c:1357 +#: builtins.c:1358 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4425,7 +4436,7 @@ msgstr "" " numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n" " göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4455,8 +4466,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1424 -#, fuzzy +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4518,6 +4528,7 @@ msgstr "" " -e\tAzami zamanlama önceliği (`nice')\n" " -f\tKabuk ve çocukları tarafından oluşturulan dosyaların azami boyu\n" " -i\tAskıdaki sinyallerin azami sayısı\n" +" -k\tBu süreç için ayrılmış kqueue'lerin azami sayısı\n" " -l\tBelleğe kilitlenebilen azami boyut\n" " -m\tAzami bellek boyu\n" " -n\tAçık dosya tanıtıcılarının azami sayısı\n" @@ -4546,7 +4557,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4564,7 +4575,8 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4572,13 +4584,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4599,7 +4613,7 @@ msgstr "" "verilmişse\n" " başarısız olur." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4626,7 +4640,7 @@ msgstr "" "verilmişse\n" " başarısız olur." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4650,7 +4664,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4681,7 +4695,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4724,7 +4738,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4753,7 +4767,7 @@ msgstr "" " Çıktı Durumu:\n" " VERİYOLU döndürme değerini döndürür." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4771,8 +4785,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1612 -#, fuzzy +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4792,11 +4805,8 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rif KOMUTlar; then KOMUTlar;\n" -"[ elif KOMUTlar; then KOMUTlar; ]...\n" -"[ else KOMUTlar; ]\n" -"fi\n" -"\n" +"Komutları şartlara göre çalıştırır.\n" +" \n" " `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n" " `then KOMUTlar;' listesi çalıştırılır, değilse `elif KOMUTlar;'\n" " listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n" @@ -4804,9 +4814,10 @@ msgstr "" " `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n" " Oluşumun tamamının dönüş durumu çalıştırılmış olan son komutun\n" " çıkış durumudur. Bir komut çalıştırılmamışsa ve hiçbir koşul\n" -" doğru sonuç vermemişse sıfır döner." +" doğru sonuç vermemişse sıfır döner. Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4824,7 +4835,7 @@ msgstr "" " Çıktı Durumu:\n" " En son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4842,7 +4853,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1653 +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4855,7 +4866,7 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4869,7 +4880,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4887,7 +4898,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4911,7 +4922,7 @@ msgstr "" " Çıktı Durumu:\n" " Devam edilen görevin durumunu döndürür." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4929,8 +4940,7 @@ msgstr "" " Çıktı Durumu:\n" " İFADE 0 olursa 1; aksi takdirde 0 döndürür." -#: builtins.c:1720 -#, fuzzy +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -4957,7 +4967,8 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" -"\r[[ İFADE ]]\n" +"Koşullu komut çalıştır.\n" +" \n" " Koşullu İFADEnin değerine bağlı olarak 0 ya da 1 durumu ile döner.\n" " İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle " "oluşturulur\n" @@ -4968,12 +4979,17 @@ msgstr "" " İFADE1 && İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur\n" " İFADE1 || İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur\n" "\n" -" == ve != işleçleri kullanıldığında, işlecin sağındaki dizge bir kalıp\n" -" olarak ele alınır ve kalıp eşleştirmesi uygulanır. && ve || işleçleri\n" -" eğer ilk ifade sonuç için belirleyici ise ikincisine bakmazlar." +" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizge bir " +"kalıp\n" +" olarak ele alınır ve kalıp eşleştirmesi uygulanır. `=~' kullanıldığında\n" +" işlecin sağındaki dizge düzenli ifade olarak eşleştirilir. \n" +" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n" +" çalıştırmaz.\n" +" \n" +" Çıkış Durumu:\n" +" İFADE değerine göre 0 veya 1." -#: builtins.c:1746 -#, fuzzy +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5026,75 +5042,67 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" -"\rdeğişkenler: Bazı değişkenler ve anlamları:\n" -" BASH_VERSION Bu Bash'in sürüm bilgisi.\n" -" CDPATH ` cd'ye argüman olarak verilecek dizinlerin aranacağı\n" -" dizinlerin ikinokta imi ayraçlı listesi.\n" -" GLOBIGNORE Dosyayolu yorumlaması tarafından yoksayılacak dosya\n" -" isimlerini belirten kalıpların ikinokta imi ayraçlı\n" -" listesi.\n" -" HISTFILE Komut geçmişinizin saklanacağı dosyanın ismi.\n" -" HISTFILESIZE Bu dosyanın içerebileceği azami satır sayısı.\n" -" HISTSIZE Çalışan bir kabuğun erişebileceği geçmiş " -"satırlarının\n" -" azami sayısı.\n" -" HOME Kullanıcının ev dizininin tam yolu.\n" -" HOSTNAME Makinenizin ağdaki konak ismi.\n" -" HOSTTYPE Bash'in bu sürümünün altında çalıştığı işlemcinin " -"türü\n" -" IGNOREEOF Tek girdi olarak EOF karakteri alındığında kabuğun\n" -" eylemini kontrol eder. Atandığında değeri, kabuk\n" -" çıkmadan önce bir girdi satırındaki ilk karakter\n" -" olarak okunabilen ardışık EOF karakterlerinin " -"sayısını\n" -" gösterir (öntanımlı 10). Eğer değişken mevcut " -"değilse,\n" -" EOF girdi sonunu belirtir.\n" -" MACHTYPE Bash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" -" MAILCHECK Bash'in yeni postaya kaç saniyede bir bakacağı.\n" -" MAILPATH Bash'in yeni posta var mı diye bakacağı dosya\n" -" isimlerinin ikinokta imi ayraçlı listesi.\n" -" OSTYPE Bash'in üzerinde çalıştığı çekirdeğin türü.\n" -" PATH Komutları ararken bakılacak dizinlerin ikinokta imi\n" -" ayraçlı listesi.\n" -" PROMPT_COMMAND Birincil komut istemi ($PS1) basılmadan önce\n" -" çalıştırılacak komut\n" -" PS1 Birincil komut istemi dizgesi.\n" -" PS2 İkincil komut istemi dizgesi.\n" -" PWD Çalışma dizininizin tam yolu.\n" -" SHELLOPTS Etkin kabuk seçeneklerinin ikinokta imi ayraçlı " -"listesi\n" -" TERM Geçerli uçbirim türünün ismi.\n" -" TIMEFORMAT time anahtar sözcüğü ile başlayan zamanlama " -"bilgisinin\n" -" nasıl belirtileceğini gösteren biçim dizgesi.\n" -" auto_resume Değerin boş olmaması durmuş işin isminin onu\n" -" başlatmakta kullanılan komut satırı olduğudur ve\n" -" oradaysa iş önalana alınır. `exact' değeri, komut\n" -" sözcüğünün durmuş işler listesindeki komutla tam\n" -" olarak eşleşmesi gerektiği anlamına gelir. " -"`substring'\n" -" değeri, komut sözcüğünün işin bir altdizgesi ile\n" -" eşleşmesi gerektiğini belirtir. Bunlar dışında bir\n" -" değer komutun durmuş bir işe önek olması gerektiği\n" -" anlamına gelir.\n" -" histchars Geçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n" -" denetleyen en çok üç karakter. İlk karakter geçmiş\n" -" yorumlamasının başlatılmasını sağlayan geçmiş\n" -" yorumlama karakteridir ve normalde ! işaretidir.\n" -" İkinci karakter, bir satırdaki ilk karakter " -"olduğunda\n" -" `hızlı ikame'yi imleyen karakterdir ve normalde ^\n" -" imidir. İstemlik olan üçüncü karakter ise, bir\n" -" sözcüğün ilk karakteri olarak bulunduğunda satırın\n" -" kalanının açıklama olmasını sağlayan karakterdir ve\n" -" normalde # imidir.\n" -" HISTIGNORE Geçmiş listesine hangi satırların kaydedilmesi\n" -" gerektiğine karar vermek için kullanılan kalıpların\n" -" ikinokta imi ayraçlı listesi.\n" - -#: builtins.c:1803 -#, fuzzy +"Bazı değişkenler ve anlamları:\n" +" \n" +" BASH_VERSION\tBu Bash'in sürüm bilgisi.\n" +" CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n" +" \t\tdizinlerin iki nokta imi ayraçlı listesi.\n" +" GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n" +" \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n" +" \t\tlistesi.\n" +" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın ismi.\n" +" HISTFILESIZE\tBu dosyanın içerebileceği azami satır sayısı.\n" +" HISTSIZE\tÇalışan bir kabuğun erişebileceği geçmiş satırlarının\n" +" \t\tazami sayısı.\n" +" HOME\tKullanıcının ev dizininin tam yolu.\n" +" HOSTNAME\tMakinenizin ağdaki konak ismi.\n" +" HOSTTYPE\tBash'in bu sürümünün altında çalıştığı işlemcinin türü\n" +" IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuğun\n" +" \t\teylemini kontrol eder. Atandığında değeri, kabuk\n" +" \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n" +" \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n" +" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse,\n" +" \t\tEOF girdi sonunu belirtir.\n" +" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n" +" MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n" +" MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n" +" \t\tisimlerinin ikinokta imi ayraçlı listesi.\n" +" OSTYPE\tBash'in üzerinde çalıştığı çekirdeğin türü.\n" +" PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n" +" \t\tayraçlı listesi.\n" +" PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n" +" \t\tçalıştırılacak komut\n" +" PS1\tBirincil komut istemi dizgesi.\n" +" PS2\tİkincil komut istemi dizgesi.\n" +" PWD\tÇalışma dizininizin tam yolu.\n" +" SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n" +" TERM\tGeçerli uçbirim türünün ismi.\n" +" TIMEFORMAT\ttime anahtar sözcüğü ile başlayan zamanlama bilgisinin\n" +" \t\tnasıl belirtileceğini gösteren biçim dizgesi.\n" +" auto_resume\tDeğerin boş olmaması durmuş işin isminin onu\n" +" \t\tbaşlatmakta kullanılan komut satırı olduğudur ve\n" +" \t\toradaysa iş önalana alınır. `exact' değeri, komut\n" +" \t\tsözcüğünün durmuş işler listesindeki komutla tam\n" +" \t\tolarak eşleşmesi gerektiği anlamına gelir. `substring'\n" +" \t\tdeğeri, komut sözcüğünün işin bir altdizgesi ile\n" +" \t\teşleşmesi gerektiğini belirtir. Bunlar dışında bir\n" +" \t\tdeğer komutun durmuş bir işe önek olması gerektiği\n" +" \t\tanlamına gelir.\n" +" histchars\tGeçmiş yorumlaması, hızlı ikame ve sembolleştirmeyi\n" +" \t\tdenetleyen en çok üç karakter. İlk karakter geçmiş\n" +" \t\tyorumlamasının başlatılmasını sağlayan geçmiş\n" +" \t\tyorumlama karakteridir ve normalde ! işaretidir.\n" +" \t\tİkinci karakter, bir satırdaki ilk karakter olduğunda\n" +" \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n" +" \t\timidir. İstemlik olan üçüncü karakter ise, bir\n" +" \t\tsözcüğün ilk karakteri olarak bulunduğunda satırın\n" +" \t\tkalanının açıklama olmasını sağlayan karakterdir ve\n" +" \t\tnormalde # imidir.\n" +" HISTIGNORE\tGeçmiş listesine hangi satırların kaydedilmesi\n" +" \t\tgerektiğine karar vermek için kullanılan kalıpların\n" +" \t\tikinokta imi ayraçlı listesi.\n" + +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5124,29 +5132,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"\rpushd [DZN | +N | -N] [-n]\n" +"Dizinleri yığına ekle.\n" +" \n" " Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n" " dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n" " argüman verilmemişse en üstteki iki dizini yer değiştirir.\n" -"\n" -" +N (`dirs' tarafından gösterilen listenin solundan saymaya\n" -" sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" yığıtı döndürür.\n" -"\n" -" -N (`dirs' tarafından gösterilen listenin sağından saymaya\n" -" sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" -" yığıtı döndürür.\n" -"\n" -" +n dizinleri yığıta eklerken normal dizin değişikliğini engeller,\n" -" böylece sadece yığıt değiştirilmiş olur.\n" -"\n" -" DZN DiZiNi yeni çalışma dizini yaparak dizin yığıtının\n" -" tepesine ekler.\n" -"\n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıta eklerken normal dizin değişikliğini engeller,\n" +" \t\tböylece sadece yığıt değiştirilmiş olur.\n" +" \n" +" Argümanlar:\n" +" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" +" \t\tyığıtı döndürür.\n" +" \n" +" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n" +" \t\ttepesine ekler.\n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" +" olmadıkça başarılı döner." -#: builtins.c:1837 -#, fuzzy +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5172,22 +5186,31 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"\rpopd [+N | -N] [-n]\n" +"Dizin yığıtından girdileri sil.\n" +" \n" " Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n" " yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n" " tepesinde kalan dizine geçer. \n" -" +N `dirs' tarafından gösterilen listenin solundan saymaya\n" -" sıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" -" `popd +0' ilk dizini `popd +1' ikincisini siler. \n" -" -N `dirs' tarafından gösterilen listenin sağından saymaya\n" -" sıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" -" `popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" -" -n dizinleri yığıttan silerken normal dizin değişikliğini\n" -" engeller, böylece sadece yığıt değiştirilmiş olur. \n" -" Dizin yığıtını `dirs' komutuyla görebilirsiniz." +" \n" +" Seçenekler:\n" +" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n" +" \t\tengeller, böylece sadece yığıt değiştirilmiş olur. \n" +" \n" +" Argümanlar:\n" +" +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n" +" \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" +" \t\t`popd +0' ilk dizini `popd +1' ikincisini siler. \n" +" \n" +" -N\t\t`dirs' tarafından gösterilen listenin sağından saymaya\n" +" \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n" +" \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n" +" \n" +" Dizin yığıtını `dirs' komutuyla görebilirsiniz. \n" +" Çıkış Durumu:\n" +" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n" +" olmadıkça başarılı döner." -#: builtins.c:1867 -#, fuzzy +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5215,31 +5238,39 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"\rdirs [-clpv] [+N] [-N]\n" +"Dizin yığıtını görüntüle.\n" +" \n" " O an anımsanan dizinleri listeler. Dizinler listeye `pushd'\n" " komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n" " komutu kullanılır.\n" -" -l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar\n" -" olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'\n" -" gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in\n" -" dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her\n" -" satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki\n" -" konumu göstermemesi dışında aynı çıktıyı verir. -c seçeneği tüm\n" -" girdileri silerek dizin yığıtını boşaltır. \n" -" +N dirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n" -" sıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" -"\n" -" -N dirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n" -" sıfırla başlayarak sayılan N'inci girdiyi gösterir." +" \n" +" Seçenekler:\n" +" -c\ttüm girdileri silerek dizin yığıtını boşaltır.\n" +" -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n" +" \t\tolarak göstermemesine yol açar.\n" +" -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n" +" -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n" +" \t\tekleyerek her satırda bir girdi göstermesini sağlar.\n" +" \n" +" Argümanlar:\n" +" +N\tdirs seçeneksiz çağrıldığında gösterdiği listenin solundan\n" +" \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" \n" +" -N\tdirs seçeneksiz çağrıldığında gösterdiği listenin sağından\n" +" \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı " +"döner." -#: builtins.c:1898 +#: builtins.c:1902 msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5253,8 +5284,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1919 -#, fuzzy +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5292,19 +5322,43 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"\rprintf [-v DEĞİŞKEN] BİÇİM [ARGümanlar]\n" -" BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek\n" -" yazar. BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" +"BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek " +"yazar\n" +" \n" +" Seçenekler:\n" +" -v değişken\tseçeneği çıktının standart çıktıya\n" +" \t\tbasılması yerine DEĞİŞKENe atanmasını sağlar.\n" +" \n" +" BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n" " basitçe standart çıktıya kopyalanır, öncelenmiş karakterler\n" " dönüştürülüp standart çıktıya kopyalanır ve biçim belirtimleri;\n" " belirtimlerin her biri sırayla karşı düşen ARGümanların basılmasını\n" -" sağlar. Standart printf(1) biçimlerine ek olarak, %b printf'in tersbölü\n" -" öncelemeli karakterlerin karşı düşen ARGümanda yorumlanmasını sağlar ve\n" -" %q printf'in karşı düşen ARGümanı kabuk girdisi olarak kullanılabilecek\n" -" biçimde çıktılamasını sağlar. -v seçeneği çıktının standart çıktıya\n" -" basılması yerine DEĞİŞKENe atanmasını sağlar. " +" sağlar.\n" +" \n" +" Standart printf(1) biçimlerine ek olarak, printf aşağıdakileri de " +"yorumlar:\n" +" \n" +" %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda " +"yorumlanmasını sağlar\n" +" %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde " +"kullanılabilmesi\n" +" \t\tiçin alıntılar.\n" +" %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından " +"kullanılmak üzere\n" +" \t\ttarih zaman dizgesi çıktısısı verir\n" +" \n" +" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden " +"kullanılır.\n" +" Biçimin gerektirdiğinden daha az argüman varsa, ek biçim tanımlamaları " +"uygun olduğu\n" +" şekilde sıfır değeri veya BOŞ (null) dizge değeri olarak davranırlar.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde ya da bir " +"atama\n" +" hatası oluşmadığı sürece başarılı döner." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5331,7 +5385,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5353,7 +5407,7 @@ msgstr "" " Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde " "başarılı döner." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5384,7 +5438,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5426,7 +5480,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5436,9 +5490,8 @@ msgstr "" " \n" " `mapfile' ile eşanlamlıdır." -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Ş." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş." #~ msgid ":" #~ msgstr ":" @@ -5452,9 +5505,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş." - #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" diff --git a/po/uk.gmo b/po/uk.gmo index 466af2cdc..06605be81 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index f49732bde..565e13b3e 100644 --- a/po/uk.po +++ b/po/uk.po @@ -4,139 +4,140 @@ # # Myhailo Danylenko , 2009. # Maxim V. Dziumanenko , 2010. -# Yuri Chornoivan , 2011, 2013, 2014, 2015. +# Yuri Chornoivan , 2011, 2013, 2014, 2015, 2016. msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-15 21:32+0300\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-09-16 17:46+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: uk\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "неправильний індекс масиву" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: вилучаємо атрибут nameref" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: неможливо перетворити індексований масив на асоціативний" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неправильний ключ асоціативного масиву" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: означення нечислових елементів неможливе" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при означенні асоціативних масивів слід вказувати ключ" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не вдалося створити: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: не вдалося знайти відповідне призначення для " "команди" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: перший непробільний символ не є «\"»" # c-format -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "нема заключної «%c» у %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: пропущено двокрапку-роздільник" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "розкриття дужок: не вдалося отримати пам’ять для %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для %d елементів" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "розкриття дужок: не вдалося отримати об’єм пам’яті для «%s»" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: некоректна назва замінника" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "редагування рядку не ввімкнено" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: неправильна назва набору призначень клавіш" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не вдалося прочитати: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: не вдалося зняти призначення" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: невідома назва функції" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не призначено жодної клавіші.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s можна запустити за допомогою " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не вдалося зняти призначення" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "кількість циклів" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "має сенс лише усередині циклів `for', `while' та `until'" @@ -150,163 +151,162 @@ msgstr "" " \n" " Якщо EXPR не вказано, повертає " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "змінну HOME не встановлено" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "забагато аргументів" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "немає іншого каталогу" +msgstr "порожній каталог" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "змінну OLDPWD не встановлено" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "рядок %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "попередження: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: використовуйте: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: параметр потребує аргументу" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: потрібен числовий аргумент" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: не знайдено" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: неправильний параметр" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: некоректна назва параметра" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: неправильний ідентифікатор" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "неправильне вісімкове число" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "неправильне шістнадцяткове число" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "неправильне число" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: сигнал вказано з помилками" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: не є ідентифікатором процесу чи завдання" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: змінна призначена лише для читання" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s виходить за встановлені межі" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "аргумент" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s виходить за встановлені межі" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: нема такого завдання" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: керування завданнями не ввімкнене" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "керування завданнями не ввімкнене" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: заборонено обмеженнями" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "заборонено обмеженнями" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не є вбудованою командою оболонки" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "помилка запису: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "помилка встановлення параметрів термінала: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "помилка отримання параметрів термінала: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: помилка отримання поточного каталогу: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: завдання вказано неоднозначно" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "у цій версії не можна скористатися довідкою" @@ -315,70 +315,70 @@ msgstr "у цій версії не можна скористатися дові msgid "%s: invalid action name" msgstr "%s: неправильна назва дії" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: не вказано специфікація завершення" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "попередження: можливо параметр -F працює не так, як ви очікуєте" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "попередження: можливо параметр -C працює не так, як ви очікуєте" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "наразі функція завершення рядку не виконується" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "може використовуватися лише усередині функції" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: еталонна змінна не може бути масивом" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: не можна використовувати циклічне посилання у змінній посилання" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: циклічне посилання за назвою" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: некоректна назва змінної для посилання за назвою" +msgstr "«%s»: некоректна назва змінної для посилання за назвою" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "`-f' не використовується для створення функцій" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: незмінна функція" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" "%s: встановлення значень для складеного масиву у лапках вважається застарілим" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: неможливо знищити масив таким чином" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: неможливо перетворити асоціативний масив на індексований" @@ -414,68 +414,68 @@ msgstr "%s: завантажений не динамічно" msgid "%s: cannot delete: %s" msgstr "%s: не вдалося вилучити: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: це каталог" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: не є звичайним файлом" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: файл завеликий" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не вдалося виконати бінарний файл" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не вдалося виконати: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "вихід\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "це не оболонка сеансу: використовуйте `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Залишилися призупинені завдання.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Фонові завдання все ще виконуються.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "команду не знайдено" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" -msgstr "параметри історії" +msgstr "параметри журналу" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не вдалося відкрити тимчасовий файл: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "поточне" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "завдання %d запущене без контролю завдань" @@ -490,29 +490,28 @@ msgstr "%s: неправильний параметр — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: параметр потребує аргументу — %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "кешування вимкнене" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: в кеші нічого немає\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "влучень\tкоманда\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команди оболонки, що відповідають слову `" msgstr[1] "Команди оболонки, що відповідають словам `" msgstr[2] "Команди оболонки, що відповідають словам `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -520,12 +519,12 @@ msgstr "" "«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %" "s' або `info %s'." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не вдалося відкрити: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -548,23 +547,24 @@ msgstr "" "Зірочка (*) поряд з назвою команди означає, що команда заборонена.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "-anrw можуть зустрічатися лише один раз" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" -msgstr "позиція у історії команд" +msgstr "позиція у журналу команд" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: некоректний аргумент" +msgstr "%s: некоректна часова позначка" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" -msgstr "%s: невдалий пошук по історії команд" +msgstr "%s: невдалий пошук по журналу команд" #: builtins/inlib.def:71 #, c-format @@ -575,16 +575,16 @@ msgstr "%s: помилка inlib" msgid "no other options allowed with `-x'" msgstr "не можна використовувати інші параметри разом з `-x'" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процесів" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Невідома помилка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "очікувався вираз" @@ -593,69 +593,69 @@ msgstr "очікувався вираз" msgid "%s: not an indexed array" msgstr "%s: не є індексованим масивом" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неправильно вказаний дескриптор файла" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неправильний дескриптор файла: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: неправильна кількість рядків" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: неправильний початковий індекс" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неправильний крок виклику функції" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "порожня назва змінної-масиву" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "змінні-масиви не підтримуються" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "«%s»: пропущено символ у шаблоні" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: помилкове визначення формату часу" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: помилковий символ у шаблоні" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "попередження: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "проблема з обробкою форматування: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "пропущено шістнадцяткову цифру у \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "пропущено цифру Unicode у \\%c" @@ -669,19 +669,19 @@ msgstr "немає іншого каталогу" msgid "%s: invalid argument" msgstr "%s: некоректний аргумент" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<немає поточного каталогу>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "стек каталогів порожній" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "рівень стеку каталогів" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -723,7 +723,7 @@ msgstr "" " -N\tПоказує N-ний з кінця каталог у списку, що виводиться командою\n" "\tdirs без аргументів, відлік починається з нуля." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -769,7 +769,7 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек каталогів." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -810,46 +810,46 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек каталогів." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: некоректне визначення часу очікування" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "помилка читання: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "" "`return' працює лише у функції чи скрипті, запущеному за допомогою `source'" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "не можна одночасно знищити і функцію і змінну" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: не вдалося знищити" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не вдалося знищити: %s лише для читання" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: не є масивом" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: не є функцією" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: не вдалося експортувати" @@ -858,20 +858,20 @@ msgstr "%s: не вдалося експортувати" msgid "shift count" msgstr "кількість зсувів" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "не можна одночасно встановлювати й скасовувати параметри оболонки" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неправильна назва параметра оболонки" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "потрібна назва файла" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: файл не знайдено" @@ -884,63 +884,63 @@ msgstr "не вдалося призупинити" msgid "cannot suspend a login shell" msgstr "не можна призупинити оболонку сеансу" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s є псевдонімом до «%s»\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — це ключове слово оболонки\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s є функцією\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s є спеціальною вбудованою командою оболонки\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s є вбудованою командою оболонки\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s — це %s\n" # I know the difference between hash and cache, but here, # I think, this is more suitable... -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s знаходиться в кеші (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: помилковий аргумент обмеження" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "«%c»: неправильна команда" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не вдалося отримати значення обмеження: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "значення обмеження" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не вдалося змінити обмеження: %s" @@ -959,204 +959,209 @@ msgstr "«%c»: помилковий оператор у символьному msgid "`%c': invalid symbolic mode character" msgstr "«%c»: помилковий символ у символьному режимі" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " рядок " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "остання команда: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Припинення..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "ІНФОРМАЦІЯ: " -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "невідома помилка команди" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "неправильний тип команди" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "неправильний з’єднувальний оператор" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "неправильний перехід" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: неозначена змінна" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aчас очікування вводу вичерпано: автоматичний вихід\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не вдалося переспрямувати /dev/null на стандартний ввід: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: помилковий символ шаблону" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: coproc [%d:%s] все ще існує" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "помилка каналу" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: перевищено максимальний рівень вкладеності eval (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності джерела (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: перевищено максимальний рівень вкладеності функцій (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: обмеження: не можна вказувати `/' у назві команди" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неправильний інтерпретатор" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не вдалося виконати бінарний файл: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "%s є спеціальною вбудованою командою оболонки" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не вдалося створити копію файлового дескриптору %d у %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "рівень вкладення виразів перевищено" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "нестача стеку рекурсії" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "синтаксична помилка у виразі" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "спроба призначення не-змінної" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "синтаксична помилка у виразі" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "ділення на 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "вада: неправильна лексема у виразі" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "очікувалася `:' умовного виразу" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "експонента менша за 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "відсутня `)'" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "синтаксична помилка: очікувався операнд" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "синтаксична помилка: помилковий арифметичний оператор" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (позначка помилки \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "некоректна арифметична основа" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "завелике значення основи" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: помилка у виразі\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не вдалося отримати доступ до каталогів вищого рівня" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не вдалося перевстановити режим без затримки файлового дескриптору %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не вдалося отримати новий файловий дескриптор для вводу bash з файлового " "дескриптору %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: для нового файлового дескриптору %d вже існує буфер" @@ -1165,155 +1170,160 @@ msgstr "save_bash_input: для нового файлового дескрипт msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "ідентифікатор відгалуженого процесу %d знайдено у поточному завданні %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "вилучення зупиненого завдання %d, що має групу процесів %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процес %5ld (%s) у the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: ідентифікатор процесу %5ld (%s) вказує на його працездатність" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ідентифікатор процесу не існує" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Завершено" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Зупинено" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Зупинено(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Працює" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Зроблено(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Вихід %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Невідомий стан" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(збережено знімок оперативної пам’яті)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (РД: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "зміна групи дочірнього процесу (%ld на %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: процес %ld не є відгалуженим від цієї оболонки" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема запису для процесу %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: завдання %d зупинене" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: завдання завершилося" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: завдання %d вже працює в фоні" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: увімкнути WNOHANG, щоб уникнути нескінченного блокування" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: рядок %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (збережено знімок оперативної пам’яті)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(тепер РД: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: помилка getpgrp" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: алгоритм реалізації рядків" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: алгоритм реалізації рядків" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не вдалося встановити групу процесу для термінала (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "ця оболонка не може керувати завданнями" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: умова не виконується: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1322,43 +1332,43 @@ msgstr "" "\r\n" "malloc: %s:%d: потрібна умова не виконується\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "невідомий" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: зайнятий блок у списку вільних" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: аргумент є вже звільненим блоком" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: блок ще не виділено" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: розмір у записах на початку та в кінці блоку відрізняється" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: блок ще не виділено" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: розмір у записах на початку та в кінці блоку відрізняється" @@ -1400,22 +1410,22 @@ msgstr "%s: неправильно вказаний мережевий шлях" msgid "network operations not supported" msgstr "мережеві операції не підтримуються" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не вдалося змінити локаль (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не вдалося змінити локаль (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не вдалося змінити локаль (%s): %s" @@ -1433,261 +1443,267 @@ msgstr "Нова пошта у $_" msgid "The mail in %s has been read\n" msgstr "Пошту у %s прочитано\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "синтаксична помилка: потрібен арифметичний вираз" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "синтаксична помилка: неочікувана `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксична помилка: `((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: неправильний тип інструкції %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document з рядка %d закінчено кінцем файла (очікувалося «%s»)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: інструкція переспрямування `%d' поза межами" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" +"shell_getc: shell_input_line_size (%zu) перевищує обмеження SIZE_MAX (%lu): " +"рядок обрізано" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "перевищено максимальну можливу кількість here-document" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "файл скінчився раніше, ніж було знайдено відповідний «%c»" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "файл скінчився раніше, ніж було знайдено `]]'" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксична помилка в умовному виразі: неочікувана лексема «%s»" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "синтаксична помилка в умовному виразі" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочікувана лексема «%s», очікувалася `)'" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "очікувалася `)'" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора «%s»" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочікувана лексема «%s», очікувався бінарний умовний оператор" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "очікувався бінарний умовний оператор" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора «%s»" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочікувана лексема «%c» в умовній команді" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочікувана лексема «%s» в умовній команді" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочікувана лексема %d в умовній команді" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксична помилка коло неочікуваної лексеми «%s»" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "синтаксична помилка коло «%s»" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "синтаксична помилка: раптово скінчився файл" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "синтаксична помилка" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Використовуйте \"%s\", щоб вийти з оболонки.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "файл скінчився, перш ніж було знайдено відповідну `)'" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "завершення: функцію «%s» не знайдено" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s: можливий цикл повторних спроб" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: неправильний з’єднувальний оператор `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: некоректний дескриптор файла" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: нульовий вказівник на файл" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" "дескриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%" "d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: неправильний символ шаблону" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "дескриптор файла поза можливими межами" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначне переспрямування" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: заборонено перезаписувати існуючі файли" +msgstr "%s: заборонено перезаписувати наявні файли" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: обмеження: переспрямування виводу заборонене" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не вдалося створити тимчасовий файл для here-document: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не вдалося надати змінній значення дескриптора файла" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не підтримується" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "помилка переспрямування: не вдалося створити копію дескриптора файла" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "не вдалося знайти /tmp, будь ласка створіть його!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp має бути чинною назвою каталогу" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: помилковий параметр" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не вдалося встановити uid %d: ефективним є uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не вдалося встановити gid %d: ефективним є gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "не вдалося запустити засіб діагностики: режим діагностування вимкнено" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: це каталог" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "У мене нема назви!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версія %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1696,63 +1712,63 @@ msgstr "" "Використовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" "\t%s [довгий параметр GNU] [параметр] файл_сценарію ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Довгі параметри GNU:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Параметри оболонки:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s чи -o параметр\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри " "оболонки.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди " "оболонки.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Щоб повідомити про помилку в програмі, використовуйте команду `bashbug'.\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Домашня сторінка bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Загальна довідкова інформація щодо використання програмного забезпечення " "GNU: \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: некоректна операція" #: siglist.c:48 msgid "Bogus signal" -msgstr "Неіснуючий сигнал" +msgstr "Ненаявний сигнал" #: siglist.c:51 msgid "Hangup" @@ -1919,21 +1935,21 @@ msgstr "Невідомий сигнал №" msgid "Unknown Signal #%d" msgstr "Невідомий сигнал №%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неправильна заміна: немає заключної «%s» у %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: неможливо означити елемент масиву списком" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "не вдалося створити канал для підставляння процесу" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "не вдалося створити дочірній процес для підставляння процесу" @@ -1952,61 +1968,65 @@ msgstr "не вдалося відкрити іменований канал %s msgid "cannot duplicate named pipe %s as fd %d" msgstr "не вдалося здублювати іменований канал %s як fd %d" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "неправильна заміна: немає заключної \"`\" у %s" +msgstr "заміна команди: проігноровано порожній байт у вхідних даних" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "не вдалося створити канал для підставляння команди" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "не вдалося створити дочірній процес для підставляння команди" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не вдалося створити копію каналу із файловим " "дескриптором 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: некоректна назва змінної для посилання за назвою" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: неправильна заміна" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: некоректне непряме розгортання" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "%s: некоректна назва змінної" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: параметр нульової довжини чи не вказаний" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр нульової довжини чи не вказаний" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: підрядок коротший за 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: неправильна заміна" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не можна призначити таким чином" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -2014,12 +2034,12 @@ msgstr "" "у наступних версіях оболонки буде виконуватися обчислення для заміни " "арифметичних виразів" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неправильна заміна: немає заключної \"`\" у %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "нема відповідника: %s" @@ -2042,30 +2062,30 @@ msgstr "очікувалася `)'" msgid "`)' expected, found %s" msgstr "очікувалася `)', отримано %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: очікувався унарний оператор" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: очікувався бінарний оператор" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "відсутня `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "неправильний номер сигналу" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неправильне значення у trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2073,87 +2093,86 @@ msgstr "" "run_pending_traps: обробник сигналу є SIG_DFL, %d (%s) повторно надсилається " "собі" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неправильний сигнал %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "помилка імпортування означення функції «%s»" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "рівень оболонки (%d) занадто високий, перевстановлено у 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: немає контексту функції у поточній області" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: змінною не може бути значення, яке приймають інші змінні" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: некоректна назва змінної для посилання за назвою" +msgstr "%s: присвоєння цілого числа посиланню з назвою" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: немає контексту функції у поточній області" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s має нульове значення рядка експортування" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Помилковий символ %d у рядку експорту для %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "немає `=' у рядку експорту для %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: перший елемент shell_variables не є контекстом функції" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: немає контексту global_variables" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: перший елемент shell_variables не є тимчасовим оточенням виконання" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не вдалося відкрити ФАЙЛ" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: некоректне значення дескриптора файла трасування" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значення сумісності не належить припустимому діапазону значень" #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc., 2015" +msgstr "© Free Software Foundation, Inc., 2016" #: version.c:47 version2.c:47 msgid "" @@ -2178,22 +2197,22 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Не надається НІЯКИХ ГАРАНТІЙ у межах, передбачених законом." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не вдалося виділити %lu байтів (виділено %lu байтів)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не вдалося виділити %lu байтів" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не вдалося виділити %lu байтів (виділено %lu байтів)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не вдалося виділити %lu байтів" @@ -2322,9 +2341,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [завдання ...] чи jobs -x команда [аргументи]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [завдання ...]" +msgstr "disown [-h] [-ar] [специфікація завдання ... | pid ...]" #: builtins.c:134 msgid "" @@ -2408,7 +2426,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим-доступу]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [ідентифікатор]" #: builtins.c:181 @@ -2531,9 +2550,10 @@ msgstr "" "t] [-u дескриптор] [-C обробник] [-c крок] [масив]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n кількість] [-O початок-відліку] [-s кількість] [-t] [-u " "дескриптор] [-C обробник] [-c крок] [масив]" @@ -2954,6 +2974,7 @@ msgstr "" " знайдено." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2972,11 +2993,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3030,7 +3051,6 @@ msgstr "" " помилки під час виконання." #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3038,7 +3058,7 @@ msgid "" msgstr "" "Встановлює значення та властивості змінних.\n" " \n" -" Команда вийшла з ужитку. Дивіться `help declare'." +" Синонім `declare'. Дивіться `help declare'." #: builtins.c:538 msgid "" @@ -3419,14 +3439,14 @@ msgstr "" "Показує чи запускає команди зі списку попередньо запущених.\n" " \n" " Fc використовується для показу чи редагування та подальшого повторного\n" -" запуску команд з історії. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n" +" запуску команд з журналу. ПЕРШИЙ та ОСТАННІЙ можуть вказувати діапазон\n" " або ПЕРШИЙ може бути рядком, тоді він означатиме останню команду, що\n" " починалася з цього рядка.\n" " \n" " Параметри:\n" " -e РЕДАКТОР\tВказує редактор. Зазвичай це FCEDIT, EDITOR чи vi,\n" " \t\tщо перше буде знайдене.\n" -" -l\tПоказати рядки історії, замість редагування.\n" +" -l\tПоказати рядки журналу, замість редагування.\n" " -n\tНе виводити номери рядків у списку.\n" " -r\tПоказувати у зворотньому порядку (найновіші першими).\n" " \n" @@ -3534,6 +3554,7 @@ msgstr "" " вказано помилковий параметр." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3548,7 +3569,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3586,7 +3607,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3612,7 +3634,7 @@ msgid "" msgstr "" "Показує чи змінює список попередніх команд.\n" " \n" -" Показує список історії команд з номерами рядків, вказуючи `*' перед " +" Показує список журналу команд з номерами рядків, вказуючи `*' перед " "кожним\n" " зміненим рядком. Якщо вказано аргумент N, показує лише N останніх " "рядків.\n" @@ -3621,17 +3643,17 @@ msgstr "" " -c\tВилучити зі списку усі збережені команди.\n" " -d позиція\tВилучити рядок у ПОЗИЦІЇ (відносній).\n" " \n" -" -a\tДодати записи з поточної сесії до файла історії.\n" -" -n\tДодати записи, яких ще немає в списку з файла історії.\n" -" -r\tПрочитати файл історії та додати його вміст до кінця списку.\n" -" -w\tЗаписати поточну історію команд до файла історії та додати\n" -" \tїх до кінця списку історії.\n" +" -a\tДодати записи з поточного сеансу до файла журналу.\n" +" -n\tДодати записи, яких ще немає у списку з файла журналу, і\n" +" \t\tдописати їх до файла журналу.\n" +" -r\tПрочитати файл журналу та додати його вміст до кінця списку.\n" +" -w\tЗаписати поточний журнал команд до файла журналу.\n" " \n" -" -p\tЗробити розкриття історії команд на кожному з АРГУМЕНТІВ та\n" -" \tпоказати результат (без збереження у списку історії команд).\n" -" -s\tДодати АРГУМЕНТИ до списку історії як один запис.\n" +" -p\tЗробити розкриття журналу команд на кожному з АРГУМЕНТІВ та\n" +" \tпоказати результат (без збереження у списку журналу команд).\n" +" -s\tДодати АРГУМЕНТИ до списку журналу як один запис.\n" " \n" -" Якщо вказаний ФАЙЛ, його буде використано як файл історії команд. " +" Якщо вказаний ФАЙЛ, його буде використано як файл журналу команд. " "Інакше,\n" " якщо визначено $HISTFILE, береться її значення, якщо ні — ~/." "bash_history.\n" @@ -3646,7 +3668,7 @@ msgstr "" "виникло\n" " помилки під час виконання." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3691,7 +3713,7 @@ msgstr "" " виникло помилки під час виконання. При використанні -x команда\n" " завершується зі статусом завершення КОМАНДИ." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3723,8 +3745,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " ЗАВДАННЯ." -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3758,6 +3779,7 @@ msgstr "" " -n сигнал\tСИГНАЛ є номером сигналу.\n" " -l\tПерелічити назви сигналів; якщо за -l ідуть іще аргументи, вони\n" " \t\tвважаються номерами сигналів, які треба показати.\n" +" -L\tсинонім до -l\n" " \n" " Kill є вбудованою командою з двох причин: це дозволяє вказувати\n" " ідентифікатори завдань замість ідентифікаторів процесів та дозволяє\n" @@ -3767,7 +3789,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні аргументи та не\n" " трапилося помилки під час виконання." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3853,7 +3875,8 @@ msgstr "" " Якщо результатом обчислення останнього АРГУМЕНТУ є 0, let повертає 1,\n" " інакше — 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3874,7 +3897,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3951,7 +3974,7 @@ msgstr "" " встановлення значення змінної, або якщо із -u вказано неправильний " "файловий дескриптор." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3972,8 +3995,7 @@ msgstr "" " Код завершення:\n" " Команда повертає N, або помилку, якщо викликана не у функції чи сценарії." -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4086,7 +4108,7 @@ msgstr "" " functrace те саме, що й -T\n" " hashall те саме, що й -h\n" " histexpand те саме, що й -H\n" -" history ввімкнути збереження історії команд\n" +" history ввімкнути збереження журналу команд\n" " ignoreeof не виходити з оболонки після зчитування кінця " "файла\n" " interactive-comments\n" @@ -4125,15 +4147,16 @@ msgstr "" " -v Друкувати рядки вводу по мірі їх читання.\n" " -x Друкувати команди та їх аргументи при їх виконанні.\n" " -B Виконувати розкриття дужок.\n" -" -C Вмикання параметра забороняє перезапис існуючих звичайних файлів\n" +" -C Вмикання параметра забороняє перезапис наявних звичайних файлів\n" " переспрямуванням виводу.\n" " -E Якщо ввімкнений, пастка ERR успадковується функціями оболонки.\n" -" -H Ввімкнути підставляння історії за допомогою !. Цей параметр " +" -H Ввімкнути підставляння журналу за допомогою !. Цей параметр " "зазвичай\n" " ввімкнено у інтерактивних оболонках.\n" " -P Не переходити за символічними посиланнями при запуску команд,\n" " таких як cd, яка змінює поточний каталог.\n" -" -T Якщо ввімкнений, пастка DEBUG буде успадковуватися функціями\n" +" -T Якщо ввімкнений, пастки DEBUG і RETURN будуть успадковуватися " +"функціями\n" " оболонки.\n" " -- Призначити всі аргументи, які ще не призначено до позиційних " "параметрів.\n" @@ -4153,7 +4176,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказані правильні параметри." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4194,7 +4217,7 @@ msgstr "" "НАЗВА\n" " доступна лише для читання." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4228,7 +4251,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4267,7 +4290,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та НАЗВИ." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4285,7 +4308,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо N менше за нуль чи більше за $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4309,7 +4332,7 @@ msgstr "" "або\n" " помилку, якщо ФАЙЛ не вдалося прочитати." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4334,7 +4357,7 @@ msgstr "" " Команда завершується невдало, якщо не ввімкнене керування завданнями чи\n" " якщо трапиться помилка." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4499,7 +4522,7 @@ msgstr "" "вказано\n" " помилковий аргумент чи ВИРАЗ хибний." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4512,7 +4535,7 @@ msgstr "" "останнім\n" " аргументом має бути `]'." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4531,7 +4554,7 @@ msgstr "" " Код завершення:\n" " Команда завжди успішна." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4607,7 +4630,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні параметри та " "СИГНАЛИ." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4659,7 +4682,7 @@ msgstr "" "якщо\n" " хоч одне з них не вдасться знайти." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4755,7 +4778,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " трапилася помилка під час виконання." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4789,7 +4812,8 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильну МАСКУ та параметри." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4797,13 +4821,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4825,7 +4851,7 @@ msgstr "" "вказано\n" " неправильні параметри чи ІДЕНТИФІКАТОР." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4854,7 +4880,7 @@ msgstr "" " Повертає код помилки, якщо вказано неправильний ІДЕНТИФІКАТОР чи " "параметр." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4875,7 +4901,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4905,7 +4931,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4944,7 +4970,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4972,7 +4998,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення ЛАНЦЮЖКА-КОМАНД." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4990,7 +5016,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5023,7 +5049,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди або нуль,\n" " якщо жодна з перевірених умов не була істинною." -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5041,7 +5067,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5060,8 +5086,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди." # WTF? How can it return exit code of _asynchronous_ process... -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5083,9 +5108,9 @@ msgstr "" " Стандартна назва змінної — \"COPROC\".\n" " \n" " Код завершення:\n" -" Команда повертає код завершення КОМАНДИ." +" Команда coproc повертає стан виходу 0." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -5111,7 +5136,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо НАЗВА є незмінною." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -5130,7 +5155,7 @@ msgstr "" " Код завершення:\n" " Конструкція повертає код завершення останньої виконаної команди." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5155,7 +5180,7 @@ msgstr "" " Код завершення:\n" " Команда повертає статус продовженого завдання." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5173,7 +5198,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо результат обчислення ненульовий." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5222,7 +5247,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо ВИРАЗ істинний." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5284,7 +5309,7 @@ msgstr "" "будуть\n" " \t\tігноруватися під час розкриття шляхів.\n" " HISTFILE\tНазва файла, де зберігається історія команд.\n" -" HISTFILESIZE\tНайбільша дозволена кількість записів у файлі історії.\n" +" HISTFILESIZE\tНайбільша дозволена кількість записів у файлі журналу.\n" " HISTSIZE\tНайбільша кількість записів, які може використовувати\n" " \t\tпоточна оболонка.\n" " HOME\tПовний шлях до вашої домівки.\n" @@ -5318,14 +5343,14 @@ msgstr "" " \t\t`substring' означає, що слово має міститися у команді завдання.\n" " \t\tБудь-яке інше значення означає, що команда завдання має\n" " \t\tпочинатися з вказаного слова.\n" -" histchars\tСимволи, що використовуються для розкриття історії та\n" -" \t\tшвидкої заміни. Перший символ є символом підставляння історії,\n" +" histchars\tСимволи, що використовуються для розкриття журналу та\n" +" \t\tшвидкої заміни. Перший символ є символом підставляння журналу,\n" " \t\tзазвичай це `!'. Другий — символ «швидкої заміни», зазичай `^'.\n" " \t\tТретій — символ «коментаря журналу», зазвичай це `#'.\n" " HISTIGNORE\tРозділений двокрапкою список шаблонів, що використовуються\n" -" \t\tпри визначенні, чи зберігати команду у списку історії.\n" +" \t\tпри визначенні, чи зберігати команду у списку журналу.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5383,7 +5408,7 @@ msgstr "" " Команда завершується невдало, якщо вказаний неправильний аргумент чи\n" " якщо не вдалося змінити поточну каталог." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5435,7 +5460,7 @@ msgstr "" " Команда завершується невдало, якщо вказано помилковий аргумент чи якщо\n" " не вдалося змінити поточний каталог." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5489,14 +5514,14 @@ msgstr "" "якщо\n" " трапиться помилка." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5525,7 +5550,7 @@ msgstr "" " Команда завершується успішно, якщо ПАРАМЕТР ввімкнено; невдало, якщо\n" " вказано неправильні параметри чи ПАРАМЕТР вимкнено." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5597,7 +5622,7 @@ msgstr "" "або\n" " якщо трапиться помилка запису чи присвоєння." -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5646,7 +5671,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та не\n" " трапиться помилки під час виконання." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5668,7 +5693,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри і не\n" " трапиться помилки під час виконання." -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5722,7 +5747,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та\n" " вказівки завершень для НАЗВ існують." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5805,7 +5830,7 @@ msgstr "" "або\n" " якщо МАСИВ є незмінним." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/vi.gmo b/po/vi.gmo index 9d187c416..e67ed81c8 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index b7f1bbf49..45db27f0c 100644 --- a/po/vi.po +++ b/po/vi.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2015-10-18 07:47+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -18,123 +18,124 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.7\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "sai chỉ số mảng" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: khóa mảng liên kết không hợp lệ" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: không thể gán cho chỉ số không thuộc kiểu số" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: phải sử dụng chỉ số phụ khi gán mảng kết hợp" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: không thể tạo: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ký tự khác khoảng trắng đầu tiên không phải là “\"”" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "thiếu dấu đóng “%c” trong %s" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: thiếu dấu hai chấm phân cách" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "khai triển ngoặc ôm: không thể phân bổ bộ nhớ cho %s" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%d” phần tử" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%s”" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "“%s”: tên bí danh không hợp lệ" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "chưa bật sửa đổi dòng" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "“%s”: tên sơ đồ phím không hợp lệ" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s: không thể đọc: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "“%s”: không thể tháo" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "“%s”: không hiểu tên hàm" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s không được ràng buộc với bất kỳ phím nào.\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s có thể được gọi thông qua " -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%s”: không thể tháo" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "đếm vòng" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "chỉ có nghĩa trong vòng lặp “for”, “while” hay “until”" @@ -148,163 +149,163 @@ msgstr "" "\n" " Nếu không có BTHỨC thì trả về " -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "Chưa đặt biến môi trường HOME" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "quá nhiều đối số" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "không có thư mục khác" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "Chưa đặt biến môi trường OLDPWD" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "dòng %d: " -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "cảnh báo: " -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: cách dùng: " -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s: tùy chọn cần một đối số" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s: cần đối số thuộc kiểu số" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s: không tìm thấy" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s: tùy chọn không hợp lệ" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s: tên tùy chọn không hợp lệ" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "“%s”: không phải là định danh hợp lệ" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "số bát phân không hợp lệ" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "số thập lục không hợp lệ" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "số không hợp lệ" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sai đặc tả tín hiệu" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "“%s”: không phải một pid hoặc đặc tả công việc hợp lệ" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s: biến chỉ đọc" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s: %s nằm ngoài phạm vi" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "đối số" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s nằm ngoài phạm vi" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s: không có công việc như vậy" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s: không có điều khiển công việc" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "không có điều khiển công việc" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s: bị hạn chế" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "bị hạn chế" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s: không phải là lệnh tích hợp trong hệ vỏ" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "lỗi ghi: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "lỗi lấy các thuộc tính thiết bị cuối: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: lỗi lấy thư mục hiện thời: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: đặc tả công việc chưa rõ ràng" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "trợ giúp không sẵn có ở phiên bản này" @@ -313,69 +314,69 @@ msgstr "trợ giúp không sẵn có ở phiên bản này" msgid "%s: invalid action name" msgstr "%s: tên hành động không hợp lệ" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s: không có đặc tả tự hoàn thiện" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "cảnh báo: tùy chọn “-F” có thể không hoạt động như mong đợi" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "cảnh báo: tùy chọn “-C” có thể không hoạt động như bạn mong đợi" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "hiện thời không thực thi chức năng tự hoàn thiện" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "chỉ có thể dùng trong một hàm" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: biến tham chiếu không thể là một mảng" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: biến nameref tự tham chiếu là không được phép" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: tên tham chiếu quẩn tròn" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "không thể dùng “-f” để tạo hàm" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s: hàm chỉ đọc" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: không thể hủy biến mảng bằng cách này" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số" @@ -409,68 +410,68 @@ msgstr "%s không được tải động" msgid "%s: cannot delete: %s" msgstr "%s: không thể xóa: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: là thư mục" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: không phải là tập tin thường" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: tập tin quá lớn" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: không thể thực hiện tập tin nhị phân" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: không thể thực thi: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "đăng xuất\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "không phải hệ vỏ đăng nhập: hãy dùng lệnh “exit”" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "Có công việc bị dừng.\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "Có công việc đang chạy.\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "không tìm thấy lệnh" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "đặc tả lịch sử" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: không thể mở tập tin tạm: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "hiện tại" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "công việc %d đã khởi chạy mà không có điều khiển công việc" @@ -485,27 +486,26 @@ msgstr "%s: tùy chọn không được phép -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chọn cần đối số -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "tắt băm" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: bảng băm rỗng\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "gợi ý\tlệnh\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Câu lệnh hệ vỏ tương ứng với từ khóa “" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -513,12 +513,12 @@ msgstr "" "không có trợ giúp cho “%s”. Hãy chạy lệnh “help help” hoặc “man -k %s” hay " "“info %s”." -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: không thể mở: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -538,20 +538,21 @@ msgstr "" "Dấu sao (*) bên cạnh tên nghĩa là lệnh bị tắt.\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "chỉ có thể dùng một của những tùy chọn -anrw" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "vị trí lịch sử" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: đối số không hợp lệ" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: gặp lỗi khi khai triển lịch sử" @@ -565,16 +566,16 @@ msgstr "%s: inlib bị lỗi" msgid "no other options allowed with `-x'" msgstr "không cho phép dùng tùy chọn thêm với “-x”" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: đối số phải là ID tiến trình hoặc công việc" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Lỗi không rõ" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "cần biểu thức" @@ -583,69 +584,69 @@ msgstr "cần biểu thức" msgid "%s: not an indexed array" msgstr "%s: không phải là mảng chỉ số" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: bộ mô tả tập tin không hợp lệ: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: sai số lượng dòng" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: gốc mảng không hợp lệ" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: lượng gọi ngược không hợp lệ" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "tên biến mảng vẫn trống" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "cần hỗ trợ biến mảng" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "“%s”: thiếu ký tự định dạng" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "“%c”: đặc tả định dạng thời gian không đúng" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "“%c”: ký tự định dạng không hợp lệ" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "cảnh báo: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "vấn đề phân tích cú pháp định dạng: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "thiếu chữ số thập lục phân cho \\x" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "thiếu chữ số unicode cho \\%c" @@ -659,19 +660,19 @@ msgstr "không có thư mục khác" msgid "%s: invalid argument" msgstr "%s: đối số không hợp lệ" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "ngăn xếp thư mục trống" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "chỉ số ngăn xếp thư mục" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +712,7 @@ msgstr "" " -N\thiển thị mục thứ N đếm từ bên phải khi gọi không tùy chọn,\n" " bắt đầu từ số không." -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -755,7 +756,7 @@ msgstr "" "\n" " Lệnh “dirs” hiển thị ngăn xếp thư mục." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -793,45 +794,45 @@ msgstr "" "\n" " Lệnh “dirs” hiển thị ngăn xếp thư mục." -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sai đặc tả thời gian chờ tối đa" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "lỗi đọc: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "chỉ có thể “return” từ một hàm hoặc văn lệnh được “source”" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "không thể hủy đặt đồng thời một hàm VÀ một biến" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: không thể hủy đặt" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: không thể hủy đặt: %s chỉ đọc" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: không phải biến mảng" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: không phải hàm" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" msgstr "%s: không thể xuất" @@ -840,20 +841,20 @@ msgstr "%s: không thể xuất" msgid "shift count" msgstr "số lượng dịch" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "không thể đồng thời đặt và hủy đặt các tùy chọn hệ vỏ" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: tên tùy chọn hệ vỏ không hợp lệ" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "cần đối số tên tập tin" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: không tìm thấy tập tin" @@ -866,61 +867,61 @@ msgstr "không thể ngưng" msgid "cannot suspend a login shell" msgstr "không thể ngưng hệ vỏ đăng nhập" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s là bí danh của “%s”\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s là từ khóa của hệ vỏ\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s là một hàm\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s là lệnh tích hợp đặc biệt của hệ vỏ\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s là lệnh tích hợp hệ vỏ\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s là %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s được băm (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: đối số giới hạn không hợp lệ" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "“%c”: câu lệnh sai" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: không thể lấy giới hạn: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "giới hạn" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: không thể sửa đổi giới hạn: %s" @@ -939,202 +940,207 @@ msgstr "“%c”: toán tử chế độ ký hiệu không hợp lệ" msgid "`%c': invalid symbolic mode character" msgstr "“%c”: ký tự chế độ ký hiệu không hợp lệ" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " dòng " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "lệnh cuối: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "Hủy bỏ…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "THBÁO:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "lỗi lệnh không rõ" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "kiểu lệnh sai" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "bộ kết nối sai" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "nhảy sai" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: biến chưa liên kết" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aquá thời hạn đợi dữ liệu nhập: tự động đăng xuất\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ĐỊNH DẠNG THỜI GIAN: “%c”: ký tự định dạng không hợp lệ" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "lỗi ống dẫn" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ nguồn lồng nhau tối đa (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: bị hạn chế: không thể dùng “/” trong tên lệnh" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s: không tìm thấy lệnh" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bộ thông dịch sai" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: không thể thực hiện tập tin nhị phân: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "“%s”: là lệnh tích hợp đặc biệt" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "không thể nhân đôi fd %d thành fd %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "vượt quá ngưỡng đệ quy của biểu thức" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "tràn ngược ngăn xếp đệ quy" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "lỗi cú pháp trong biểu thức" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "thử gán cho thứ không phải biến" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "lỗi cú pháp trong biểu thức" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "chia cho không" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "lỗi: “token expassign” sai" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "cần “:” cho biểu thức điều kiện" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "số mũ nhỏ hơn 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "cần định danh sau tăng/giảm dần trước" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "thiếu “)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "lỗi cú pháp: cần toán hạng" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "lỗi cú pháp: toán tử số học không hợp lệ" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (thẻ bài lỗi là \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "cơ số (toán học) không hợp lệ" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "cơ số có giá trị quá lớn" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: lỗi biểu thức\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: không thể truy cập thư mục cấp trên" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "không thể đặt lại chế độ “nodelay” cho fd %d" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "không thể cấp phát bộ mô tả tập tin mới cho dữ liệu nhập bash từ fd %d" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: đã có bộ đệm cho fd mới %d" @@ -1144,154 +1150,159 @@ msgstr "save_bash_input: đã có bộ đệm cho fd mới %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid được tánh nhánh %d có vẻ đang chạy trong công việc %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: không có pid như vậy" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "Tín hiệu %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "Xong" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "Bị dừng" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "Bị dừng(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "Đang chạy" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "Xong(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "Thoát %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "Không rõ trạng thái" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(xuất ra core)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid tiến trình con (%ld thành %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld không phải là tiến trình con của hệ vỏ này" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Không có mục ghi về tiến trình %ld" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: công việc %d bị dừng chạy" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: công việc bị chấm dứt" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: công việc %d đã đang chạy nền" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: dòng %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (xuất ra core)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(wd ngay: %s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp bị lỗi" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: kỷ luật dòng" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: kỷ luật dòng" # Nghĩa chữ : dừng dịch -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "không có điều khiển công việc trong hệ vỏ này" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: khẳng định gặp lỗi: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1300,41 +1311,41 @@ msgstr "" "\r\n" "malloc: %s:%d: khẳng định bị sai\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "không rõ" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "" "malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn " "trống bị ghi vào" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: đã được gọi với đối số khối đã được giải phóng" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: kích cỡ đoạn đầu và cuối không trùng" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: đã được gọi với đối số khối chưa cấp phát" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng" @@ -1376,22 +1387,22 @@ msgstr "%s: đặc tả đường dẫn mạng sai" msgid "network operations not supported" msgstr "không hỗ trợ thao tác mạng" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: không thể chuyển đổi miền địa phương (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: không thể chuyển đổi miền địa phương (%s): %s" @@ -1409,147 +1420,147 @@ msgstr "Bạn có thư mới trong $_" msgid "The mail in %s has been read\n" msgstr "Đã đọc thư trong %s\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "lỗi cú pháp: cần biểu thức số học" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "lỗi cú pháp: gặp dấu chấm phẩy “;” bất thường" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "lỗi cú pháp: “((%s))”" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: kiểu chỉ lệnh sai %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (muốn “%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: chỉ dẫn chuyển hướng “%d” nằm ngoài phạm vi" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "vượt quá số lượng tài-liệu-đây tối đa" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “%c” tương ứng" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “]]”" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện: thẻ bài bất thường “%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "gặp lỗi cú pháp trong biểu thức điều kiện" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "gặp thẻ bài bất thường “%s”, cần “)”" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "cần “)”" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "đối số bất thường “%s” cho toán tử một ngôi điều kiện" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "đối số bất thường cho toán tử một ngôi điều kiện" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "thẻ bài bất thường “%s”, cần toán tử hai ngôi điều kiện" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "cần toán tử hai ngôi điều kiện" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "đối số bất thường “%s” cho toán tử hai ngôi điều kiện" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "đối số bất thường cho toán tử hai ngôi điều kiện" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "gặp thẻ bài bất thường “%c” trong câu lệnh điều kiện" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "gặp thẻ bài bất thường “%s” trong câu lệnh điều kiện" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "gặp thẻ bài bất thường “%d” trong câu lệnh điều kiện" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "có lỗi cú pháp ở gần thẻ bài bất thường “%s”" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "lỗi cú pháp ở gần “%s”" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "lỗi cú pháp: kết thúc tập tin bất thường" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "lỗi cú pháp" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Dùng \"%s\" để rời hệ vỏ.\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "gặp kết thúc tập tin bất thường trong khi tìm “)” tương ứng" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "tự hoàn thiện: không tìm thấy hàm “%s”" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1559,110 +1570,114 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bộ kết nối sai “%d”" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: sai bộ mô tả tập tin" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: con trỏ tập tin NULL" # Nghĩa chữ ? -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: “%c”: ký tự định dạng không hợp lệ" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "bộ mô tả tập tin ở ngoại phạm vi" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: chuyển hướng chưa rõ ràng" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: không thể ghi đè lên tập tin đã có" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "không thể tạo tập tin tạm thời cho tài liệu này: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: không thể gán fd vào biến" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ nếu không có mạng" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "lỗi chuyển hướng: không thể nhân đôi fd" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "không tìm thấy /tmp, hãy tạo mới!" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "“/tmp” phải là tên thư mục hợp lệ" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: tùy chọn không hợp lệ" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "không thể đặt uid thành %d: uid chịu tác động %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "không thể đặt gid thành %d: gid chịu tác động %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" msgstr "%s: Là một thư mục" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "Không có tên!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, phiên bản %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1671,52 +1686,52 @@ msgstr "" "Cách dùng:\t%s [tùy chọn GNU dài] [tùy chọn] …\n" "\t\t%s [tùy chọn GNU dài] [tùy chọn] tập-tin-văn-lệnh …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "Tùy chọn dài:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Tùy chọn:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chọn-ngắn\t\t(chỉ gọi)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s hoặc -o tùy-chọn\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Gõ “%s -c \"help set\"” để xem thông tin về các tùy chọn hệ vỏ.\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Gõ “%s -c help” để xem thông tin về các lệnh hệ vỏ tích hợp.\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Dùng lệnh “bashbug” để thông báo lỗi.\n" "Báo cáo các lỗi dịch cho: .\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "Trang chủ bash: \n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" "Trợ giúp chung về cách sử dụng phần mềm GNU : \n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: thao tác không hợp lệ" @@ -1890,21 +1905,21 @@ msgstr "Tín hiệu lạ #" msgid "Unknown Signal #%d" msgstr "Tín hiệu lạ #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sai chỉ số phụ: không có đóng “%s” trong %s" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: không thể gán danh sách cho bộ phận của mảng" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "không thể tạo ống dẫn để thay thế tiến trình" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "không thể tạo tiến trình con để thay thế tiến trình" @@ -1923,71 +1938,76 @@ msgstr "không thể mở ống dẫn có tên %s để ghi" msgid "cannot duplicate named pipe %s as fd %d" msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "không thể tạo ống dẫn để thay thế lệnh" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "không thể tạo tiến trình con để thay thế lệnh" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: thay thế sai" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: triển khai gián tiếp không hợp lệ" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" msgstr "“%s”: tên biến không hợp lệ" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: tham số null hoặc chưa được đặt" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: tham số null hoặc chưa được đặt" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: biểu thức chuỗi con < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: thay thế sai" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: không thể gán bằng cách này" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "phiên bản hệ vỏ mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "không khớp: %s" @@ -2010,30 +2030,30 @@ msgstr "cần “)”" msgid "`)' expected, found %s" msgstr "cần “)” nhưng lại nhận được %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: cần toán tử một ngôi" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: cần toán tử hai ngôi" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "thiếu “]”" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "số thứ tự tín hiệu không hợp lệ" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -2041,82 +2061,82 @@ msgstr "" "run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho " "chính mình" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: tín hiệu sai %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "gặp lỗi khi nhập vào định nghĩa hàm cho “%s”" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "cấp hệ vỏ (%d) quá cao nên đặt lại thành 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: không thể gán giá trị cho biến" -#: variables.c:3043 +#: variables.c:3246 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thời" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s có exportstr null" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "sai ký tự %d trong exportstr cho %s" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "không có “=” trong exportstr cho %s" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: đầu của shell_variables (các biến hệ vỏ) không phải là ngữ " "cảnh hàm" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "" "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: đầu của shell_variables (các biến hệ vỏ) không phải là phạm vi " "môi trường tạm thời" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: không thể mở như là TẬP-TIN" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết" -#: variables.c:5669 +#: variables.c:5912 #, 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" @@ -2147,22 +2167,22 @@ msgstr "Đây là phần mềm tự do; bạn có quyền sửa đổi và phát msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Ở đây KHÔNG BẢO HÀNH GÌ CẢ, với điều kiện được pháp luật cho phép." -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: không thể cấp phát %lu byte (%lu byte được cấp phát)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: không thể cấp phát %lu byte" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp phát)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: không thể cấp phát %lu byte" @@ -2373,7 +2393,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [CHẾ-ĐỘ]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [id …]" #: builtins.c:181 @@ -2495,9 +2516,10 @@ msgstr "" "GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n ĐẾM] [-O GỐC] [-s SỐ-LƯỢNG] [-t] [-u FD] [-C GỌI-NGƯỢC] [-c " "LƯỢNG] [MẢNG]" @@ -2897,6 +2919,7 @@ msgstr "" " thấy LỆNH." #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2915,11 +2938,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3441,6 +3464,7 @@ msgstr "" " Trả lại thành công nếu tìm được TÊN và không đưa ra tùy chọn sai." #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3455,7 +3479,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3489,7 +3513,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3545,7 +3570,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi." -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3588,7 +3613,7 @@ msgstr "" " Trả lại thành công nếu không gặp tùy chọn sai hay gặp lỗi.\n" " Đưa ra “-x” thì trả lại trạng thái thoát của LỆNH." -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3619,7 +3644,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn hay ĐTCV sai." -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3661,7 +3686,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3745,7 +3770,8 @@ msgstr "" " Nếu ĐỐI-SỐ cuối cùng được định giá thành 0 thì trả về 1; không thì\n" " trả về 0." -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3766,7 +3792,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3839,7 +3865,7 @@ msgstr "" " Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chờ quá\n" " lâu, hoặc đưa ra bộ mô tả tập tin sai làm đối số cho “-u”." -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3860,7 +3886,7 @@ msgstr "" " Trả lại N, hoặc bị lỗi nếu hệ vỏ không đang chạy một hàm hay văn\n" " lệnh." -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4033,7 +4059,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ phi gặp tùy chọn sai." -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4072,7 +4098,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN chỉ-đọc." -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4105,7 +4131,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn hay TÊN sai," -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4143,7 +4169,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay TÊN không hợp lệ." -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4161,7 +4187,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi N âm hay lớn hơn $#." -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4184,7 +4210,7 @@ msgstr "" " Trả lại trạng thái của câu lệnh cuối cùng được thực thi trong\n" " TẬP-TIN; không thành công nếu không thể đọc TẬP-TIN." -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4209,7 +4235,7 @@ msgstr "" " Trả lại thành công trừ khi chức năng điều khiển công việc không\n" " được bật hoặc gặp lỗi." -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4368,7 +4394,7 @@ msgstr "" " Trả lại thành công nếu BTHỨC định giá là Đúng; không thành công\n" " nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai." -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4380,7 +4406,7 @@ msgstr "" " Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n" " cùng phải là ký tự “]” để khớp với “[” ở đầu." -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4399,7 +4425,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cũng thành công." -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4476,7 +4502,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra ĐTTH sai hay tùy chọn\n" " sai." -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4533,7 +4559,7 @@ msgstr "" " Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm " "thấy." -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4625,7 +4651,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay có lỗi phát sinh." -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4658,7 +4684,8 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không có CHẾ_ĐỘ sai hay tùy chọn sai." -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4666,13 +4693,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4693,7 +4722,7 @@ msgstr "" " Trả về trạng thái của ID cuối; không thành công nếu ID sai hoặc đưa\n" " ra tùy chọn sai." -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4717,7 +4746,7 @@ msgstr "" " Trả lại trạng thái của PID; không thành công nếu PID sai, hoặc nếu\n" " đưa ra tùy chọn sai." -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4740,7 +4769,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4770,7 +4799,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:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4804,7 +4833,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4833,7 +4862,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái trả về là trạng thái trả về của ỐNG-DẪN." -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4851,7 +4880,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4886,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:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4905,7 +4934,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4924,7 +4953,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4946,7 +4975,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát của câu LỆNH." -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4969,7 +4998,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu TÊN không phải chỉ đọc." -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4987,7 +5016,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của câu lệnh cuối cùng được chạy." -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -5010,7 +5039,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái của công việc đã tiếp tục lại." -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5028,7 +5057,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0." -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5077,7 +5106,7 @@ msgstr "" " Trạng thái thoát:\n" " 0 hay 1 phụ thuộc vào giá trị của BTHỨC." -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5181,7 +5210,7 @@ msgstr "" " HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n" " \tnhững câu lệnh nào nên được lưu vào danh sách lịch sử.\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5235,7 +5264,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5283,7 +5312,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n" " chuyển đổi thư mục." -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5336,14 +5365,14 @@ msgstr "" " Trạng thái thoát:\n" " Trả về thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5373,7 +5402,7 @@ msgstr "" " Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" " đưa ra tùy chọn sai hay TÊN_TÙY_CHỌN bị tắt." -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5439,7 +5468,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:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5486,7 +5515,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chọn sai hay gặp lỗi." -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5507,7 +5536,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:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5564,7 +5593,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai, hoặc TÊN có một\n" " đặc tả tự hoàn thiện được xác định." -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5637,7 +5666,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chọn sai và MẢNG không phải\n" " chỉ đọc hay không là một mảng chỉ số." -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 5eda361f2..fb5ff039b 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 8b6bb9d11..df8cd1692 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -5,136 +5,165 @@ # Aron Xu , 2011. # Anthony Fok , 2013. # Wylmer Wang , 2014. -# Mingye Wang , 2015. +# Mingcong Bai , 2015. +# liushuyu , 2016. +# Mingye Wang , 2015, 2016. +# +# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority): +# 0. Translation coverage when upstream sends new strings. +# +# 1. Argument lists in `help` are translated, but the `help blah` text still +# refers to the original name like WORDS. +# +# These long helps should be changed to follow their `help` synopsis. Use +# <参数> to refer to `参数' in the one-line synopsis. +# +# 2. Passive voice. When used inappropriately, they sound even worse in +# Chinese than in English. In fact huge amounts of `被' is what you use to +# spot translated text. (You don't always need `被' for passive voice +# either.) +# +# 3. Typography. +# a. Capitalization. English convensions mangle command names in help text +# if it's the first word of the sentense (e.g. `Getopts blah blah...'). +# Do yourself a favor and change the names back into lowercase. +# b. Quotes. Chinese has no `typewriter quote' convension, and standard +# “curly quotes” should be used. +# c. Colons. We don't use `: ` in Chinese; use `:`. Sometimes `:` is seen +# w/o a space (worse). +# d. Other stuff like parentheses and whitespace. Alignment can be quite +# important for Feeling Good(TM). # msgid "" msgstr "" -"Project-Id-Version: bash 4.4-beta1\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" -"PO-Revision-Date: 2015-10-26 00:32-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"PO-Revision-Date: 2016-12-01 17:25-0500\n" "Last-Translator: Mingye Wang (Arthur2e5) \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.8.5\n" +"X-Generator: Poedit 1.8.11\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "数组下标不正确" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s:正在移除名称引用属性" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "%s: 无法将索引数组转化为关联数组" +msgstr "%s:无法将索引数组转化为关联数组" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: 无效的关联数组键" +msgstr "%s:无效的关联数组键" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: 无法为非数字的索引赋值" +msgstr "%s:无法为非数字的索引赋值" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "%s: %s: 为关联数组赋值时必须使用下标" +msgstr "%s:%s:为关联数组赋值时必须使用下标" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: 无法创建: %s" +msgstr "%s:无法创建: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 无法为命令找到键映射" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: 第一个非空字符不是 `\"'" +msgstr "%s:第一个非空字符不是“\"”" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" -msgstr "%2$s 中没有闭合的 `%1$c'" +msgstr "%2$s 中没有闭合的“%1$c”" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" -msgstr "%s: 缺少冒号分隔符" +msgstr "%s:缺少冒号分隔符" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "大括号展开: 无法为 %s 分配内存" +msgstr "大括号展开:无法为 %s 分配内存" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "大括号展开: 为 %d 个元素分配内存失败" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" +msgstr "大括号展开:为 %d 个元素分配内存失败" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "大括号展开: 为 `%s' 分配内存失败" +msgstr "大括号展开:为“%s”分配内存失败" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" -msgstr "`%s': 无效的别名" +msgstr "“%s”: 无效的别名" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "未启用行编辑" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" -msgstr "`%s': 无效的键映射名" +msgstr "“%s”: 无效的键映射名" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: 无法读取: %s" - -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "`%s': 无法解除绑定" +msgstr "%s:无法读取: %s" -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': 未知函数名" +msgstr "“%s”: 未知函数名" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未与任何键绑定。\n" -#: builtins/bind.def:320 +# Blame the source string. +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s 可以被调用,通过" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "“%s”: 无法解除绑定" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "循环计数" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "仅在 `for', `while', 或者`until' 循环中有意义" @@ -148,237 +177,236 @@ msgstr "" " \n" " 不带 EXPR 时,返回" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME 未设定" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "参数太多" -#: builtins/cd.def:336 -#, fuzzy +#: builtins/cd.def:334 msgid "null directory" -msgstr "无其他目录" +msgstr "空目录" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD 未设定" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " -msgstr "第 %d 行:" +msgstr "第 %d 行:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " -msgstr "警告:" +msgstr "警告:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " -msgstr "%s: 用法:" +msgstr "%s:用法:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" -msgstr "%s: 选项需要一个参数" +msgstr "%s:选项需要一个参数" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" -msgstr "%s: 需要数字参数" +msgstr "%s:需要数字参数" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" -msgstr "%s: 未找到" +msgstr "%s:未找到" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" -msgstr "%s: 无效选项" +msgstr "%s:无效选项" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" -msgstr "%s: 无效的选项名" +msgstr "%s:无效的选项名" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': 不是有效的标识符" +msgstr "“%s”: 不是有效的标识符" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "无效的八进制数" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "无效的十六进制数" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "无效数字" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: 无效的信号声明" +msgstr "%s:无效的信号声明" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': 不是有效的进程号或者任务声明" +msgstr "“%s”: 不是有效的进程号或者任务声明" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" -msgstr "%s: 只读变量" +msgstr "%s:只读变量" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s 越界" +msgstr "%s:%s 越界" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "参数" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s 越界" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" -msgstr "%s: 无此任务" +msgstr "%s:无此任务" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" -msgstr "%s: 无任务控制" +msgstr "%s:无任务控制" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "无任务控制" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" -msgstr "%s: 受限的" +msgstr "%s:受限的" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "受限的" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: 不是 shell 内建" +msgstr "%s:不是 shell 内建" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "写错误: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "设定终端属性时出错: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "获取终端属性时出错: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: 获取当前目录时出错: %s: %s\n" +msgstr "%s:获取当前目录时出错: %s:%s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: 模糊的任务声明" +msgstr "%s:模糊的任务声明" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "此版本内帮助不可用" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" -msgstr "%s: 无效的动作名" +msgstr "%s:无效的动作名" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" -msgstr "%s: 没有补全声明" +msgstr "%s:没有补全声明" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 选项可能不像您预期的那样工作" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 选项可能不像您预期的那样工作" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "当前未执行补全功能" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "只能在函数中使用" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: 引用变量不能为数组" +msgstr "%s:引用变量不能为数组" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: 不允许名称引用变量引用自身" +msgstr "%s:不允许名称引用变量引用自身" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" -msgstr "%s: 循环变量名引用" +msgstr "%s:循环变量名引用" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 -#, fuzzy, c-format +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 无效的引用变量名" +msgstr "“%s”: 无效的名称引用变量名" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "无法用 `-f' 生成函数" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" -msgstr "%s: 只读函数" +msgstr "%s:只读函数" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: 引号内的复合数组赋值已被弃用" +msgstr "%s:引号内的复合数组赋值已被弃用" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s: 无法以这种方式销毁数组变量" +msgstr "%s:无法以这种方式销毁数组变量" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: 无法将关联数组转化为索引数组" +msgstr "%s:无法将关联数组转化为索引数组" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -387,7 +415,7 @@ msgstr "动态加载不可用" #: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" -msgstr "无法打开共享对象 %s: %s" +msgstr "无法打开共享对象 %s:%s" #: builtins/enable.def:369 #, c-format @@ -402,75 +430,75 @@ msgstr "为 %s 载入函数失败 (%d): 未载入" #: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s: 未以动态方式加载" +msgstr "%s:未以动态方式加载" #: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s: 无法删除: %s" +msgstr "%s:无法删除: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" -msgstr "%s: 是一个目录" +msgstr "%s:是一个目录" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" -msgstr "%s: 不是常规文件" +msgstr "%s:不是常规文件" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" -msgstr "%s: 文件太大" +msgstr "%s:文件太大" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: 无法执行二进制文件" +msgstr "%s:无法执行二进制文件" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" -msgstr "%s: 无法执行: %s" +msgstr "%s:无法执行: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "注销\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "不是登录 shell: 使用 `exit'" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "有停止的任务。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "有运行中的任务。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "历史声明" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: 无法打开临时文件: %s" +msgstr "%s:无法打开临时文件: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "当前" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "在不带任务控制的情况下启动了任务 %d" @@ -478,46 +506,45 @@ msgstr "在不带任务控制的情况下启动了任务 %d" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: 非法选项 -- %c\n" +msgstr "%s:非法选项 -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "%s: 选项需要一个参数 -- %c\n" +msgstr "%s:选项需要一个参数 -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "已禁用哈希" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" -msgstr "%s: 哈希表为空\n" +msgstr "%s:哈希表为空\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Shell 命令匹配关键字 `" +msgstr[0] "Shell 命令匹配关键字“" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"没有与 `%s' 匹配的帮助主题。尝试 `help help' 或 `man -k %s' 或 `info %s'。" +"没有与“%s”匹配的帮助主题。尝试使用“help help”、“man -k %s”或“info %s”。" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" -msgstr "%s: 无法打开: %s" +msgstr "%s:无法打开: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,114 +563,115 @@ msgstr "" "名称旁边的星号(*)表示该命令被禁用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "最多只能使用 -anrw 选项中的一个" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "历史位置" -#: builtins/history.def:264 -#, fuzzy, c-format +#: builtins/history.def:331 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 无效参数" +msgstr "%s:无效时间戳" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" -msgstr "%s: 历史扩展失败" +msgstr "%s:历史扩展失败" #: builtins/inlib.def:71 #, c-format msgid "%s: inlib failed" -msgstr "%s: inlib 失败" +msgstr "%s:inlib 失败" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" msgstr "其他选项不能与 `-x' 同时使用" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: 参数必须是进程或任务 ID" +msgstr "%s:参数必须是进程或任务 ID" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "未知错误" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "需要表达式" #: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" -msgstr "%s: 不是一个索引数组" +msgstr "%s:不是一个索引数组" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: 无效的文件描述符声明" +msgstr "%s:无效的文件描述符声明" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 无效的文件描述符: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" -msgstr "%s: 无效的行数" +msgstr "%s:无效的行数" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" -msgstr "%s: 无效的数组基数" +msgstr "%s:无效的数组基数" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: 无效的回调量子" +msgstr "%s:无效的回调量子" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空数组变量名" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "需要数组变量支持" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" -msgstr "`%s': 缺少格式字符" +msgstr "“%s”: 缺少格式字符" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" -msgstr "`%c': 无效的时间格式声明" +msgstr "“%c”:无效的时间格式声明" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" -msgstr "`%c': 无效格式字符" +msgstr "“%c”:无效格式字符" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" -msgstr "警告: %s: %s" +msgstr "警告: %s:%s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "格式解析问题: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六进制位" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少 unicode 数" @@ -655,21 +683,21 @@ msgstr "无其他目录" #: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" -msgstr "%s: 无效参数" +msgstr "%s:无效参数" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<无当前目录>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "目录栈为空" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "目录栈索引" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -711,7 +739,7 @@ msgstr "" " -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n" "\t从 0 开始。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -741,7 +769,7 @@ msgstr "" " \n" " 选项:\n" " -n\t抑制增加栈中目录时通常的改变目录的操作,\n" -" \t从而只有栈被操作。\n" +" \t从而只进行栈操作。\n" " \n" " 参数:\n" " +N\t轮转栈使得第N个目录(`dirs' 的\n" @@ -757,7 +785,7 @@ msgstr "" " \n" " `dirs' 内建命令显示目录栈." -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -782,7 +810,7 @@ msgstr "" " \n" " 选项:\n" " -n\t抑制从栈中删除目录时通常的改变目录操作,\n" -" \t从而只有栈被操作。\n" +" \t从而只进行栈操作。\n" " \n" " 参数:\n" " +N\t从 `dirs' 输出的列表中,\n" @@ -795,70 +823,70 @@ msgstr "" " \n" " `dirs' 内建变量显示目录栈。" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: 无效的超时声明" +msgstr "%s:无效的超时声明" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "读错误: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "只能从函数或者源脚本返回(`return')" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "无法同时取消设定一个函数和一个变量" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" -msgstr "%s: 无法取消设定" +msgstr "%s:无法取消设定" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: 无法取消设定: 只读 %s" +msgstr "%s:无法取消设定: 只读 %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" -msgstr "%s: 不是数组变量" +msgstr "%s:不是数组变量" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" -msgstr "%s: 不是函数" +msgstr "%s:不是函数" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, c-format msgid "%s: cannot export" -msgstr "%s: 无法导出" +msgstr "%s:无法导出" #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "位移计数" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "无法同时设定和取消设定 shell 选项" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: 无效的 shell 选项名" +msgstr "%s:无效的 shell 选项名" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "需要文件名参数" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" -msgstr "%s: 文件未找到" +msgstr "%s:文件未找到" #: builtins/suspend.def:102 msgid "cannot suspend" @@ -868,64 +896,64 @@ msgstr "无法挂起" msgid "cannot suspend a login shell" msgstr "无法挂起一个登录 shell" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s 是 `%s' 的别名\n" +msgstr "%s 是“%s”的别名\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 关键字\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s 是函数\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s 是特殊 shell 内建\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 内建\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s 已被录入哈希表 (%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" -msgstr "%s: 无效的 limit 参数" +msgstr "%s:无效的 limit 参数" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" -msgstr "`%c': 命令错误" +msgstr "“%c”:命令错误" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: 无法获取 limit 值: %s" +msgstr "%s:无法获取 limit 值: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: 无法修改 limit 值: %s" +msgstr "%s:无法修改 limit 值: %s" #: builtins/umask.def:115 msgid "octal number" @@ -934,209 +962,214 @@ msgstr "八进制数" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': 无效的符号状态运算符" +msgstr "“%c”:无效的符号状态运算符" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': 无效的符号状态字符" +msgstr "“%c”:无效的符号状态字符" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr "行" -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "上一个命令: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " -msgstr "" +msgstr "报告:" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "未知的命令错误" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "错误的命令类型" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "错误的条件连接符" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "错误的跳转" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" -msgstr "%s: 未绑定的变量" +msgstr "%s:未绑定的变量" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待输入超时:自动注销\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "无法从 /dev/null 重定向标准输入: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "时间格式: `%c': 无效的格式字符" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc: 副进程 [%d:%s] 仍然存在" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "管道错误" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: 超出最大 eval 嵌套层数 (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 超出最大 source 嵌套层数 (%d)" +msgstr "%s:超出最大 source 嵌套层数 (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: 超出最大函数嵌套层数 (%d)" +msgstr "%s:超出最大函数嵌套层数 (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: 受限的: 无法在命令名中使用 `/'" +msgstr "%s:受限的: 无法在命令名中使用 `/'" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" -msgstr "%s: 未找到命令" +msgstr "%s:未找到命令" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" -msgstr "%s: %s" +msgstr "%s:%s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: 解释器错误" +msgstr "%s:%s:解释器错误" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: 无法执行二进制文件: %s" +msgstr "%s:无法执行二进制文件: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" -msgstr "`%s': 特殊内建" +msgstr "“%s”: 特殊内建" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "无法复制文件描述符 %d 到文件描述符 %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "表达式递归层次越界" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "递归栈下溢" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "表达式中有语法错误" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "尝试给非变量赋值" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "表达式中有语法错误" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "除以 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "错误:表达式赋值符号错误" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "条件表达式需要 `:'" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "指数小于 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "预增符或预减符后应跟有标识符" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" -msgstr "缺少 `)'" +msgstr "缺少“)”" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "语法错误: 需要操作数" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "语法错误: 无效的算术运算符" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (错误符号是 \"%s\")" +msgstr "%s%s%s:%s (错误符号是 \"%s\")" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "无效的算术进制" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "数值太大不可为算术进制的基" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" -msgstr "%s: 表达式错误\n" +msgstr "%s:表达式错误\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 无法访问父目录" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "无法为文件描述符 %d 重置nodelay模式" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "无法从文件描述符 %d 为 bash 的输入获取一个新的文件描述符" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区" @@ -1145,194 +1178,199 @@ msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 进程组管道" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "叉分 (fork) 出的的进程号 %d 出现在运行中的任务 %d 中" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "删除进程组 %2$ld 中已停止的任务 %1$d" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 进程号 %5ld(%s) 标注为仍活着" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 无此进程号" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "信号 %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "已完成" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "运行中" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "未知状态" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(核心已转储)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (工作目录: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子进程 setpgid (%ld 到 %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 进程号 %ld 不是当前 shell 的子进程" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 没有进程 %ld 的记录" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 任务 %d 已停止" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" -msgstr "%s: 任务已经终止" +msgstr "%s:任务已经终止" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" -msgstr "%s: 任务 %d 已在后台" +msgstr "%s:任务 %d 已在后台" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 打开 WNOHANG 以避免无限阻塞" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " -msgstr "%s: 行 %d: " +msgstr "%s:行 %d: " -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (核心已转储)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(当前工作目录:%s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失败" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: 行规则" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 行规则" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "无法设定终端进程组(%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "此 shell 中无任务控制" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 断言失败: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" "\r\n" -"malloc: %s:%d: 断言已修补\r\n" +"malloc: %s:%d:断言已修补\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "未知" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: 空闲链表中的块损坏" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" -msgstr "free: 用已经释放的块作为参数被调用" +msgstr "free:调用时用了已经释放的块作为参数" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" -msgstr "free: 用未分配的块作为参数被调用" +msgstr "free: 调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: 其实和末尾块大小不一致" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" -msgstr "realloc: 用未分配的块作为参数被调用" +msgstr "realloc:调用时用了未分配的块作为参数" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 其实和末尾块大小不一致" @@ -1358,41 +1396,41 @@ msgstr "无效的基" #: lib/sh/netopen.c:168 #, c-format msgid "%s: host unknown" -msgstr "%s: 未知主机" +msgstr "%s:未知主机" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s: 无效的服务" +msgstr "%s:无效的服务" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%s: 错误的网络路径声明" +msgstr "%s:错误的网络路径声明" #: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "不支持网络操作" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s)" +msgstr "setlocale:LC_ALL:无法改变区域选项 (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "setlocale: LC_ALL: 无法改变区域选项 (%s): %s" +msgstr "setlocale:LC_ALL:无法改变区域选项 (%s):%s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "setlocale: %s: 无法改变区域选项 (%s)" +msgstr "setlocale:%s:无法改变区域选项 (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale: %s: 无法改变区域选项 (%s): %s" +msgstr "setlocale:%s:无法改变区域选项 (%s):%s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1405,261 +1443,266 @@ msgstr "您在 $_ 中有新邮件" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "%s 中的邮件已被阅读\n" +msgstr "%s 中的邮件已被读过\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" -msgstr "语法错误: 需要算术表达式" +msgstr "语法错误:需要算术表达式" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" -msgstr "语法错误: 需要 `;'" +msgstr "语法错误:需要 `;'" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" -msgstr "语法错误: `((%s))'" +msgstr "语法错误:`((%s))'" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document: 错误的指令类型 %d" +msgstr "make_here_document:错误的指令类型 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "立即文档在第 %d 行被文件结束符分隔 (需要 `%s')" +msgstr "立即文档在第 %d 行被文件结束符分隔 (需要“%s”)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirection: 重定向指令 `%d' 越界" +msgstr "make_redirection:重定向指令“%d”越界" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" -msgstr "" +msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "超出最大立即文档数量" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "寻找匹配的 `%c' 是遇到了未预期的文件结束符" +msgstr "寻找匹配的“%c”时遇到了未预期的文件结束符" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" -msgstr "寻找 `]]' 是遇到了未预期的文件结束符" +msgstr "寻找“]]”时遇到了未预期的文件结束符" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "条件表达式中有语法错误: 未预期的符号 `%s'" +msgstr "条件表达式中有语法错误:未预期的符号“%s”" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "条件表达式中有语法错误" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "未预期的符号 `%s' ,需要 `)'" +msgstr "未预期的符号“%s” ,需要“)”" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" -msgstr "需要 `)'" +msgstr "需要“)”" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "一元条件运算符使用了未预期的参数 `%s'" +msgstr "一元条件运算符使用了未预期的参数“%s”" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "一元条件运算符使用了未预期的参数" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "未预期的符号 `%s',需要二元条件运算符" +msgstr "未预期的符号“%s”,需要二元条件运算符" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "需要二元条件运算符" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "二元条件运算符使用了未预期的参数 `%s'" +msgstr "二元条件运算符使用了未预期的参数“%s”" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "二元条件运算符使用了未预期的参数" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "条件命令中有未预期的符号 `%c'" +msgstr "条件命令中有未预期的符号“%c”" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "条件命令中有未预期的符号 `%s'" +msgstr "条件命令中有未预期的符号“%s”" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件命令中有未预期的符号 %d" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "未预期的符号 `%s' 附近有语法错误" +msgstr "未预期的符号“%s”附近有语法错误" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" -msgstr "`%s' 附近有语法错误" +msgstr "“%s”附近有语法错误" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "语法错误: 未预期的文件结尾" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "语法错误" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用 \"%s\" 退出 shell 。\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" -msgstr "寻找匹配的 `)' 时遇到了未预期的文件结束符" +msgstr "寻找匹配的“)”时遇到了未预期的文件结束符" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" -msgstr "补全: 未找到函数 `%s'" +msgstr "补全:未找到函数 “%s”" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" -msgstr "" +msgstr "programmable_completion: %s:疑似重试循环" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: 空的补全声明" +msgstr "progcomp_insert: %s:空的补全声明" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 错误的条件连接符 `%d'" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 无效的文件描述符" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: 空的文件指针" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 无效的格式字符" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "文件描述符超出范围" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" -msgstr "%s: 模糊的重定向" +msgstr "%s:模糊的重定向" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: 无法覆盖已存在的文件" +msgstr "%s:无法覆盖已存在的文件" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: 受限的: 无法重定向输出" +msgstr "%s:受限的: 无法重定向输出" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "无法为立即文档创建临时文件: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: 无法将文件描述符赋值给变量" +msgstr "%s:无法将文件描述符赋值给变量" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "没有网络时不支持 /dev/(tcp|udp)/host/port" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "重定向错误: 无法复制文件描述符" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "无法找到 /tmp ,请创建" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp 必须为有效的目录名" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 无效的选项" -#: shell.c:1282 +#: shell.c:1299 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "无法将 uid 设为 %d: 有效 uid %d" -#: shell.c:1289 +#: shell.c:1306 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "无法将 gid 设为 %d: 有效 gid %d" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "无法启动调试器;调试模式已禁用" -#: shell.c:1566 +#: shell.c:1608 #, c-format msgid "%s: Is a directory" -msgstr "%s: 是一个目录" +msgstr "%s:是一个目录" -#: shell.c:1777 +# 这个是查看用户的 /etc/passwd 信息得到的名字。既然是用户的名字,就叫做无名氏吧。(有点想写“红领巾”来着。) +#: shell.c:1826 msgid "I have no name!" -msgstr "没有名字!" +msgstr "无名氏!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1668,49 +1711,52 @@ msgstr "" "用法:\t%s [GNU 长选项] [选项] ...\n" "\t%s [GNU 长选项] [选项] 脚本文件 ...\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 长选项:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell 选项:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(仅适合调用)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s 或 -o <选项>\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信息\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n" -#: shell.c:1961 +# 写如何报告程序错误的地方应该提到如何报告翻译问题。 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "请使用`bashbug' 命令来报告错误.\n" +msgstr "" +"请使用“bashbug”命令来报告程序错误。\n" +"请将翻译错误报告到 。\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "bash 首页:\n" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "使用 GNU 软件的通用帮助:\n" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 无效的操作" @@ -1885,21 +1931,21 @@ msgstr "未知信号 #" msgid "Unknown Signal #%d" msgstr "未知信号 #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: 无法将链表赋值给数组成员" +msgstr "%s:无法将链表赋值给数组成员" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "无法为进程替换创建管道" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "无法为进程替换创建子进程" @@ -1918,70 +1964,74 @@ msgstr "无法打开命名管道 %s 进行写入" msgid "cannot duplicate named pipe %s as fd %d" msgstr "无法将命名管道 %s 作为文件描述符 %d 复制" -#: subst.c:5959 -#, fuzzy +#: subst.c:5990 msgid "command substitution: ignored null byte in input" -msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" +msgstr "命令替换:忽略输入中的 null 字节" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "无法为命令替换创建管道" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "无法为命令替换创建子进程" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 无法将管道复制为文件描述符 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: 无效的引用变量名" +msgstr "%s:无效的引用变量名" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 错误的替换" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: 无效的间接展开" +msgstr "%s:无效的间接展开" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, c-format msgid "%s: invalid variable name" -msgstr "%s: 无效的变量名" +msgstr "%s:无效的变量名" + +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s:参数为空或未设置" -#: subst.c:6854 +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" -msgstr "%s: 参数为空或未设置" +msgstr "%s:参数为空或未设置" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" -msgstr "%s: 子串表达式 < 0" +msgstr "%s:子串表达式 < 0" + +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s:错误的替换" -#: subst.c:8450 +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s: 无法这样赋值" +msgstr "$%s:无法这样赋值" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "未来版本的 shell 会强制估值为算术替换" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "无匹配: %s" @@ -1993,125 +2043,125 @@ msgstr "需要参数" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: 需要整数表达式" +msgstr "%s:需要整数表达式" #: test.c:265 msgid "`)' expected" -msgstr "需要 `)'" +msgstr "需要“)”" #: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "需要`)',得到 %s" +msgstr "需要“)”,却找到 %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" -msgstr "%s: 需要一元表达式" +msgstr "%s:需要一元表达式" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" -msgstr "%s: 需要二元表达式" +msgstr "%s:需要二元表达式" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "缺少 `]'" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "无效的信号数" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: 信号处理器是 SIG_DFL,重新发送 %d (%s) 给自己" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 错误的信号 %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" -msgstr "`%s' 函数定义导入错误" +msgstr "“%s”函数定义导入错误" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 层次 (%d) 太高,重置为 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 当前作用域中没有函数上下文" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: 变量不可赋值" +msgstr "%s:变量不可赋值" -#: variables.c:3043 -#, fuzzy, c-format +#: variables.c:3246 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: 无效的引用变量名" +msgstr "%s:将整数赋值给名称引用" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 当前作用域中没有函数上下文" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" -msgstr "%s 有空的 exportstr" +msgstr "%s 的 exportstr 为空" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有无效的字符 %1$d" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" -msgstr "%s 的 exportstr 中没有 `='" +msgstr "%s 的 exportstr 中没有“=”" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的头部不是函数上下文" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 没有 global_variables 上下文" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的头部不是临时环境作用域" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: %s: 无法作为文件打开" +msgstr "%s:%s:无法作为文件打开" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%s: %s: 追踪文件描述符的值无效" +msgstr "%s:%s:追踪文件描述符的值无效" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s: 兼容版本数值越界" +msgstr "%s:%s:兼容版本数值越界" +# Inc. 的 . 是个缩写 #: version.c:46 version2.c:46 -#, fuzzy msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "版权所有 (C) 2015 自由软件基金会." +msgstr "版权所有 (C) 2016 自由软件基金会" #: version.c:47 version2.c:47 msgid "" @@ -2134,25 +2184,25 @@ msgstr "本软件是自由软件,您可以自由地更改和重新发布。" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律许可的情况下特此明示,本软件不提供任何担保。" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: 无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s:无法分配 %lu 字节 (已分配 %lu 字节)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: 无法分配 %lu 字节" +msgstr "%s:无法分配 %lu 字节" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %s:%d: 无法分配 %lu 字节 (已分配 %lu 字节)" +msgstr "%s:%s:%d:无法分配 %lu 字节 (已分配 %lu 字节)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: %s:%d: 无法分配 %lu 字节" +msgstr "%s:%s:%d:无法分配 %lu 字节" #: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" @@ -2275,9 +2325,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]" #: builtins.c:131 -#, fuzzy msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [任务声明 ...]" +msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]" #: builtins.c:134 msgid "" @@ -2360,7 +2409,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [模式]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [编号 ...]" #: builtins.c:181 @@ -2479,9 +2529,10 @@ msgstr "" "[-c 量子] [数组]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C 回调] [-c 量子] " "[数组]" @@ -2748,7 +2799,7 @@ msgstr "" "分隔。\n" " 一个空的目录名称表示当前目录。如果要切换到的 DIR 由斜杠 (/) 开头,则 " "CDPATH\n" -" 变量不会被使用。\n" +" 不会用上变量。\n" " \n" " 如果路径找不到,并且 shell 选项 `cdable_vars' 被设定,则参数词被假定为一" "个\n" @@ -2857,7 +2908,7 @@ msgstr "" " \n" " 带 ARGS 参数运行 COMMAND 命令且抑制 shell 函数查询,或显示\n" " 指定的 COMMAND 命令的信息。可以在存在相同名称的函数定义的\n" -" 情况下被用于启动磁盘上的命令。\n" +" 情况下用于启动磁盘上的命令。\n" " \n" " 选项:\n" " -p\t使用 PATH 变量的一个默认值以确保所有的标准工具都能被找到。\n" @@ -2868,6 +2919,7 @@ msgstr "" " 返回 COMMAND 命令的返回状态,或者当找不到 COMMAND 命令时失败。" #: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2886,11 +2938,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2940,7 +2992,6 @@ msgstr "" " 返回成功除非使用了无效选项或者发生错误。" #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2948,7 +2999,7 @@ msgid "" msgstr "" "设置变量的值和属性。\n" " \n" -" 废弃。参见 `help declare'。" +" `declare' 的等价形式。参见 `help declare'。" #: builtins.c:538 msgid "" @@ -3169,7 +3220,7 @@ msgid "" msgstr "" "解析选项参数。\n" " \n" -" Getopts 被 shell 过程用于解析可定位的参数作为选项。\n" +" getopts 被 shell 过程用于解析可定位的参数作为选项。\n" " \n" " \n" " OPTSTRING 字符串包含待识别的选项字母;如果一个字母后面跟\n" @@ -3198,7 +3249,7 @@ msgstr "" " 错误信息的打印,即使 OPTSTRING 变量的第一个字符不是一\n" " 个冒号。OPTERR 的默认值为1.\n" " \n" -" Getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n" +" getopts 通常解析可定位的参数($0 - $9),不过如果提供了\n" " 更多的参数,它们反而会被解析。\n" " \n" " 退出状态:\n" @@ -3409,6 +3460,7 @@ msgstr "" " 返回成功,除非 NAME 命令没有找到或者使用了无效的选项。" #: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3423,7 +3475,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3457,7 +3509,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3483,7 +3536,7 @@ msgid "" msgstr "" "显示或操纵历史列表。\n" " \n" -" 带行号显示历史列表,将每个被修改的条目加上前缀 `*'。\n" +" 带行号显示历史列表,将每个被修改的条目加上 `*' 前缀。\n" " 参数 N 会仅列出最后的 N 个条目。\n" " \n" " 选项:\n" @@ -3492,6 +3545,7 @@ msgstr "" " \n" " -a\t将当前会话的历史行追加到历史文件中\n" " -n\t从历史文件中读取所有未被读取的行\n" +" \t\t并且将它们加入到历史列表\n" " -r\t读取历史文件并将内容追加到历史列表中\n" " -w\t将当前历史写入到历史文件中,并追加到历史列表中\n" " \n" @@ -3508,7 +3562,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:872 +#: builtins.c:873 msgid "" "Display status of jobs.\n" " \n" @@ -3550,7 +3604,7 @@ msgstr "" " 返回成功,除非使用了无效的选项或者有错误发生。\n" " 如果使用 -x 选项,则返回 COMMAND 命令的退出状态。" -#: builtins.c:899 +#: builtins.c:900 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3580,8 +3634,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的选项或者 JOBSPEC 声明。" -#: builtins.c:918 -#, fuzzy +#: builtins.c:919 msgid "" "Send a signal to a job.\n" " \n" @@ -3621,7 +3674,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者有错误发生。" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3703,7 +3756,8 @@ msgstr "" " 退出状态:\n" " 如果最后一个 ARG 参数估值为 0,则 let 返回 1; 否则 let 返回 0。" -#: builtins.c:987 +#: builtins.c:988 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3724,7 +3778,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3792,7 +3846,7 @@ msgstr "" " 返回码为零,除非遇到了文件结束符,读超时,或者无效的文\n" " 件描述符作为参数传递给了 -u 选项。" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3812,8 +3866,7 @@ msgstr "" " 退出状态:\n" " 返回 N,或者如果 shell 不在执行一个函数或引用脚本时,失败。" -#: builtins.c:1047 -#, fuzzy +#: builtins.c:1048 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3963,6 +4016,8 @@ msgstr "" " -P 设定之后类似 cd 的会改变当前目录的命令不\n" " 追踪符号链接。\n" " -T 设定之后 DEBUG 陷阱会被 shell 函数继承。\n" +" -- 任何剩余的参数会被赋值给位置参数。如果没\n" +" 有剩余的参数,位置参数不会被设置。\n" " - 任何剩余的参数会被赋值给位置参数。\n" " -x 和 -v 选项已关闭。\n" " \n" @@ -3975,7 +4030,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的参数。" -#: builtins.c:1132 +#: builtins.c:1133 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4013,7 +4068,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称为只读。" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4046,7 +4101,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1173 +#: builtins.c:1174 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4082,7 +4137,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4100,7 +4155,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 N 为负或者大于 $#。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4122,7 +4177,7 @@ msgstr "" " 退出状态:\n" " 返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4146,7 +4201,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非没有启用任务控制或者有错误发生。" -#: builtins.c:1254 +#: builtins.c:1255 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4300,7 +4355,7 @@ msgstr "" " 如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n" " 为假或者使用了无效的参数则返回失败。" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4312,7 +4367,7 @@ msgstr "" " 是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n" " 字符 `]',以匹配起始的 `['。" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4333,7 +4388,7 @@ msgstr "" # EXIT and DEBUG should be as-is. Use before you translate, please. # The -signal is only an example; Read carefully. -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4404,7 +4459,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 SIGSPEC。" -#: builtins.c:1393 +#: builtins.c:1394 msgid "" "Display information about command type.\n" " \n" @@ -4456,7 +4511,7 @@ msgstr "" " 退出状态:\n" " 如果所有的 NAME 命令都找到则返回成功;任何一个找不到则失败。" -#: builtins.c:1424 +#: builtins.c:1425 msgid "" "Modify shell resource limits.\n" " \n" @@ -4546,7 +4601,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4578,7 +4633,8 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的 MODE 模式或者选项。" -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4586,13 +4642,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4609,7 +4667,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4631,7 +4689,7 @@ msgstr "" " 退出状态:\n" " 返回进程 ID 的状态;如果 PID 是无效的进程号或者指定了无效的选项则失败。" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4645,14 +4703,14 @@ msgid "" msgstr "" "为列表中的每个成员执行命令。\n" " \n" -" `for' 循环为列表中的每个成员执行一系列的命令。如果没有\n" -" `in WORDS ...;'则假定使用 `in \"$@\"'。对于 WORDS 中的每\n" -" 个元素,NAME 被设定为该元素,并且执行 COMMANDS 命令。\n" +" “for”循环为列表中的每个成员执行一系列的命令。如果没有\n" +" “in <词语> ...;”则假定使用“in \"$@\"”。对于 <词语> 中的每\n" +" 个元素,<名称> 变量被设定为该元素后执行 <命令>。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4673,16 +4731,16 @@ msgstr "" " 等价于\n" " \t(( EXP1 ))\n" " \twhile (( EXP2 )); do\n" -" \t\tCOMMANDS\n" +" \t\t命令们\n" " \t\t(( EXP3 ))\n" " \tdone\n" -" EXP1、EXP2 和 EXP3都是算术表达式。如果省略任何表达式,\n" +" EXP1、EXP2 和 EXP3 都是算术表达式。如果省略任何表达式,\n" " 则等同于使用了估值为1的表达式。\n" " \n" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4703,7 +4761,7 @@ msgid "" msgstr "" "从列表中选取词并且执行命令。\n" " \n" -" WORDS 变量被展开,生成一个词的列表。展开的词集合被打印\n" +" <词语...> 被展开,生成一个词的列表。展开的词集合被打印\n" " 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'\n" " 则假定使用`in \"$@\"'。PS3提示符会被显示并且从标准输入读入一行\n" " 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应\n" @@ -4715,7 +4773,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4743,7 +4801,7 @@ msgstr "" " 退出状态:\n" " 返回状态即PIPELINE 的返回状态。" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4761,7 +4819,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4792,7 +4850,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4810,7 +4868,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4828,8 +4886,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1653 -#, fuzzy +#: builtins.c:1657 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4849,9 +4906,9 @@ msgstr "" " 默认的 NAME 是 \"COPROC\"。\n" " \n" " 退出状态:\n" -" 返回 COMMAND 命令的退出状态。" +" 副进程会返回退出状态 0。" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4874,7 +4931,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非 NAME 为只读。" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4892,7 +4949,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4916,7 +4973,7 @@ msgstr "" " 退出状态:\n" " 返回被继续的任务的状态。" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4934,7 +4991,7 @@ msgstr "" " 退出状态\n" " 如果表达式估值为0则返回 1;否则返回0。" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -4982,7 +5039,7 @@ msgstr "" " 退出状态:\n" " 根据 EXPRESSION 的值为0或1。" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5077,7 +5134,7 @@ msgstr "" " HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n" " \t\t列表,以冒号分隔。\n" -#: builtins.c:1803 +#: builtins.c:1807 msgid "" "Add directories to stack.\n" " \n" @@ -5130,7 +5187,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录转换失败。" -#: builtins.c:1837 +#: builtins.c:1841 msgid "" "Remove directories from stack.\n" " \n" @@ -5167,17 +5224,17 @@ msgstr "" " \n" " 参数:\n" " +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n" -" \t例如: `popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" +" \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" " \n" " -N\t删除第 N 个目录 (`dirs' 显示的目录列表中右起,从零开始)。\n" -" \t例如: `popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n" +" \t例如:`popd -0' 删除最后一个目录,,`popd -1' 删除倒数第二个。\n" " \n" " `dirs' 内建显示目录栈。\n" " \n" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录变换失败。" -#: builtins.c:1867 +#: builtins.c:1871 msgid "" "Display directory stack.\n" " \n" @@ -5226,14 +5283,14 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5263,7 +5320,7 @@ msgstr "" " 如果 OPTNAME 选项被启用则返回成功;如果是\n" " 无效的选项或OPTNAME 被禁用则失败。" -#: builtins.c:1919 +#: builtins.c:1923 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5319,7 +5376,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者写或赋值错误发生。" -#: builtins.c:1953 +#: builtins.c:1957 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5363,7 +5420,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5384,7 +5441,7 @@ msgstr "" " 退出状态:\n" " 除非使用了无效选项或者错误发生,否则返回成功。" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5436,7 +5493,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称没有定义补全声明。" -#: builtins.c:2026 +#: builtins.c:2030 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5503,31 +5560,19 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项,或者 ARRAY 变量只读或不是下标数组。" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"从一个文件中读取行到数组变量中\n" +"从一个文件中读取行到数组变量中。\n" " \n" " 一个 `mapfile'的同义词。" #~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." #~ msgstr "版权所有 (C) 2014 自由软件基金会." -#~ msgid ":" -#~ msgstr ":" - -#~ msgid "true" -#~ msgstr "true" - -#~ msgid "false" -#~ msgstr "false" - -#~ msgid "times" -#~ msgstr "times" - #~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." #~ msgstr "版权所有 (C) 2013 自由软件基金会." diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 6e07b8db6..5305eff0f 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index b276ceb87..28c2b63a1 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"POT-Creation-Date: 2018-04-27 14:15-0400\n" "PO-Revision-Date: 2015-08-27 13:36+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" @@ -17,121 +17,122 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: arrayfunc.c:54 +#: arrayfunc.c:58 msgid "bad array subscript" msgstr "陣列下標不正確" -#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 -#: variables.c:2730 +#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 +#: variables.c:2922 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:393 builtins/declare.def:780 +#: arrayfunc.c:398 builtins/declare.def:831 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: 無法將索引陣列轉化為關聯陣列" -#: arrayfunc.c:578 +#: arrayfunc.c:582 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無效的關聯陣列鍵值" -#: arrayfunc.c:580 +#: arrayfunc.c:584 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 無法指派為非數字的索引" -#: arrayfunc.c:625 +#: arrayfunc.c:629 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 指派為關聯陣列時必須使用下標" -#: bashhist.c:421 +#: bashhist.c:436 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 無法建立: %s" -#: bashline.c:4091 +#: bashline.c:4111 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 無法為命令找到鍵對映" -#: bashline.c:4189 +#: bashline.c:4221 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一個非空字元不是「\"」" -#: bashline.c:4218 +#: bashline.c:4250 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中沒有閉合的「%1$c」" -#: bashline.c:4252 +#: bashline.c:4284 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒號分隔符" -#: braces.c:329 +#: braces.c:331 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "大括號展開: 無法為 %s 分配記憶體" -#: braces.c:427 -#, c-format -msgid "brace expansion: failed to allocate memory for %d elements" +#: braces.c:429 +#, fuzzy, c-format +msgid "brace expansion: failed to allocate memory for %u elements" msgstr "大括號展開: 為 %d 個元素分配記憶體失敗" -#: braces.c:471 +#: braces.c:473 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "大括號展開: 為「%s」分配記憶體失敗" -#: builtins/alias.def:133 +#: builtins/alias.def:131 #, c-format msgid "`%s': invalid alias name" msgstr "「%s」: 無效的別名" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:122 builtins/bind.def:125 msgid "line editing not enabled" msgstr "未啟用列編輯" -#: builtins/bind.def:213 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "「%s」: 無效的鍵對映名" -#: builtins/bind.def:253 +#: builtins/bind.def:252 #, c-format msgid "%s: cannot read: %s" msgstr "%s:不能讀取: %s" -#: builtins/bind.def:270 -#, c-format -msgid "`%s': cannot unbind" -msgstr "「%s」: 無法解除繫結" - -#: builtins/bind.def:308 builtins/bind.def:338 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "「%s」:不明函數名稱" -#: builtins/bind.def:316 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未與任何鍵繫結。\n" -#: builtins/bind.def:320 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s 可以被呼叫,藉由" -#: builtins/break.def:79 builtins/break.def:121 +#: builtins/bind.def:353 builtins/bind.def:368 +#, c-format +msgid "`%s': cannot unbind" +msgstr "「%s」: 無法解除繫結" + +#: builtins/break.def:77 builtins/break.def:119 msgid "loop count" msgstr "迴圈計數" -#: builtins/break.def:141 +#: builtins/break.def:139 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "僅在「for」,「while」, 或者「until」迴圈中有意義" @@ -145,163 +146,163 @@ msgstr "" " \n" " 不帶 EXPR 時,回傳" -#: builtins/cd.def:321 +#: builtins/cd.def:319 msgid "HOME not set" msgstr "HOME 沒有設置" -#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +#: builtins/cd.def:327 builtins/common.c:161 test.c:889 msgid "too many arguments" msgstr "太多引數" -#: builtins/cd.def:336 +#: builtins/cd.def:334 #, fuzzy msgid "null directory" msgstr "無其他目錄" -#: builtins/cd.def:347 +#: builtins/cd.def:345 msgid "OLDPWD not set" msgstr "OLDPWD 沒有設置" -#: builtins/common.c:102 +#: builtins/common.c:96 #, c-format msgid "line %d: " msgstr "第 %d 列:" -#: builtins/common.c:140 error.c:265 +#: builtins/common.c:134 error.c:264 #, c-format msgid "warning: " msgstr "警告:" -#: builtins/common.c:154 +#: builtins/common.c:148 #, c-format msgid "%s: usage: " msgstr "%s: 用法:" -#: builtins/common.c:199 shell.c:514 shell.c:825 +#: builtins/common.c:193 shell.c:510 shell.c:838 #, c-format msgid "%s: option requires an argument" msgstr "%s:選項需要一個引數" -#: builtins/common.c:206 +#: builtins/common.c:200 #, c-format msgid "%s: numeric argument required" msgstr "%s:需要數字引數" -#: builtins/common.c:213 +#: builtins/common.c:207 #, c-format msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:222 shell.c:838 +#: builtins/common.c:216 shell.c:851 #, c-format msgid "%s: invalid option" msgstr "%s:無效選項" -#: builtins/common.c:229 +#: builtins/common.c:223 #, c-format msgid "%s: invalid option name" msgstr "%s:無效選項名稱" -#: builtins/common.c:236 general.c:293 general.c:298 +#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "「%s」:不是一個有效的識別符" -#: builtins/common.c:246 +#: builtins/common.c:240 msgid "invalid octal number" msgstr "無效的八進位數字" -#: builtins/common.c:248 +#: builtins/common.c:242 msgid "invalid hex number" msgstr "無效的十六進位數字" -#: builtins/common.c:250 expr.c:1473 +#: builtins/common.c:244 expr.c:1538 msgid "invalid number" msgstr "無效數字" -#: builtins/common.c:258 +#: builtins/common.c:252 #, c-format msgid "%s: invalid signal specification" msgstr "%s:無效的信號規格" -#: builtins/common.c:265 +#: builtins/common.c:259 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "「%s」:不是一個 pid 或有效的工作規格" -#: builtins/common.c:272 error.c:511 +#: builtins/common.c:266 error.c:510 #, c-format msgid "%s: readonly variable" msgstr "%s:唯讀的變數" -#: builtins/common.c:280 +#: builtins/common.c:274 #, c-format msgid "%s: %s out of range" msgstr "%s:%s 超出範圍" -#: builtins/common.c:280 builtins/common.c:282 +#: builtins/common.c:274 builtins/common.c:276 msgid "argument" msgstr "引數" -#: builtins/common.c:282 +#: builtins/common.c:276 #, c-format msgid "%s out of range" msgstr "%s 超出範圍" -#: builtins/common.c:290 +#: builtins/common.c:284 #, c-format msgid "%s: no such job" msgstr "%s:沒有此類工作" -#: builtins/common.c:298 +#: builtins/common.c:292 #, c-format msgid "%s: no job control" msgstr "%s:沒有工作控制" -#: builtins/common.c:300 +#: builtins/common.c:294 msgid "no job control" msgstr "沒有工作控制" -#: builtins/common.c:310 +#: builtins/common.c:304 #, c-format msgid "%s: restricted" msgstr "%s:受限的" -#: builtins/common.c:312 +#: builtins/common.c:306 msgid "restricted" msgstr "受限的" -#: builtins/common.c:320 +#: builtins/common.c:314 #, c-format msgid "%s: not a shell builtin" msgstr "%s:不是一個內建 shell" -#: builtins/common.c:329 +#: builtins/common.c:323 #, c-format msgid "write error: %s" msgstr "寫入錯誤: %s" -#: builtins/common.c:337 +#: builtins/common.c:331 #, c-format msgid "error setting terminal attributes: %s" msgstr "設定終端屬性時出錯: %s" -#: builtins/common.c:339 +#: builtins/common.c:333 #, c-format msgid "error getting terminal attributes: %s" msgstr "獲取終端屬性時出錯: %s" -#: builtins/common.c:585 +#: builtins/common.c:579 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s:錯誤檢索當前目錄: %s: %s\n" -#: builtins/common.c:651 builtins/common.c:653 +#: builtins/common.c:645 builtins/common.c:647 #, c-format msgid "%s: ambiguous job spec" msgstr "%s:模稜兩可的工作規格" -#: builtins/common.c:918 +#: builtins/common.c:908 msgid "help not available in this version" msgstr "" @@ -310,69 +311,69 @@ msgstr "" msgid "%s: invalid action name" msgstr "%s:無效的功能名稱" -#: builtins/complete.def:452 builtins/complete.def:647 -#: builtins/complete.def:858 +#: builtins/complete.def:452 builtins/complete.def:653 +#: builtins/complete.def:874 #, c-format msgid "%s: no completion specification" msgstr "%s:沒有完成的規格" -#: builtins/complete.def:699 +#: builtins/complete.def:707 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 選項可能無法按預期工作" -#: builtins/complete.def:701 +#: builtins/complete.def:709 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 選項可能無法按預期工作" -#: builtins/complete.def:831 +#: builtins/complete.def:847 msgid "not currently executing completion function" msgstr "當前未執行補完功能" -#: builtins/declare.def:127 +#: builtins/declare.def:132 msgid "can only be used in a function" msgstr "只能用在函數中" -#: builtins/declare.def:332 builtins/declare.def:685 +#: builtins/declare.def:369 builtins/declare.def:736 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 引用變數不能為陣列" -#: builtins/declare.def:343 variables.c:2959 +#: builtins/declare.def:380 variables.c:3161 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 不允許名稱引用變數引用自身" -#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 -#: variables.c:2956 +#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 +#: variables.c:3158 #, c-format msgid "%s: circular name reference" msgstr "%s: 迴圈變數名引用" -#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 #, fuzzy, c-format msgid "`%s': invalid variable name for name reference" msgstr "%s: 無效的引用變數名" -#: builtins/declare.def:463 +#: builtins/declare.def:500 msgid "cannot use `-f' to make functions" msgstr "無法用「-f」生成函數" -#: builtins/declare.def:475 execute_cmd.c:5632 +#: builtins/declare.def:512 execute_cmd.c:5797 #, c-format msgid "%s: readonly function" msgstr "%s:唯讀函數" -#: builtins/declare.def:753 +#: builtins/declare.def:804 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:767 +#: builtins/declare.def:818 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: 無法以這種方式銷毀陣列變數" -#: builtins/declare.def:774 builtins/read.def:751 +#: builtins/declare.def:825 builtins/read.def:784 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 無法將關聯陣列轉化為索引陣列" @@ -406,68 +407,68 @@ msgstr "%s: 未以動態方式載入" msgid "%s: cannot delete: %s" msgstr "%s: 無法刪除: %s" -#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 #, c-format msgid "%s: is a directory" msgstr "%s: 是一個目錄" -#: builtins/evalfile.c:150 +#: builtins/evalfile.c:144 #, c-format msgid "%s: not a regular file" msgstr "%s: 不是常規檔案" -#: builtins/evalfile.c:159 +#: builtins/evalfile.c:153 #, c-format msgid "%s: file is too large" msgstr "%s: 檔案太大" -#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 無法執行二進位檔案" -#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 無法執行: %s" -#: builtins/exit.def:67 +#: builtins/exit.def:64 #, c-format msgid "logout\n" msgstr "登出\n" -#: builtins/exit.def:92 +#: builtins/exit.def:89 msgid "not login shell: use `exit'" msgstr "不是登入 shell: 使用「exit」" -#: builtins/exit.def:124 +#: builtins/exit.def:121 #, c-format msgid "There are stopped jobs.\n" msgstr "有停止的工作。\n" -#: builtins/exit.def:126 +#: builtins/exit.def:123 #, c-format msgid "There are running jobs.\n" msgstr "有執行中的工作。\n" -#: builtins/fc.def:269 +#: builtins/fc.def:265 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:327 builtins/fc.def:376 +#: builtins/fc.def:323 builtins/fc.def:372 msgid "history specification" msgstr "歷史記錄規格" -#: builtins/fc.def:397 +#: builtins/fc.def:393 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 無法開啟臨時檔案: %s" -#: builtins/fg_bg.def:153 builtins/jobs.def:284 +#: builtins/fg_bg.def:152 builtins/jobs.def:284 msgid "current" msgstr "當前" -#: builtins/fg_bg.def:162 +#: builtins/fg_bg.def:161 #, c-format msgid "job %d started without job control" msgstr "在不帶工作控制的情況下啟動了工作 %d" @@ -482,39 +483,38 @@ msgstr "%s: 非法選項 -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: 選項需要一個引數 -- %c\n" -#: builtins/hash.def:92 +#: builtins/hash.def:91 msgid "hashing disabled" msgstr "已停用雜湊" -#: builtins/hash.def:139 +#: builtins/hash.def:138 #, c-format msgid "%s: hash table empty\n" msgstr "%s: 雜湊表為空\n" -#: builtins/hash.def:254 +#: builtins/hash.def:266 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:135 -#, c-format +#: builtins/help.def:133 msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell 命令,匹配關鍵詞 `" -#: builtins/help.def:187 +#: builtins/help.def:185 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "沒有與「%s」匹配的說明主題。嘗試「help help」或「man -k %s」或「info %s」。" -#: builtins/help.def:226 +#: builtins/help.def:224 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 無法開啟: %s" -#: builtins/help.def:526 +#: builtins/help.def:524 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -533,20 +533,21 @@ msgstr "" "名稱旁邊的星號(*)表示該命令被停用。\n" "\n" -#: builtins/history.def:155 +#: builtins/history.def:154 msgid "cannot use more than one of -anrw" msgstr "最多能使用 -anrw 選項之一" -#: builtins/history.def:187 +#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212 +#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 msgid "history position" msgstr "歷史記錄位置" -#: builtins/history.def:264 +#: builtins/history.def:331 #, fuzzy, c-format msgid "%s: invalid timestamp" msgstr "%s: 無效引數" -#: builtins/history.def:375 +#: builtins/history.def:442 #, c-format msgid "%s: history expansion failed" msgstr "%s: 歷史記錄擴充套件失敗" @@ -560,16 +561,16 @@ msgstr "%s: inlib 失敗" msgid "no other options allowed with `-x'" msgstr "其他選項不能與「-x」同時使用" -#: builtins/kill.def:202 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引數必須是行程或工作 ID" -#: builtins/kill.def:265 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "不明錯誤" -#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 msgid "expression expected" msgstr "需要表示式" @@ -578,69 +579,69 @@ msgstr "需要表示式" msgid "%s: not an indexed array" msgstr "%s: 不是一個索引陣列" -#: builtins/mapfile.def:272 builtins/read.def:306 +#: builtins/mapfile.def:271 builtins/read.def:305 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無效的檔案描述符規格" -#: builtins/mapfile.def:280 builtins/read.def:313 +#: builtins/mapfile.def:279 builtins/read.def:312 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無效的檔案描述符: %s" -#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#: builtins/mapfile.def:288 builtins/mapfile.def:326 #, c-format msgid "%s: invalid line count" msgstr "%s: 無效的列數" -#: builtins/mapfile.def:300 +#: builtins/mapfile.def:299 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無效的陣列原點" -#: builtins/mapfile.def:317 +#: builtins/mapfile.def:316 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 無效的回呼定量" -#: builtins/mapfile.def:350 +#: builtins/mapfile.def:349 msgid "empty array variable name" msgstr "空陣列變數名" -#: builtins/mapfile.def:371 +#: builtins/mapfile.def:370 msgid "array variable support required" msgstr "需要陣列變數支援" -#: builtins/printf.def:412 +#: builtins/printf.def:416 #, c-format msgid "`%s': missing format character" msgstr "「%s」: 缺少格式字元" -#: builtins/printf.def:467 +#: builtins/printf.def:471 #, c-format msgid "`%c': invalid time format specification" msgstr "「%c」: 無效的時間格式規格" -#: builtins/printf.def:669 +#: builtins/printf.def:673 #, c-format msgid "`%c': invalid format character" msgstr "「%c」: 無效格式字元" -#: builtins/printf.def:695 +#: builtins/printf.def:699 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:781 +#: builtins/printf.def:785 #, c-format msgid "format parsing problem: %s" msgstr "格式解析問題: %s" -#: builtins/printf.def:878 +#: builtins/printf.def:882 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六進位數字" -#: builtins/printf.def:893 +#: builtins/printf.def:897 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少萬國碼數字" @@ -654,19 +655,19 @@ msgstr "無其他目錄" msgid "%s: invalid argument" msgstr "%s: 無效引數" -#: builtins/pushd.def:475 +#: builtins/pushd.def:480 msgid "" msgstr "<無當前目錄>" -#: builtins/pushd.def:519 +#: builtins/pushd.def:524 msgid "directory stack empty" msgstr "目錄堆疊為空" -#: builtins/pushd.def:521 +#: builtins/pushd.def:526 msgid "directory stack index" msgstr "目錄堆疊索引" -#: builtins/pushd.def:696 +#: builtins/pushd.def:701 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -708,7 +709,7 @@ msgstr "" " -N\t以 dirs 不帶選項輸出的順序,從右起第 N 個項目顯示列表,\n" "\t從 0 開始。" -#: builtins/pushd.def:718 +#: builtins/pushd.def:723 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -754,7 +755,7 @@ msgstr "" " \n" " 「dirs」內建命令顯示目錄堆疊。" -#: builtins/pushd.def:743 +#: builtins/pushd.def:748 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -792,45 +793,45 @@ msgstr "" " \n" " 「dirs」內建變數顯示目錄堆疊。" -#: builtins/read.def:279 +#: builtins/read.def:277 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無效的逾時規格" -#: builtins/read.def:696 +#: builtins/read.def:729 #, c-format msgid "read error: %d: %s" msgstr "讀取錯誤: %d: %s" -#: builtins/return.def:71 +#: builtins/return.def:68 msgid "can only `return' from a function or sourced script" msgstr "只能從函數或者原始指令稿「return」" -#: builtins/set.def:841 +#: builtins/set.def:834 msgid "cannot simultaneously unset a function and a variable" msgstr "無法同時取消設定一個函數和一個變數" -#: builtins/set.def:888 +#: builtins/set.def:881 #, c-format msgid "%s: cannot unset" msgstr "%s: 無法取消設定" -#: builtins/set.def:909 variables.c:3389 +#: builtins/set.def:902 variables.c:3597 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 無法取消設定: 唯讀 %s" -#: builtins/set.def:922 +#: builtins/set.def:915 #, c-format msgid "%s: not an array variable" msgstr "%s: 不是陣列變數" -#: builtins/setattr.def:191 +#: builtins/setattr.def:189 #, c-format msgid "%s: not a function" msgstr "%s: 不是函數" -#: builtins/setattr.def:196 +#: builtins/setattr.def:194 #, fuzzy, c-format msgid "%s: cannot export" msgstr "%s: 無法取消設定" @@ -839,20 +840,20 @@ msgstr "%s: 無法取消設定" msgid "shift count" msgstr "位移計數" -#: builtins/shopt.def:289 +#: builtins/shopt.def:301 msgid "cannot set and unset shell options simultaneously" msgstr "無法同時設定和取消設定 shell 選項" -#: builtins/shopt.def:391 +#: builtins/shopt.def:403 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無效的 shell 選項名稱" -#: builtins/source.def:131 +#: builtins/source.def:128 msgid "filename argument required" msgstr "需要檔名引數" -#: builtins/source.def:157 +#: builtins/source.def:154 #, c-format msgid "%s: file not found" msgstr "%s: 檔案未找到" @@ -865,61 +866,61 @@ msgstr "無法懸置" msgid "cannot suspend a login shell" msgstr "無法將登入 shell 懸置" -#: builtins/type.def:236 +#: builtins/type.def:235 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s 是「%s」的別名\n" -#: builtins/type.def:257 +#: builtins/type.def:256 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 關鍵字\n" -#: builtins/type.def:276 +#: builtins/type.def:275 #, c-format msgid "%s is a function\n" msgstr "%s 是一個函數\n" -#: builtins/type.def:300 +#: builtins/type.def:299 #, fuzzy, c-format msgid "%s is a special shell builtin\n" msgstr "%s 是 shell 內建\n" -#: builtins/type.def:302 +#: builtins/type.def:301 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 內建\n" -#: builtins/type.def:324 builtins/type.def:409 +#: builtins/type.def:323 builtins/type.def:408 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:344 +#: builtins/type.def:343 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s 已進行雜湊操作(%s)\n" -#: builtins/ulimit.def:398 +#: builtins/ulimit.def:396 #, c-format msgid "%s: invalid limit argument" msgstr "%s: 無效的 limit 引數" -#: builtins/ulimit.def:424 +#: builtins/ulimit.def:422 #, c-format msgid "`%c': bad command" msgstr "「%c」:不當的命令" -#: builtins/ulimit.def:453 +#: builtins/ulimit.def:451 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s:不能得到 limit: %s" -#: builtins/ulimit.def:479 +#: builtins/ulimit.def:477 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#: builtins/ulimit.def:489 builtins/ulimit.def:789 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s:不能修改 limit: %s" @@ -938,202 +939,207 @@ msgstr "「%c」: 無效的符號狀態運算子" msgid "`%c': invalid symbolic mode character" msgstr "「%c」: 無效的符號狀態字元" -#: error.c:90 error.c:348 error.c:350 error.c:352 +#: error.c:89 error.c:347 error.c:349 error.c:351 msgid " line " msgstr " 列 " -#: error.c:165 +#: error.c:164 #, c-format msgid "last command: %s\n" msgstr "最後的命令: %s\n" -#: error.c:173 +#: error.c:172 #, c-format msgid "Aborting..." msgstr "中止…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:288 +#: error.c:287 #, c-format msgid "INFORM: " msgstr "" -#: error.c:463 +#: error.c:462 msgid "unknown command error" msgstr "不明命令錯誤" -#: error.c:464 +#: error.c:463 msgid "bad command type" msgstr "不當的命令類型" -#: error.c:465 +#: error.c:464 msgid "bad connector" msgstr "不當的連接器" -#: error.c:466 +#: error.c:465 msgid "bad jump" msgstr "錯誤的跳轉" -#: error.c:504 +#: error.c:503 #, c-format msgid "%s: unbound variable" msgstr "%s: 未繫結的變數" -#: eval.c:209 +#: eval.c:242 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待輸入逾時:自動登出\n" -#: execute_cmd.c:527 +#: execute_cmd.c:536 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "無法從 /dev/null 重定向標準輸入: %s" -#: execute_cmd.c:1275 +#: execute_cmd.c:1294 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "時間格式:「%c」: 無效的格式字元" -#: execute_cmd.c:2273 +#: execute_cmd.c:2330 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2377 +#: execute_cmd.c:2456 msgid "pipe error" msgstr "管道錯誤" -#: execute_cmd.c:4496 +#: execute_cmd.c:4624 #, fuzzy, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:4508 +#: execute_cmd.c:4636 #, fuzzy, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:4616 +#: execute_cmd.c:4742 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:5144 +#: execute_cmd.c:5285 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 受限的: 無法在命令名稱中使用「/」" -#: execute_cmd.c:5232 +#: execute_cmd.c:5383 #, c-format msgid "%s: command not found" msgstr "%s:命令找不到" -#: execute_cmd.c:5470 +#: execute_cmd.c:5627 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5508 +#: execute_cmd.c:5665 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 不當的直譯器" -#: execute_cmd.c:5545 +#: execute_cmd.c:5702 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 無法執行二進位檔案: %s" -#: execute_cmd.c:5623 +#: execute_cmd.c:5788 #, c-format msgid "`%s': is a special builtin" msgstr "「%s」: 特殊內建" -#: execute_cmd.c:5675 +#: execute_cmd.c:5840 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "無法複製檔案描述符 %d 到檔案描述符 %d" -#: expr.c:259 +#: expr.c:263 msgid "expression recursion level exceeded" msgstr "表示式遞迴層次超出範圍" -#: expr.c:283 +#: expr.c:291 msgid "recursion stack underflow" msgstr "遞迴堆疊下限溢位" -#: expr.c:431 +#: expr.c:453 msgid "syntax error in expression" msgstr "表示式語法錯誤" -#: expr.c:475 +#: expr.c:497 msgid "attempted assignment to non-variable" msgstr "嘗試指派給非變數" -#: expr.c:495 expr.c:858 +#: expr.c:506 +#, fuzzy +msgid "syntax error in variable assignment" +msgstr "表示式語法錯誤" + +#: expr.c:520 expr.c:886 msgid "division by 0" msgstr "除 0" -#: expr.c:542 +#: expr.c:567 msgid "bug: bad expassign token" msgstr "錯誤:不當的表示式字組" -#: expr.c:595 +#: expr.c:621 msgid "`:' expected for conditional expression" msgstr "條件表示式需要「:」" -#: expr.c:919 +#: expr.c:947 msgid "exponent less than 0" msgstr "指數小於 0" -#: expr.c:976 +#: expr.c:1004 msgid "identifier expected after pre-increment or pre-decrement" msgstr "預增符或預減符後應跟有標識符" -#: expr.c:1002 +#: expr.c:1030 msgid "missing `)'" msgstr "缺少「)」" -#: expr.c:1053 expr.c:1393 +#: expr.c:1081 expr.c:1458 msgid "syntax error: operand expected" msgstr "語法錯誤: 需要運算元" -#: expr.c:1395 +#: expr.c:1460 msgid "syntax error: invalid arithmetic operator" msgstr "語法錯誤: 無效的算術運算子" -#: expr.c:1419 +#: expr.c:1484 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (錯誤字組是「%s」)" -#: expr.c:1477 +#: expr.c:1542 msgid "invalid arithmetic base" msgstr "無效的算術進位" -#: expr.c:1497 +#: expr.c:1562 msgid "value too great for base" msgstr "數值太大不可為算術進位的基底" -#: expr.c:1546 +#: expr.c:1611 #, c-format msgid "%s: expression error\n" msgstr "%s: 表示式錯誤\n" -#: general.c:68 +#: general.c:69 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 無法訪問上層目錄" -#: input.c:102 subst.c:5858 +#: input.c:99 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "無法為檔案描述符 %d 重置無延遲模式" -#: input.c:271 +#: input.c:266 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "無法從檔案描述符 %d 為 bash 的輸入獲取一個新的檔案描述符" -#: input.c:279 +#: input.c:274 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區" @@ -1142,153 +1148,158 @@ msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 行程群組管道" -#: jobs.c:1035 +#: jobs.c:1080 #, c-format msgid "forked pid %d appears in running job %d" msgstr "生成的行程識別號 %d 顯示為執行中的工作 %d" -#: jobs.c:1154 +#: jobs.c:1199 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "刪除行程群組 %2$ld 中已停止的工作 %1$d" -#: jobs.c:1258 +#: jobs.c:1303 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline" -#: jobs.c:1261 +#: jobs.c:1306 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 行程識別號 %5ld(%s) 標註為仍活著" -#: jobs.c:1590 +#: jobs.c:1635 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 無此行程識別號" -#: jobs.c:1605 +#: jobs.c:1650 #, c-format msgid "Signal %d" msgstr "訊號 %d" -#: jobs.c:1619 jobs.c:1645 +#: jobs.c:1664 jobs.c:1690 msgid "Done" msgstr "已完成" -#: jobs.c:1624 siglist.c:123 +#: jobs.c:1669 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1628 +#: jobs.c:1673 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1632 +#: jobs.c:1677 msgid "Running" msgstr "執行中" -#: jobs.c:1649 +#: jobs.c:1694 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1651 +#: jobs.c:1696 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1654 +#: jobs.c:1699 msgid "Unknown status" msgstr "不明狀態" -#: jobs.c:1741 +#: jobs.c:1786 #, c-format msgid "(core dumped) " msgstr "(核心已傾印)" -#: jobs.c:1760 +#: jobs.c:1805 #, c-format msgid " (wd: %s)" msgstr " (工作目錄: %s)" -#: jobs.c:1985 +#: jobs.c:2033 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子行程 setpgid (%ld 到 %ld)" -#: jobs.c:2347 nojobs.c:654 +#: jobs.c:2395 nojobs.c:657 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 行程識別號 %ld 不是當前 shell 的子行程" -#: jobs.c:2602 +#: jobs.c:2687 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 沒有行程 %ld 的記錄" -#: jobs.c:2929 +#: jobs.c:3048 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 工作 %d 已停止" -#: jobs.c:3221 +#: jobs.c:3355 #, c-format msgid "%s: job has terminated" msgstr "%s: 工作已經終止" -#: jobs.c:3230 +#: jobs.c:3364 #, c-format msgid "%s: job %d already in background" msgstr "%s: 工作 %d 已在背景執行" -#: jobs.c:3455 +#: jobs.c:3590 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 開啟 WNOHANG 以避免無限阻塞" -#: jobs.c:3970 +#: jobs.c:4114 #, c-format msgid "%s: line %d: " msgstr "%s: 第 %d 列:" -#: jobs.c:3984 nojobs.c:897 +#: jobs.c:4128 nojobs.c:900 #, c-format msgid " (core dumped)" msgstr " (核心已傾印)" -#: jobs.c:3996 jobs.c:4009 +#: jobs.c:4140 jobs.c:4153 #, c-format msgid "(wd now: %s)\n" msgstr "(當前工作目錄:%s)\n" -#: jobs.c:4041 +#: jobs.c:4185 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失敗" -#: jobs.c:4104 +#: jobs.c:4241 +#, fuzzy +msgid "initialize_job_control: no job control in background" +msgstr "initialize_job_control: 列規律" + +#: jobs.c:4257 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 列規律" -#: jobs.c:4114 +#: jobs.c:4267 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4135 jobs.c:4144 +#: jobs.c:4288 jobs.c:4297 #, c-format msgid "cannot set terminal process group (%d)" msgstr "無法設定終端行程群組(%d)" -#: jobs.c:4149 +#: jobs.c:4302 msgid "no job control in this shell" msgstr "此 shell 中無工作控制" -#: lib/malloc/malloc.c:296 +#: lib/malloc/malloc.c:306 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 主張失敗: %s\n" -#: lib/malloc/malloc.c:312 +#: lib/malloc/malloc.c:322 #, c-format msgid "" "\r\n" @@ -1297,39 +1308,39 @@ msgstr "" "\r\n" "malloc: %s:%d: 主張已修補\r\n" -#: lib/malloc/malloc.c:313 +#: lib/malloc/malloc.c:323 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:801 +#: lib/malloc/malloc.c:811 msgid "malloc: block on free list clobbered" msgstr "malloc: 空閒串列中的區塊損壞" -#: lib/malloc/malloc.c:878 +#: lib/malloc/malloc.c:888 msgid "free: called with already freed block argument" msgstr "free: 用已經釋放的區塊做為呼叫引數" -#: lib/malloc/malloc.c:881 +#: lib/malloc/malloc.c:891 msgid "free: called with unallocated block argument" msgstr "free: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:900 +#: lib/malloc/malloc.c:910 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:906 +#: lib/malloc/malloc.c:916 msgid "free: start and end chunk sizes differ" msgstr "free: 啟始和末尾區塊大小不一致" -#: lib/malloc/malloc.c:1005 +#: lib/malloc/malloc.c:1015 msgid "realloc: called with unallocated block argument" msgstr "realloc: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:1020 +#: lib/malloc/malloc.c:1030 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:1026 +#: lib/malloc/malloc.c:1036 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 啟始和末尾區塊大小不一致" @@ -1371,22 +1382,22 @@ msgstr "%s:不當的網路路徑規格" msgid "network operations not supported" msgstr "不支持網路操作" -#: locale.c:200 +#: locale.c:205 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s)" -#: locale.c:202 +#: locale.c:207 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s): %s" -#: locale.c:259 +#: locale.c:272 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: 無法變更語區選項 (%s)" -#: locale.c:261 +#: locale.c:274 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: 無法變更語區選項 (%s): %s" @@ -1404,147 +1415,147 @@ msgstr "您有新郵件在 $_" msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" -#: make_cmd.c:329 +#: make_cmd.c:317 msgid "syntax error: arithmetic expression required" msgstr "語法錯誤:需要算式" -#: make_cmd.c:331 +#: make_cmd.c:319 msgid "syntax error: `;' unexpected" msgstr "語法錯誤:「;」意外" -#: make_cmd.c:332 +#: make_cmd.c:320 #, c-format msgid "syntax error: `((%s))'" msgstr "語法錯誤:「((%s))」" -#: make_cmd.c:584 +#: make_cmd.c:572 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document:不當的指示類型 %d" -#: make_cmd.c:669 +#: make_cmd.c:657 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "立即文件在第 %d 列被檔案結束符分隔 (需要「%s」)" -#: make_cmd.c:768 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection:重新導向指示「%d」超出範圍" -#: parse.y:2324 +#: parse.y:2369 #, c-format msgid "" "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " "truncated" msgstr "" -#: parse.y:2700 +#: parse.y:2772 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3390 parse.y:3748 +#: parse.y:3511 parse.y:3881 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "尋找匹配的「%c」時遇到了未預期的檔案結束符" -#: parse.y:4410 +#: parse.y:4581 msgid "unexpected EOF while looking for `]]'" msgstr "尋找「]]」時遇到了未預期的檔案結束符" -#: parse.y:4415 +#: parse.y:4586 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "條件表示式中有語法錯誤: 未預期的字組「%s」" -#: parse.y:4419 +#: parse.y:4590 msgid "syntax error in conditional expression" msgstr "語法錯誤,在有條件的表示式" -#: parse.y:4497 +#: parse.y:4668 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "未預期的字組「%s」,需要「)」" -#: parse.y:4501 +#: parse.y:4672 msgid "expected `)'" msgstr "預期「)」" -#: parse.y:4529 +#: parse.y:4700 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數「%s」" -#: parse.y:4533 +#: parse.y:4704 msgid "unexpected argument to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數" -#: parse.y:4579 +#: parse.y:4750 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "未預期的字組「%s」,需要二元條件運算子" -#: parse.y:4583 +#: parse.y:4754 msgid "conditional binary operator expected" msgstr "需要二元條件運算子" -#: parse.y:4605 +#: parse.y:4776 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數「%s」" -#: parse.y:4609 +#: parse.y:4780 msgid "unexpected argument to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數" -#: parse.y:4620 +#: parse.y:4791 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "條件命令中有未預期的字組「%c」" -#: parse.y:4623 +#: parse.y:4794 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "條件命令中有未預期的字組「%s」" -#: parse.y:4627 +#: parse.y:4798 #, c-format msgid "unexpected token %d in conditional command" msgstr "條件命令中有未預期的字組 %d" -#: parse.y:5996 +#: parse.y:6220 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "未預期的字組「%s」附近有語法錯誤" -#: parse.y:6014 +#: parse.y:6238 #, c-format msgid "syntax error near `%s'" msgstr "「%s」附近有語法錯誤" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error: unexpected end of file" msgstr "語法錯誤: 未預期的檔案結尾" -#: parse.y:6024 +#: parse.y:6248 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:6086 +#: parse.y:6310 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用「%s」退出 shell 。\n" -#: parse.y:6248 +#: parse.y:6472 msgid "unexpected EOF while looking for matching `)'" msgstr "尋找匹配的「)」時遇到了未預期的檔案結束符" -#: pcomplete.c:1126 +#: pcomplete.c:1132 #, c-format msgid "completion: function `%s' not found" msgstr "補完: 未找到函數「%s」" -#: pcomplete.c:1646 +#: pcomplete.c:1722 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1554,109 +1565,113 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: 空的補完規格" -#: print_cmd.c:302 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 錯誤的條件連接符「%d」" -#: print_cmd.c:375 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 無效的檔案描述符" -#: print_cmd.c:380 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: 空的檔案指標" -#: print_cmd.c:384 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1534 +#: print_cmd.c:1538 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf:「%c」: 無效的格式字元" -#: redir.c:124 redir.c:171 +#: redir.c:121 redir.c:167 msgid "file descriptor out of range" msgstr "檔案描述符超出範圍" -#: redir.c:178 +#: redir.c:174 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模稜兩可的重定向" -#: redir.c:182 +#: redir.c:178 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 無法覆寫已存在的檔案" -#: redir.c:187 +#: redir.c:183 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 受限的: 無法重定向輸出" -#: redir.c:192 +#: redir.c:188 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "無法為立即文件建立臨時檔案: %s" -#: redir.c:196 +#: redir.c:192 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 無法將檔案描述符指派給變數" -#: redir.c:586 +#: redir.c:588 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "沒有網路時不支援 /dev/(tcp|udp)/host/port" -#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 msgid "redirection error: cannot duplicate fd" msgstr "重定向錯誤: 無法複製檔案描述符" -#: shell.c:347 +#: shell.c:343 msgid "could not find /tmp, please create!" msgstr "無法找到 /tmp ,請建立" -#: shell.c:351 +#: shell.c:347 msgid "/tmp must be a valid directory name" msgstr "/tmp 必須為有效的目錄名稱" -#: shell.c:927 +#: shell.c:798 +msgid "pretty-printing mode ignored in interactive shells" +msgstr "" + +#: shell.c:940 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效選項" -#: shell.c:1282 +#: shell.c:1299 #, fuzzy, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "無法為檔案描述符 %d 重置無延遲模式" -#: shell.c:1289 +#: shell.c:1306 #, fuzzy, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "無法為檔案描述符 %d 重置無延遲模式" -#: shell.c:1458 +#: shell.c:1494 msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1566 +#: shell.c:1608 #, fuzzy, c-format msgid "%s: Is a directory" msgstr "%s: 是一個目錄" -#: shell.c:1777 +#: shell.c:1826 msgid "I have no name!" msgstr "我沒有名字!" -#: shell.c:1930 +#: shell.c:1980 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1931 +#: shell.c:1981 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1665,49 +1680,49 @@ msgstr "" "用法:\t%s [GNU 長選項] [選項] …\n" "\t%s [GNU 長選項] [選項] 指令稿檔案 …\n" -#: shell.c:1933 +#: shell.c:1983 msgid "GNU long options:\n" msgstr "GNU 長選項:\n" -#: shell.c:1937 +#: shell.c:1987 msgid "Shell options:\n" msgstr "Shell 選項:\n" -#: shell.c:1938 +#: shell.c:1988 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(僅適合呼叫)\n" -#: shell.c:1953 +#: shell.c:2003 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o 選項\n" -#: shell.c:1959 +#: shell.c:2009 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "輸入「%s -c \"help set\"」更多關於 shell 選項的訊息。\n" -#: shell.c:1960 +#: shell.c:2010 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "輸入「%s -c help」更多關於內建 shell 命令的訊息。\n" -#: shell.c:1961 +#: shell.c:2011 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "使用「bashbug」命令通報程式錯誤。\n" -#: shell.c:1963 +#: shell.c:2013 #, c-format msgid "bash home page: \n" msgstr "" -#: shell.c:1964 +#: shell.c:2014 #, c-format msgid "General help using GNU software: \n" msgstr "" -#: sig.c:707 +#: sig.c:695 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d:無效操作" @@ -1881,21 +1896,21 @@ msgstr "不明訊號 #" msgid "Unknown Signal #%d" msgstr "不明訊號 #%d" -#: subst.c:1445 subst.c:1608 +#: subst.c:1450 subst.c:1641 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "錯誤的替換: 在 %2$s 中沒有閉合的「%1$s」" -#: subst.c:3154 +#: subst.c:3209 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 無法將串列指派給陣列成員" -#: subst.c:5740 subst.c:5756 +#: subst.c:5734 subst.c:5750 msgid "cannot make pipe for process substitution" msgstr "無法為行程替換建立管道" -#: subst.c:5798 +#: subst.c:5796 msgid "cannot make child for process substitution" msgstr "無法為行程替換建立子行程" @@ -1914,70 +1929,75 @@ msgstr "無法開啟命名管道 %s 進行寫入" msgid "cannot duplicate named pipe %s as fd %d" msgstr "無法將命名管道 %s 做為檔案描述符 %d 複製" -#: subst.c:5959 +#: subst.c:5990 #, fuzzy msgid "command substitution: ignored null byte in input" msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" -#: subst.c:6083 +#: subst.c:6121 msgid "cannot make pipe for command substitution" msgstr "無法為命令替換建立管道" -#: subst.c:6127 +#: subst.c:6164 msgid "cannot make child for command substitution" msgstr "無法為命令替換建立子行程" -#: subst.c:6153 +#: subst.c:6190 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 無法將管道複製為檔案描述符 1" -#: subst.c:6580 subst.c:8939 +#: subst.c:6641 subst.c:9483 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 無效的引用變數名" -#: subst.c:6666 subst.c:8351 subst.c:8371 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 錯誤的替換" - -#: subst.c:6800 +#: subst.c:6737 subst.c:6755 subst.c:6903 #, fuzzy, c-format msgid "%s: invalid indirect expansion" msgstr "%s: 無效的列數" -#: subst.c:6807 +#: subst.c:6771 subst.c:6910 #, fuzzy, c-format msgid "%s: invalid variable name" msgstr "「%s」: 無效的別名" -#: subst.c:6854 +#: subst.c:6962 +#, fuzzy, c-format +msgid "%s: parameter not set" +msgstr "%s: 參數為空或未設定" + +#: subst.c:6964 #, c-format msgid "%s: parameter null or not set" msgstr "%s: 參數為空或未設定" -#: subst.c:7089 subst.c:7104 +#: subst.c:7201 subst.c:7216 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 子串表示式 < 0" -#: subst.c:8450 +#: subst.c:8839 subst.c:8860 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 錯誤的替換" + +#: subst.c:8948 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 無法如此指派" -#: subst.c:8802 +#: subst.c:9346 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "未來版本的 shell 會強制以算術替換求值" -#: subst.c:9349 +#: subst.c:9903 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" -#: subst.c:10298 +#: subst.c:10907 #, c-format msgid "no match: %s" msgstr "無匹配: %s" @@ -2000,106 +2020,106 @@ msgstr "需要「)」" msgid "`)' expected, found %s" msgstr "需要「)」,得到 %s" -#: test.c:282 test.c:744 test.c:747 +#: test.c:282 test.c:748 test.c:751 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需要一元表示式" -#: test.c:469 test.c:787 +#: test.c:469 test.c:791 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需要二元表示式" -#: test.c:869 +#: test.c:873 msgid "missing `]'" msgstr "缺少「]」" -#: trap.c:224 +#: trap.c:216 msgid "invalid signal number" msgstr "無效信號數字" -#: trap.c:387 +#: trap.c:379 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" -#: trap.c:391 +#: trap.c:383 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: 信號處理是 SIG_DFL,resending %d (%s) to myself" -#: trap.c:447 +#: trap.c:439 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:不當的信號 %d" -#: variables.c:409 +#: variables.c:399 #, c-format msgid "error importing function definition for `%s'" msgstr "錯誤,輸入的函數定義為「%s」" -#: variables.c:814 +#: variables.c:801 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 層次 (%d) 太高,重置為 1" -#: variables.c:2413 +#: variables.c:2512 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 當前作用域中沒有函數語境" -#: variables.c:2432 +#: variables.c:2531 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 變數不可指派值" -#: variables.c:3043 +#: variables.c:3246 #, fuzzy, c-format msgid "%s: assigning integer to name reference" msgstr "%s: 無效的引用變數名" -#: variables.c:3940 +#: variables.c:4149 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 當前作用域中沒有函數語境" -#: variables.c:4218 +#: variables.c:4437 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:4223 variables.c:4232 +#: variables.c:4442 variables.c:4451 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有無效的字元 %1$d" -#: variables.c:4238 +#: variables.c:4457 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s 的 exportstr 中沒有「=」" -#: variables.c:4684 +#: variables.c:4911 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的前端不是函數語境" -#: variables.c:4697 +#: variables.c:4924 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 沒有 global_variables 語境" -#: variables.c:4772 +#: variables.c:4999 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的前端不是臨時環境作用域" -#: variables.c:5619 +#: variables.c:5862 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 無法做為檔案開啟" -#: variables.c:5624 +#: variables.c:5867 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追蹤檔案描述符的值無效" -#: variables.c:5669 +#: variables.c:5912 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: 相容版本數值超出範圍" @@ -2130,22 +2150,22 @@ msgstr "本軟體是自由軟體,您可以自由地更改和重新發布。" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律許可的情況下特此明示,本軟體不提供任何擔保。" -#: xmalloc.c:91 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:93 +#: xmalloc.c:95 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: 無法分配 %lu 位元組" -#: xmalloc.c:163 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:165 +#: xmalloc.c:167 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: 無法分配 %lu 位元組" @@ -2358,7 +2378,8 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [模式]" #: builtins.c:177 -msgid "wait [-n] [id ...]" +#, fuzzy +msgid "wait [-fn] [id ...]" msgstr "wait [-n] [編號 …]" #: builtins.c:181 @@ -2479,9 +2500,10 @@ msgstr "" "[陣列]" #: builtins.c:244 +#, fuzzy msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "readarray [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] " "[陣列]" @@ -2895,11 +2917,11 @@ msgid "" " -a\tto make NAMEs indexed arrays (if supported)\n" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" -" -l\tto convert NAMEs to lower case on assignment\n" +" -l\tto convert the value of each NAME to lower case on assignment\n" " -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" -" -u\tto convert NAMEs to upper case on assignment\n" +" -u\tto convert the value of each NAME to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3437,7 +3459,7 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifiying a help topic\n" +" PATTERN\tPattern specifying a help topic\n" " \n" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is " @@ -3471,7 +3493,8 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at position OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET. Negative\n" +" \t\toffsets count back from the end of the history list\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" @@ -3522,7 +3545,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:872 +#: builtins.c:873 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3565,7 +3588,7 @@ msgstr "" " 回傳成功,除非使用了無效的選項或者有錯誤發生。\n" " 如果使用 -x 選項,則回傳 COMMAND 命令的退出狀態。" -#: builtins.c:899 +#: builtins.c:900 #, fuzzy msgid "" "Remove jobs from current shell.\n" @@ -3596,7 +3619,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的選項或者 JOBSPEC 規格。" -#: builtins.c:918 +#: builtins.c:919 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3637,7 +3660,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者有錯誤發生。" -#: builtins.c:942 +#: builtins.c:943 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3719,7 +3742,7 @@ msgstr "" " 退出狀態:\n" " 如果最後一個 ARG 引數求值為 0,則 let 回傳 1; 否則 let 回傳 0。" -#: builtins.c:987 +#: builtins.c:988 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3741,7 +3764,7 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\tuse Readline to obtain the line in an interactive shell\n" +" -e\tuse Readline to obtain the line\n" " -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than\n" @@ -3809,7 +3832,7 @@ msgstr "" " 回傳碼為零,除非遇到了檔案結束符,讀取逾時,或者無效的文\n" " 件描述符做為引數傳遞給了 -u 選項。" -#: builtins.c:1034 +#: builtins.c:1035 msgid "" "Return from a shell function.\n" " \n" @@ -3829,7 +3852,7 @@ msgstr "" " 退出狀態:\n" " 回傳 N,或者如果 shell 不在執行一個函數或引用指令稿時,失敗。" -#: builtins.c:1047 +#: builtins.c:1048 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3991,7 +4014,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的引數。" -#: builtins.c:1132 +#: builtins.c:1133 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4030,7 +4053,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱為唯讀。" -#: builtins.c:1154 +#: builtins.c:1155 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4063,7 +4086,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1173 +#: builtins.c:1174 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4100,7 +4123,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1195 +#: builtins.c:1196 msgid "" "Shift positional parameters.\n" " \n" @@ -4118,7 +4141,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 N 為負或者大於 $#。" -#: builtins.c:1207 builtins.c:1222 +#: builtins.c:1208 builtins.c:1223 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4140,7 +4163,7 @@ msgstr "" " 退出狀態:\n" " 回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案不可讀則失敗。" -#: builtins.c:1238 +#: builtins.c:1239 msgid "" "Suspend shell execution.\n" " \n" @@ -4164,7 +4187,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非沒有啟用工作控制或者有錯誤發生。" -#: builtins.c:1254 +#: builtins.c:1255 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4319,7 +4342,7 @@ msgstr "" " 如果 EXPR 表示式求值為真則回傳成功;如果 EXPR 表示式求值\n" " 為假或者使用了無效的引數則回傳失敗。" -#: builtins.c:1336 +#: builtins.c:1337 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4331,7 +4354,7 @@ msgstr "" " 是內建命令「test」的同義詞,但是最後一個引數必須是\n" " 字元「]」,以匹配起始的「[」。" -#: builtins.c:1345 +#: builtins.c:1346 msgid "" "Display process times.\n" " \n" @@ -4350,7 +4373,7 @@ msgstr "" " 退出狀態:\n" " 一律成功。" -#: builtins.c:1357 +#: builtins.c:1358 msgid "" "Trap signals and other events.\n" " \n" @@ -4421,7 +4444,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 SIGSPEC。" -#: builtins.c:1393 +#: builtins.c:1394 #, fuzzy msgid "" "Display information about command type.\n" @@ -4474,7 +4497,7 @@ msgstr "" " 退出狀態:\n" " 如果所有的 NAME 命令都找到則回傳成功;任何找不到則失敗。" -#: builtins.c:1424 +#: builtins.c:1425 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4564,7 +4587,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1474 +#: builtins.c:1475 msgid "" "Display or set file mode mask.\n" " \n" @@ -4596,7 +4619,8 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的 MODE 模式或者選項。" -#: builtins.c:1494 +#: builtins.c:1495 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4604,13 +4628,15 @@ msgid "" "a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" +" status is zero. If ID is a job specification, waits for all processes\n" " in that job's pipeline.\n" " \n" " If the -n option is supplied, waits for the next job to terminate and\n" " returns its exit status.\n" " \n" +" If the -f option is supplied, and job control is enabled, waits for the\n" +" specified ID to terminate, instead of waiting for it to change status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4627,7 +4653,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者選項則失敗。" -#: builtins.c:1515 +#: builtins.c:1519 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4650,7 +4676,7 @@ msgstr "" " 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的選項則失" "敗。" -#: builtins.c:1530 +#: builtins.c:1534 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4671,7 +4697,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1544 +#: builtins.c:1548 msgid "" "Arithmetic for loop.\n" " \n" @@ -4701,7 +4727,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1562 +#: builtins.c:1566 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4734,7 +4760,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1583 +#: builtins.c:1587 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4762,7 +4788,7 @@ msgstr "" " 退出狀態:\n" " 回傳狀態即 PIPELINE 的回傳狀態。" -#: builtins.c:1600 +#: builtins.c:1604 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4780,7 +4806,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1612 +#: builtins.c:1616 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4811,7 +4837,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1629 +#: builtins.c:1633 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4829,7 +4855,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1641 +#: builtins.c:1645 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4847,7 +4873,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1653 +#: builtins.c:1657 #, fuzzy msgid "" "Create a coprocess named NAME.\n" @@ -4870,7 +4896,7 @@ msgstr "" " 退出狀態:\n" " 回傳 COMMAND 命令的退出狀態。" -#: builtins.c:1667 +#: builtins.c:1671 msgid "" "Define shell function.\n" " \n" @@ -4893,7 +4919,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非 NAME 為唯讀。" -#: builtins.c:1681 +#: builtins.c:1685 msgid "" "Group commands as a unit.\n" " \n" @@ -4911,7 +4937,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1693 +#: builtins.c:1697 msgid "" "Resume job in foreground.\n" " \n" @@ -4935,7 +4961,7 @@ msgstr "" " 退出狀態:\n" " 回傳被繼續的工作狀態。" -#: builtins.c:1708 +#: builtins.c:1712 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4953,7 +4979,7 @@ msgstr "" " 退出狀態:\n" " 如果表示式求值為 0 則回傳 1;否則回傳 0。" -#: builtins.c:1720 +#: builtins.c:1724 msgid "" "Execute conditional command.\n" " \n" @@ -5001,7 +5027,7 @@ msgstr "" " 退出狀態:\n" " 根據 EXPRESSION 的值為 0 或 1。" -#: builtins.c:1746 +#: builtins.c:1750 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5096,7 +5122,7 @@ msgstr "" " HISTIGNORE\t用於決定哪些命令被存入歷史記錄檔案的模式\n" " \t\t列表,以冒號分隔。\n" -#: builtins.c:1803 +#: builtins.c:1807 #, fuzzy msgid "" "Add directories to stack.\n" @@ -5148,7 +5174,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1837 +#: builtins.c:1841 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -5196,7 +5222,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1867 +#: builtins.c:1871 #, fuzzy msgid "" "Display directory stack.\n" @@ -5246,14 +5272,14 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:1898 +#: builtins.c:1902 +#, fuzzy msgid "" "Set and unset shell options.\n" " \n" " Change the setting of each shell option OPTNAME. Without any option\n" -" arguments, list all shell options with an indication of whether or not " -"each\n" -" is set.\n" +" arguments, list each supplied OPTNAME, or all shell options if no\n" +" OPTNAMEs are given, with an indication of whether or not each is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5283,7 +5309,7 @@ msgstr "" " 如果 OPTNAME 選項被啟用則回傳成功;如果是\n" " 無效的選項或 OPTNAME 被停用則失敗。" -#: builtins.c:1919 +#: builtins.c:1923 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5339,7 +5365,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生寫入或指派錯誤。" -#: builtins.c:1953 +#: builtins.c:1957 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5384,7 +5410,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1981 +#: builtins.c:1985 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5405,7 +5431,7 @@ msgstr "" " 退出狀態:\n" " 除非使用了無效選項或者錯誤發生,否則回傳成功。" -#: builtins.c:1996 +#: builtins.c:2000 msgid "" "Modify or display completion options.\n" " \n" @@ -5457,7 +5483,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱沒有定義補完規格。" -#: builtins.c:2026 +#: builtins.c:2030 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5524,7 +5550,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項,或者 ARRAY 變數唯讀或不是索引陣列。" -#: builtins.c:2062 +#: builtins.c:2066 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5534,9 +5560,8 @@ msgstr "" " \n" " 一個「mapfile」的同義詞。" -#, fuzzy -#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgstr "著作權所有 (C) 2013 自由軟體基金會" +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。" #~ msgid ":" #~ msgstr ":" @@ -5550,9 +5575,6 @@ msgstr "" #~ msgid "times" #~ msgstr "times" -#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." -#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。" - #~ msgid "requesting resize" #~ msgstr "要求調整" diff --git a/print_cmd.c b/print_cmd.c index 5a1ec5f17..405f3daed 100644 --- a/print_cmd.c +++ b/print_cmd.c @@ -1,6 +1,6 @@ /* print_command -- A way to make readable commands from a command tree. */ -/* Copyright (C) 1989-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -51,9 +51,6 @@ extern int printf __P((const char *, ...)); /* Yuck. Double yuck. */ #endif -extern int indirection_level; -extern int posixly_correct; - static int indentation; static int indentation_amount = 4; @@ -83,6 +80,7 @@ static void print_redirection __P((REDIRECT *)); static void print_heredoc_header __P((REDIRECT *)); static void print_heredoc_body __P((REDIRECT *)); static void print_heredocs __P((REDIRECT *)); +static void print_heredoc_bodies __P((REDIRECT *)); static void print_deferred_heredocs __P((const char *)); static void print_for_command __P((FOR_COM *)); @@ -515,11 +513,10 @@ xtrace_print_assignment (name, value, assign_list, xflags) fflush (xtrace_fp); } -/* A function to print the words of a simple command when set -x is on. Also - used to print the word list in a for or select command header; in that case, - we suppress quoting the words because they haven't been expanded yet. - XTFLAGS&1 means to print $PS4; XTFLAGS&2 means to suppress quoting the - words in LIST. */ +/* A function to print the words of a simple command when set -x is on. Also used to + print the word list in a for or select command header; in that case, we suppress + quoting the words because they haven't been expanded yet. XTFLAGS&1 means to + print $PS4; XTFLAGS&2 means to suppress quoting the words in LIST. */ void xtrace_print_word_list (list, xtflags) WORD_LIST *list; @@ -981,34 +978,38 @@ print_heredocs (heredocs) was_heredoc = 1; } +static void +print_heredoc_bodies (heredocs) + REDIRECT *heredocs; +{ + REDIRECT *hdtail; + + cprintf ("\n"); + for (hdtail = heredocs; hdtail; hdtail = hdtail->next) + { + print_heredoc_body (hdtail); + cprintf ("\n"); + } + was_heredoc = 1; +} + /* Print heredocs that are attached to the command before the connector represented by CSTRING. The parsing semantics require us to print the here-doc delimiters, then the connector (CSTRING), then the here-doc - bodies. We don't print the connector if it's a `;', but we use it to - note not to print an extra space after the last heredoc body and - newline. */ + bodies. We print the here-doc delimiters in print_redirection_list + and print the connector and the bodies here. We don't print the connector + if it's a `;', but we use it to note not to print an extra space after the + last heredoc body and newline. */ static void print_deferred_heredocs (cstring) const char *cstring; { - REDIRECT *hdtail; - - for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) - { - cprintf (" "); - print_heredoc_header (hdtail); - } + /* We now print the heredoc headers in print_redirection_list */ if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) cprintf ("%s", cstring); - if (deferred_heredocs) - cprintf ("\n"); - for (hdtail = deferred_heredocs; hdtail; hdtail = hdtail->next) - { - print_heredoc_body (hdtail); - cprintf ("\n"); - } if (deferred_heredocs) { + print_heredoc_bodies (deferred_heredocs); if (cstring && cstring[0] && (cstring[0] != ';' || cstring[1])) cprintf (" "); /* make sure there's at least one space */ dispose_redirects (deferred_heredocs); @@ -1030,12 +1031,15 @@ print_redirection_list (redirects) was_heredoc = 0; while (redirects) { - /* Defer printing the here documents until we've printed the - rest of the redirections. */ + /* Defer printing the here document bodiess until we've printed the rest of the + redirections, but print the headers in the order they're given. */ if (redirects->instruction == r_reading_until || redirects->instruction == r_deblank_reading_until) { newredir = copy_redirect (redirects); newredir->next = (REDIRECT *)NULL; + + print_heredoc_header (newredir); + if (heredocs) { hdtail->next = newredir; @@ -1062,12 +1066,13 @@ print_redirection_list (redirects) } /* Now that we've printed all the other redirections (on one line), - print the here documents. */ + print the here documents. If we're printing a connection, we wait until + we print the connector symbol, then we print the here document bodies */ if (heredocs && printing_connection) deferred_heredocs = heredocs; else if (heredocs) { - print_heredocs (heredocs); + print_heredoc_bodies (heredocs); dispose_redirects (heredocs); } } @@ -1410,8 +1415,7 @@ named_function_string (name, command, flags) } #else if (result[2] == '\n') /* XXX -- experimental */ - memmove (result + 2, result + 3, strlen (result) - 2); - + memmove (result + 2, result + 3, strlen (result) - 2); #endif } @@ -1471,7 +1475,7 @@ cprintf (control, va_alist) #endif { register const char *s; - char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (int) + 1]; + char char_arg[2], *argp, intbuf[INT_STRLEN_BOUND (unsigned int) + 1]; int digit_arg, arg_len, c; va_list args; @@ -1516,7 +1520,7 @@ cprintf (control, va_alist) digit_arg = va_arg (args, int); if (digit_arg < 0) { - sprintf (intbuf, "%u", (unsigned)-1); + sprintf (intbuf, "%u", (unsigned int)-1); argp = intbuf; } else diff --git a/redir.c b/redir.c index 1858b0b08..f5276dc65 100644 --- a/redir.c +++ b/redir.c @@ -1,6 +1,6 @@ /* redir.c -- Functions to perform input and output redirection. */ -/* Copyright (C) 1997-2015 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -62,9 +62,6 @@ extern int errno; int expanding_redir; -extern int posixly_correct; -extern int last_command_exit_value; -extern int executing_builtin; extern REDIRECT *redirection_undo_list; extern REDIRECT *exec_redirection_undo_list; @@ -157,7 +154,6 @@ redirection_error (temp, error) #endif else if (expandable_redirection_filename (temp)) { -expandable_filename: oflags = temp->redirectee.filename->flags; if (posixly_correct && interactive_shell == 0) temp->redirectee.filename->flags |= W_NOGLOB; @@ -582,6 +578,10 @@ redir_special_open (spec, filename, flags, mode, ri) #if defined (NETWORK_REDIRECTIONS) case RF_DEVTCP: case RF_DEVUDP: +#if defined (RESTRICTED_SHELL) + if (restricted) + return (RESTRICTED_REDIRECT); +#endif #if defined (HAVE_NETWORK) fd = netopen (filename); #else @@ -854,7 +854,7 @@ do_redirection_internal (redirect, flags) fd = redir_open (redirectee_word, redirect->flags, 0666, ri); free (redirectee_word); - if (fd == NOCLOBBER_REDIRECT) + if (fd == NOCLOBBER_REDIRECT || fd == RESTRICTED_REDIRECT) return (fd); if (fd < 0) @@ -1142,9 +1142,12 @@ do_redirection_internal (redirect, flags) r = 0; /* XXX - only if REDIR_VARASSIGN not set? */ - if ((flags & RX_UNDOABLE) && (fcntl (redirector, F_GETFD, 0) != -1)) + if (flags & RX_UNDOABLE) { - r = add_undo_redirect (redirector, ri, -1); + if (fcntl (redirector, F_GETFD, 0) != -1) + r = add_undo_redirect (redirector, ri, -1); + else + r = add_undo_close_redirect (redirector); REDIRECTION_ERROR (r, errno, redirector); } @@ -1384,7 +1387,7 @@ redir_varvalue (redir) #if defined (ARRAY_VARS) if (vr = valid_array_reference (w, 0)) { - v = array_variable_part (w, &sub, &len); + v = array_variable_part (w, 0, &sub, &len); } else #endif @@ -1398,7 +1401,7 @@ redir_varvalue (redir) { w = nameref_cell (v); if (vr = valid_array_reference (w, 0)) - v = array_variable_part (w, &sub, &len); + v = array_variable_part (w, 0, &sub, &len); else v = find_variable (w); } diff --git a/shell.c b/shell.c index 45b77f9ea..ad76636cd 100644 --- a/shell.c +++ b/shell.c @@ -1,6 +1,6 @@ /* shell.c -- GNU's idea of the POSIX shell specification. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -51,6 +51,7 @@ #define NEED_SH_SETLINEBUF_DECL /* used in externs.h */ #include "shell.h" +#include "parser.h" #include "flags.h" #include "trap.h" #include "mailcheck.h" @@ -60,6 +61,7 @@ #if defined (JOB_CONTROL) #include "jobs.h" #else +extern int running_in_background; extern int initialize_job_control __P((int)); extern int get_tty_state __P((void)); #endif /* JOB_CONTROL */ @@ -101,22 +103,12 @@ extern int errno; extern char **environ; /* used if no third argument to main() */ #endif -extern char *dist_version, *release_status; -extern int patch_level, build_version; -extern int shell_level; -extern int subshell_environment; -extern int running_in_background; -extern int last_command_exit_value; -extern int line_number; -extern int expand_aliases; -extern int array_needs_making; extern int gnu_error_format; -extern char *primary_prompt, *secondary_prompt; -extern char *this_command_name; /* Non-zero means that this shell has already been run; i.e. you should call shell_reinitialize () if you need to start afresh. */ int shell_initialized = 0; +int bash_argv_initialized = 0; COMMAND *global_command = (COMMAND *)NULL; @@ -232,6 +224,8 @@ int dump_po_strings; /* Dump strings in $"..." in po format */ int wordexp_only = 0; /* Do word expansion only */ int protected_mode = 0; /* No command substitution with --wordexp */ +int pretty_print_mode = 0; /* pretty-print a shell script */ + #if defined (STRICT_POSIX) int posixly_correct = 1; /* Non-zero means posix.2 superset. */ #else @@ -260,6 +254,7 @@ static const struct { { "noprofile", Int, &no_profile, (char **)0x0 }, { "norc", Int, &no_rc, (char **)0x0 }, { "posix", Int, &posixly_correct, (char **)0x0 }, + { "pretty-print", Int, &pretty_print_mode, (char **)0x0 }, #if defined (WORDEXP_OPTION) { "protected", Int, &protected_mode, (char **)0x0 }, #endif @@ -297,6 +292,7 @@ int want_pending_command; /* -c flag supplied */ /* This variable is not static so it can be bound to $BASH_EXECUTION_STRING */ char *command_execution_string; /* argument to -c option */ +char *shell_script_filename; /* shell script */ int malloc_trace_at_exit = 0; @@ -433,7 +429,7 @@ main (argc, argv, env) arg_index = 1; if (arg_index > argc) arg_index = argc; - command_execution_string = (char *)NULL; + command_execution_string = shell_script_filename = (char *)NULL; want_pending_command = locally_skip_execution = read_from_stdin = 0; default_input = stdin; #if defined (BUFFERED_INPUT) @@ -584,7 +580,7 @@ main (argc, argv, env) */ if (interactive_shell) { - char *term, *emacs, *inside_emacs;; + char *term, *emacs, *inside_emacs; int emacs_term, in_emacs; term = get_string_value ("TERM"); @@ -673,6 +669,22 @@ main (argc, argv, env) restricted = 0; #endif + /* Set positional parameters before running startup files. top_level_arg_index + holds the index of the current argument before setting the positional + parameters, so any changes performed in the startup files won't affect + later option processing. */ + if (wordexp_only) + ; /* nothing yet */ + else if (command_execution_string) + arg_index = bind_args (argv, arg_index, argc, 0); /* $0 ... $n */ + else if (arg_index != argc && read_from_stdin == 0) + { + shell_script_filename = argv[arg_index++]; + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + } + else + arg_index = bind_args (argv, arg_index, argc, 1); /* $1 ... $n */ + /* The startup files are run with `set -e' temporarily disabled. */ if (locally_skip_execution == 0 && running_setuid == 0) { @@ -703,7 +715,7 @@ main (argc, argv, env) if (wordexp_only) { startup_state = 3; - last_command_exit_value = run_wordexp (argv[arg_index]); + last_command_exit_value = run_wordexp (argv[top_level_arg_index]); exit_shell (last_command_exit_value); } #endif @@ -713,7 +725,6 @@ main (argc, argv, env) if (command_execution_string) { - arg_index = bind_args (argv, arg_index, argc, 0); startup_state = 2; if (debugging_mode) @@ -731,11 +742,8 @@ main (argc, argv, env) /* Get possible input filename and set up default_buffered_input or default_input as appropriate. */ - if (arg_index != argc && read_from_stdin == 0) - { - open_shell_script (argv[arg_index]); - arg_index++; - } + if (shell_script_filename) + open_shell_script (shell_script_filename); else if (interactive == 0) { /* In this mode, bash is reading a script from stdin, which is a @@ -747,16 +755,13 @@ main (argc, argv, env) #endif /* !BUFFERED_INPUT */ read_from_stdin = 1; } - else if (arg_index == argc) + else if (top_level_arg_index == argc) /* arg index before startup files */ /* "If there are no operands and the -c option is not specified, the -s option shall be assumed." */ read_from_stdin = 1; set_bash_input (); - /* Bind remaining args to $1 ... $n */ - arg_index = bind_args (argv, arg_index, argc, 1); - if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && (reading_shell_script || interactive_shell == 0)) start_debugger (); @@ -788,6 +793,14 @@ main (argc, argv, env) shell_initialized = 1; + if (pretty_print_mode && interactive_shell) + { + internal_warning (_("pretty-printing mode ignored in interactive shells")); + pretty_print_mode = 0; + } + if (pretty_print_mode) + exit_shell (pretty_print_loop ()); + /* Read commands until exit condition. */ reader_loop (); exit_shell (last_command_exit_value); @@ -1236,6 +1249,10 @@ maybe_make_restricted (name) temp++; if (restricted || (STREQ (temp, RESTRICTED_SHELL_NAME))) { +#if defined (RBASH_STATIC_PATH_VALUE) + bind_variable ("PATH", RBASH_STATIC_PATH_VALUE, 0); + stupidly_hack_special_variables ("PATH"); /* clear hash table */ +#endif set_var_read_only ("PATH"); set_var_read_only ("SHELL"); set_var_read_only ("ENV"); @@ -1406,13 +1423,21 @@ bind_args (argv, arg_start, arg_end, start_index) int arg_start, arg_end, start_index; { register int i; - WORD_LIST *args; + WORD_LIST *args, *tl; + + for (i = arg_start, args = tl = (WORD_LIST *)NULL; i < arg_end; i++) + { + if (args == 0) + args = tl = make_word_list (make_word (argv[i]), args); + else + { + tl->next = make_word_list (make_word (argv[i]), (WORD_LIST *)NULL); + tl = tl->next; + } + } - for (i = arg_start, args = (WORD_LIST *)NULL; i < arg_end; i++) - args = make_word_list (make_word (argv[i]), args); if (args) { - args = REVERSE_LIST (args, WORD_LIST *); if (start_index == 0) /* bind to $0...$n for sh -c command */ { /* Posix.2 4.56.3 says that the first argument after sh -c command @@ -1421,12 +1446,23 @@ bind_args (argv, arg_start, arg_end, start_index) FREE (dollar_vars[0]); dollar_vars[0] = savestring (args->word->word); remember_args (args->next, 1); - push_args (args->next); /* BASH_ARGV and BASH_ARGC */ + if (debugging_mode) + { + push_args (args->next); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } } else /* bind to $1...$n for shell script */ { remember_args (args, 1); - push_args (args); /* BASH_ARGV and BASH_ARGC */ + /* We do this unconditionally so something like -O extdebug doesn't + do it first. We're setting the definitive positional params + here. */ + if (debugging_mode) + { + push_args (args); /* BASH_ARGV and BASH_ARGC */ + bash_argv_initialized = 1; + } } dispose_words (args); @@ -1504,6 +1540,9 @@ open_shell_script (script_name) { e = errno; file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif sh_exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); } @@ -1523,6 +1562,9 @@ open_shell_script (script_name) errno = EINVAL; #endif file_error (filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif sh_exit (EX_NOINPUT); } @@ -1571,11 +1613,17 @@ open_shell_script (script_name) errno = e; file_error (filename); } +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif exit (EX_NOEXEC); } else if (sample_len > 0 && (check_binary_file (sample, sample_len))) { internal_error (_("%s: cannot execute binary file"), filename); +#if defined (JOB_CONTROL) + end_job_control (); /* just in case we were run as bash -i script */ +#endif exit (EX_BINARY_FILE); } /* Now rewind the file back to the beginning. */ @@ -1722,6 +1770,7 @@ init_interactive () interactive = 1; #if defined (HISTORY) remember_on_history = enable_history_list = 1; /* XXX */ + histexp_flag = history_expansion; /* XXX */ #endif } @@ -1889,6 +1938,7 @@ shell_reinitialize () forced_interactive = interactive_shell = 0; subshell_environment = running_in_background = 0; expand_aliases = 0; + bash_argv_initialized = 0; /* XXX - should we set jobs_m_flag to 0 here? */ diff --git a/shell.h b/shell.h index ce0887910..807260523 100644 --- a/shell.h +++ b/shell.h @@ -72,6 +72,7 @@ extern int EOF_Reached; #define EX_REDIRFAIL 259 /* redirection failed */ #define EX_BADASSIGN 260 /* variable assignment error */ #define EX_EXPFAIL 261 /* word expansion failed */ +#define EX_DISKFALLBACK 262 /* fall back to disk command from builtin */ /* Flag values that control parameter pattern substitution. */ #define MATCH_ANY 0x000 @@ -90,14 +91,43 @@ extern char **shell_environment; extern WORD_LIST *rest_of_args; /* Generalized global variables. */ +extern char *command_execution_string; + extern int debugging_mode; extern int executing, login_shell; extern int interactive, interactive_shell; extern int startup_state; +extern int reading_shell_script; +extern int shell_initialized; +extern int bash_argv_initialized; extern int subshell_environment; +extern int current_command_number; +extern int indirection_level; extern int shell_compatibility_level; +extern int running_under_emacs; + +extern int posixly_correct; +extern int no_line_editing; + +extern char *shell_name; +extern char *current_host_name; + +extern int subshell_argc; +extern char **subshell_argv; +extern char **subshell_envp; + +/* variables managed using shopt */ +extern int hup_on_exit; +extern int check_jobs_at_exit; +extern int autocd; +extern int check_window_size; + +/* from version.c */ +extern int build_version, patch_level; +extern char *dist_version, *release_status; extern int locale_mb_cur_max; +extern int locale_utf8locale; /* Structure to pass around that holds a bitmap of file descriptors to close, and the size of that structure. Used in execute_cmd.c. */ diff --git a/sig.c b/sig.c index e5bb73997..6934f4f94 100644 --- a/sig.c +++ b/sig.c @@ -1,6 +1,6 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994-2015 Free Software Foundation, Inc. +/* Copyright (C) 1994-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,6 +35,7 @@ #include "bashintl.h" #include "shell.h" +#include "execute_cmd.h" #if defined (JOB_CONTROL) #include "jobs.h" #endif /* JOB_CONTROL */ @@ -54,22 +55,6 @@ # include "bashhist.h" #endif -extern int last_command_exit_value; -extern int last_command_exit_signal; -extern int return_catch_flag; -extern int running_trap; -extern int loop_level, continuing, breaking, funcnest; -extern int executing_list; -extern int comsub_ignore_return; -extern int parse_and_execute_level, shell_initialized; -#if defined (HISTORY) -extern int history_lines_this_session; -#endif -extern int no_line_editing; -extern int wait_signal_received; -extern int wait_intr_flag; -extern sh_builtin_func_t *this_shell_builtin; - extern void initialize_siglist (); #if !defined (JOB_CONTROL) @@ -128,6 +113,7 @@ struct termsig { int signum; SigHandler *orig_handler; int orig_flags; + int core_dump; }; #define NULL_HANDLER (SigHandler *)SIG_DFL @@ -145,15 +131,15 @@ static struct termsig terminating_signals[] = { #endif #ifdef SIGILL -{ SIGILL, NULL_HANDLER, 0 }, +{ SIGILL, NULL_HANDLER, 0, 1}, #endif #ifdef SIGTRAP -{ SIGTRAP, NULL_HANDLER, 0 }, +{ SIGTRAP, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGIOT -{ SIGIOT, NULL_HANDLER, 0 }, +{ SIGIOT, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGDANGER @@ -165,19 +151,19 @@ static struct termsig terminating_signals[] = { #endif #ifdef SIGFPE -{ SIGFPE, NULL_HANDLER, 0 }, +{ SIGFPE, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGBUS -{ SIGBUS, NULL_HANDLER, 0 }, +{ SIGBUS, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGSEGV -{ SIGSEGV, NULL_HANDLER, 0 }, +{ SIGSEGV, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGSYS -{ SIGSYS, NULL_HANDLER, 0 }, +{ SIGSYS, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGPIPE @@ -192,12 +178,14 @@ static struct termsig terminating_signals[] = { { SIGTERM, NULL_HANDLER, 0 }, #endif +/* These don't generate core dumps on anything but Linux, but we're doing + this just for Linux anyway. */ #ifdef SIGXCPU -{ SIGXCPU, NULL_HANDLER, 0 }, +{ SIGXCPU, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGXFSZ -{ SIGXFSZ, NULL_HANDLER, 0 }, +{ SIGXFSZ, NULL_HANDLER, 0, 1 }, #endif #ifdef SIGVTALRM @@ -228,6 +216,7 @@ static struct termsig terminating_signals[] = { #define XSIG(x) (terminating_signals[x].signum) #define XHANDLER(x) (terminating_signals[x].orig_handler) #define XSAFLAGS(x) (terminating_signals[x].orig_flags) +#define XCOREDUMP(x) (terminating_signals[x].core_dump) static int termsigs_initialized = 0; @@ -375,7 +364,6 @@ reset_terminating_signals () termsigs_initialized = 0; } -#undef XSIG #undef XHANDLER /* Run some of the cleanups that should be performed when we run @@ -386,7 +374,7 @@ top_level_cleanup () { /* Clean up string parser environment. */ while (parse_and_execute_level) - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); #if defined (PROCESS_SUBSTITUTION) unlink_fifo_list (); @@ -424,7 +412,7 @@ throw_to_top_level () /* Clean up string parser environment. */ while (parse_and_execute_level) - parse_and_execute_cleanup (); + parse_and_execute_cleanup (-1); if (running_trap > 0) run_trap_cleanup (running_trap - 1); @@ -557,6 +545,8 @@ termsig_handler (sig) int sig; { static int handling_termsig = 0; + int i, core; + sigset_t mask; /* Simple semaphore to keep this function from being executed multiple times. Since we no longer are running as a signal handler, we don't @@ -598,9 +588,39 @@ termsig_handler (sig) executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; run_exit_trap (); /* XXX - run exit trap possibly in signal context? */ + + /* We don't change the set of blocked signals. If a user starts the shell + with a terminating signal blocked, we won't get here (and if by some + magic chance we do, we'll exit below). */ set_signal_handler (sig, SIG_DFL); + kill (getpid (), sig); + + if (dollar_dollar_pid != 1) + exit (128+sig); /* just in case the kill fails? */ + + /* We are PID 1, and the kill above failed to kill the process. We assume + this means that we are running as an init process in a pid namespace + on Linux. In this case, we can't send ourselves a fatal signal, so we + determine whether or not we should have generated a core dump with the + kill call and attempt to trick the kernel into generating one if + necessary. */ + sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask); + for (i = core = 0; i < TERMSIGS_LENGTH; i++) + { + set_signal_handler (XSIG (i), SIG_DFL); + sigdelset (&mask, XSIG (i)); + if (sig == XSIG (i)) + core = XCOREDUMP (i); + } + sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL); + + if (core) + *((volatile unsigned long *) NULL) = 0xdead0000 + sig; /* SIGSEGV */ + + exit (128+sig); } +#undef XSIG /* What we really do when SIGINT occurs. */ sighandler @@ -738,6 +758,13 @@ set_signal_handler (sig, handler) #if defined (SIGCHLD) if (sig == SIGCHLD) act.sa_flags |= SA_RESTART; /* XXX */ +#endif + /* XXX - bash-5.0 */ + /* Let's see if we can keep SIGWINCH from interrupting interruptible system + calls, like open(2)/read(2)/write(2) */ +#if defined (SIGWINCH) + if (sig == SIGWINCH) + act.sa_flags |= SA_RESTART; /* XXX */ #endif /* If we're installing a SIGTERM handler for interactive shells, we want it to be as close to SIG_IGN as possible. */ diff --git a/subst.c b/subst.c index fc00cab08..6d1000986 100644 --- a/subst.c +++ b/subst.c @@ -4,7 +4,7 @@ /* ``Have a little faith, there's magic in the night. You ain't a beauty, but, hey, you're alright.'' */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -180,20 +180,16 @@ WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL; errors. Enabled when doing completion and prompt string expansion. */ int no_longjmp_on_fatal_error = 0; +/* Non-zero means to allow unmatched globbed filenames to expand to + a null file. */ +int allow_null_glob_expansion; + +/* Non-zero means to throw an error when globbing fails to match anything. */ +int fail_glob_expansion; + /* Extern functions and variables from different files. */ -extern int last_command_exit_value, last_command_exit_signal; -extern int subshell_environment, running_in_background; -extern int subshell_level, parse_and_execute_level, sourcelevel; -extern int eof_encountered, line_number; -extern int return_catch_flag, return_catch_value; -extern pid_t dollar_dollar_pid; -extern int posixly_correct; -extern char *this_command_name; extern struct fd_bitmap *current_fds_to_close; extern int wordexp_only; -extern int expanding_redir; -extern int tempenv_assign_error; -extern int builtin_ignoring_errexit; #if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION) extern PROCESS *last_procsub_child; @@ -203,13 +199,6 @@ extern PROCESS *last_procsub_child; extern wchar_t *wcsdup __P((const wchar_t *)); #endif -/* Non-zero means to allow unmatched globbed filenames to expand to - a null file. */ -int allow_null_glob_expansion; - -/* Non-zero means to throw an error when globbing fails to match anything. */ -int fail_glob_expansion; - #if 0 /* Variables to keep track of which words in an expanded word list (the output of expand_word_list_internal) are the result of globbing @@ -221,13 +210,17 @@ static int glob_argv_flags_size; static WORD_LIST *cached_quoted_dollar_at = 0; +/* Distinguished error values to return from expansion functions */ static WORD_LIST expand_word_error, expand_word_fatal; static WORD_DESC expand_wdesc_error, expand_wdesc_fatal; -static char expand_param_error, expand_param_fatal; +static char expand_param_error, expand_param_fatal, expand_param_unset; static char extract_string_error, extract_string_fatal; -/* Set by expand_word_unsplit; used to inhibit splitting and re-joining - $* on $IFS, primarily when doing assignment statements. */ +/* Set by expand_word_unsplit and several of the expand_string_XXX functions; + used to inhibit splitting and re-joining $* on $IFS, primarily when doing + assignment statements. The idea is that if we're in a context where this + is set, we're not going to be performing word splitting, so we use the same + rules to expand $* as we would if it appeared within double quotes. */ static int expand_no_split_dollar_star = 0; /* A WORD_LIST of words to be expanded by expand_word_list_internal, @@ -243,7 +236,8 @@ static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC * static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *)); static WORD_LIST *expand_string_internal __P((char *, int)); static WORD_LIST *expand_string_leave_quoted __P((char *, int)); -static WORD_LIST *expand_string_for_rhs __P((char *, int, int *, int *)); +static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int, int *, int *)); +static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *)); static WORD_LIST *list_quote_escapes __P((WORD_LIST *)); static WORD_LIST *list_dequote_escapes __P((WORD_LIST *)); @@ -305,11 +299,11 @@ static char *parameter_list_transform __P((int, int, int)); #if defined ARRAY_VARS static char *array_transform __P((int, SHELL_VAR *, char *, int)); #endif -static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int)); +static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int, int)); static char *process_substitute __P((char *, int)); -static char *read_comsub __P((int, int, int *)); +static char *read_comsub __P((int, int, int, int *)); #ifdef ARRAY_VARS static arrayind_t array_length_reference __P((char *)); @@ -323,7 +317,7 @@ static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int, arrayi static char *parameter_brace_find_indir __P((char *, int, int, int)); static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int, int *, int *)); -static void parameter_brace_expand_error __P((char *, char *)); +static void parameter_brace_expand_error __P((char *, char *, int)); static int valid_length_expression __P((char *)); static intmax_t parameter_brace_expand_length __P((char *)); @@ -332,7 +326,7 @@ static char *skiparith __P((char *, int)); static int verify_substring_values __P((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *)); static int get_var_and_type __P((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **)); static char *mb_substring __P((char *, int, int)); -static char *parameter_brace_substring __P((char *, char *, int, char *, int, int)); +static char *parameter_brace_substring __P((char *, char *, int, char *, int, int, int)); static int shouldexp_replacement __P((char *)); @@ -341,7 +335,7 @@ static char *pos_params_pat_subst __P((char *, char *, char *, int)); static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int, int)); static char *pos_params_casemod __P((char *, char *, int, int)); -static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int)); +static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int, int)); static WORD_DESC *parameter_brace_expand __P((char *, int *, int, int, int *, int *)); static WORD_DESC *param_expand __P((char *, int *, int, int *, int *, int *, int *, int)); @@ -453,6 +447,11 @@ dump_word_flags (flags) f &= ~W_ASSIGNRHS; fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : ""); } + if (f & W_NOASSNTILDE) + { + f &= ~W_NOASSNTILDE; + fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : ""); + } if (f & W_NOCOMSUB) { f &= ~W_NOCOMSUB; @@ -518,6 +517,11 @@ dump_word_flags (flags) f &= ~W_COMPLETE; fprintf (stderr, "W_COMPLETE%s", f ? "|" : ""); } + if (f & W_CHKLOCAL) + { + f &= ~W_CHKLOCAL; + fprintf (stderr, "W_CHKLOCAL%s", f ? "|" : ""); + } fprintf (stderr, "\n"); fflush (stderr); @@ -591,6 +595,7 @@ quoted_strlen (s) } #endif +#ifdef INCLUDE_UNUSED /* Find the first occurrence of character C in string S, obeying shell quoting rules. If (FLAGS & ST_BACKSL) is non-zero, backslash-escaped characters are skipped. If (FLAGS & ST_CTLESC) is non-zero, characters @@ -618,7 +623,6 @@ quoted_strchr (s, c, flags) return ((char *)NULL); } -#if defined (INCLUDE_UNUSED) /* Return 1 if CHARACTER appears in an unquoted portion of STRING. Return 0 otherwise. CHARACTER must be a single-byte character. */ static int @@ -798,12 +802,12 @@ string_extract (string, sindex, charlist, flags) break; } #if defined (ARRAY_VARS) - else if ((flags & SX_VARNAME) && c == '[') + else if ((flags & SX_VARNAME) && c == LBRACK) { int ni; /* If this is an array subscript, skip over it and continue. */ ni = skipsubscript (string, i, 0); - if (string[ni] == ']') + if (string[ni] == RBRACK) i = ni; } #endif @@ -880,16 +884,16 @@ string_extract_double_quoted (string, sindex, flags) and want to strip these backslashes only if DQUOTE is non-zero, indicating that we are inside an embedded double-quoted string. */ - /* If we are in an embedded quoted string, then don't strip - backslashes before characters for which the backslash - retains its special meaning, but remove backslashes in - front of other characters. If we are not in an - embedded quoted string, don't strip backslashes at all. - This mess is necessary because the string was already - surrounded by double quotes (and sh has some really weird - quoting rules). - The returned string will be run through expansion as if - it were double-quoted. */ + /* If we are in an embedded quoted string, then don't strip + backslashes before characters for which the backslash + retains its special meaning, but remove backslashes in + front of other characters. If we are not in an + embedded quoted string, don't strip backslashes at all. + This mess is necessary because the string was already + surrounded by double quotes (and sh has some really weird + quoting rules). + The returned string will be run through expansion as if + it were double-quoted. */ if ((stripdq == 0 && c != '"') || (stripdq && ((dquote && (sh_syntaxtab[c] & CBSDQUOTE)) || dquote == 0))) temp[j++] = '\\'; @@ -918,7 +922,7 @@ add_one_character: { if (c == '`') backquote = 0; - temp[j++] = c; + temp[j++] = c; /* COPY_CHAR_I? */ i++; continue; } @@ -954,6 +958,7 @@ add_one_character: ret = string + i + 2; } + /* XXX - CHECK_STRING_OVERRUN here? */ for (t = 0; ret[t]; t++, j++) temp[j] = ret[t]; temp[j] = string[si]; @@ -1134,7 +1139,6 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) { register int i; #if defined (HANDLE_MULTIBYTE) - size_t clen; wchar_t *wcharlist; #endif int c; @@ -1149,13 +1153,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) } i = *sindex; -#if 0 - /* See how the MBLEN and ADVANCE_CHAR macros work to understand why we need - this only if MB_CUR_MAX > 1. */ - slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 1; -#endif #if defined (HANDLE_MULTIBYTE) - clen = strlen (charlist); wcharlist = 0; #endif while (c = string[i]) @@ -1166,6 +1164,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) if ((flags & SX_NOCTLESC) == 0 && c == CTLESC) { i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); continue; } /* Even if flags contains SX_NOCTLESC, we let CTLESC quoting CTLNUL @@ -1174,6 +1173,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) else if ((flags & SX_NOESCCTLNUL) == 0 && c == CTLESC && string[i+1] == CTLNUL) { i += 2; + CHECK_STRING_OVERRUN (i, i, slen, c); continue; } @@ -1267,6 +1267,7 @@ extract_process_subst (string, starter, sindex, xflags) int xflags; { #if 0 + /* XXX - check xflags&SX_COMPLETE here? */ return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); #else xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); @@ -1287,8 +1288,8 @@ extract_array_assignment_list (string, sindex) int slen; char *ret; - slen = strlen (string); /* ( */ - if (string[slen - 1] == ')') + slen = strlen (string); + if (string[slen - 1] == RPAREN) { ret = substring (string, *sindex, slen - 1); *sindex = slen - 1; @@ -1383,6 +1384,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + 2; t = extract_command_subst (string, &si, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1392,6 +1394,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + len_opener; t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1401,6 +1404,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + len_alt_opener; t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1420,6 +1424,7 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { si = i + 1; t = string_extract (string, &si, "`", flags|SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si + 1; continue; } @@ -1539,7 +1544,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) t = string_extract (string, &si, "`", flags|SX_NOALLOC); CHECK_STRING_OVERRUN (i, si, slen, c); - + i = si + 1; continue; } @@ -1550,10 +1555,27 @@ extract_dollar_brace_string (string, sindex, quoted, flags) { si = i + 2; t = extract_command_subst (string, &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; continue; } +#if defined (PROCESS_SUBSTITUTION) + /* Technically this should only work at the start of a word */ + if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN) + { + si = i + 2; + t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + + i = si + 1; + continue; + } +#endif + /* Pass the contents of double-quoted strings through verbatim. */ if (c == '"') { @@ -1577,6 +1599,17 @@ extract_dollar_brace_string (string, sindex, quoted, flags) continue; } +#if defined (ARRAY_VARS) + /* XXX - bash-5.0 */ + if (c == LBRACK && dolbrace_state == DOLBRACE_PARAM) + { + si = skipsubscript (string, i, 0); + CHECK_STRING_OVERRUN (i, si, slen, c); + if (string[si] == RBRACK) + c = string[i = si]; + } +#endif + /* move past this character, which was not special. */ ADVANCE_CHAR (string, slen, i); @@ -1683,7 +1716,8 @@ unquote_bang (string) parse array subscripts. FLAGS & 1 means to not attempt to skip over matched pairs of quotes or backquotes, or skip word expansions; it is intended to be used after expansion has been performed and during final - assignment parsing (see arrayfunc.c:assign_compound_array_list()). */ + assignment parsing (see arrayfunc.c:assign_compound_array_list()) or + during execution by a builtin which has already undergone word expansion. */ static int skip_matched_pair (string, start, open, close, flags) const char *string; @@ -1712,7 +1746,7 @@ skip_matched_pair (string, start, open, close, flags) ADVANCE_CHAR (string, slen, i); continue; } - else if (c == '\\') + else if ((flags & 1) == 0 && c == '\\') { pass_next = 1; i++; @@ -1757,6 +1791,7 @@ skip_matched_pair (string, start, open, close, flags) if (string[si] == '\0') CQ_RETURN(si); + /* XXX - extract_command_subst here? */ if (string[i+1] == LPAREN) temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ else @@ -1904,6 +1939,7 @@ skip_to_delim (string, start, delims, flags) temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ else temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC); + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') /* don't increment i past EOS in loop */ break; @@ -1916,12 +1952,9 @@ skip_to_delim (string, start, delims, flags) si = i + 2; if (string[si] == '\0') CQ_RETURN(si); -#if 1 + temp = extract_delimited_string (string, &si, (c == '<') ? "<(" : ">(", "(", ")", SX_COMMAND|SX_NOALLOC); /* )) */ -#else - temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); - free (temp); /* XXX - not using SX_NOALLOC here yet */ -#endif + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') break; @@ -1941,6 +1974,7 @@ skip_to_delim (string, start, delims, flags) open[2] = '\0'; temp = extract_delimited_string (string, &si, open, "(", ")", SX_NOALLOC); /* ) */ + CHECK_STRING_OVERRUN (i, si, slen, c); i = si; if (string[i] == '\0') /* don't increment i past EOS in loop */ break; @@ -1983,10 +2017,9 @@ skip_to_histexp (string, start, delims, flags) char *delims; int flags; { - int i, pass_next, backq, dquote, si, c, oldjmp; + int i, pass_next, backq, dquote, c, oldjmp; int histexp_comsub, histexp_backq, old_dquote; size_t slen; - char *temp, open[3]; DECLARE_MBSTATE; slen = strlen (string + start) + start; @@ -2209,7 +2242,7 @@ unclosed_pair (string, eindex, openstr) rules. SENTINEL is an index to look for. NWP, if non-NULL, gets the number of words in the returned list. CWP, if non-NULL, gets the index of the word containing SENTINEL. Non-whitespace chars in - DELIMS delimit separate fields. */ + DELIMS delimit separate fields. This is used by programmable completion. */ WORD_LIST * split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) char *string; @@ -2302,10 +2335,10 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) /* If we're using IFS splitting, the non-whitespace delimiter char and any additional IFS whitespace delimits a field. */ if (ifs_split) - while (member (string[te], d) && spctabnl (string[te])) + while (member (string[te], d) && spctabnl (string[te]) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) te++; else - while (member (string[te], d2)) + while (member (string[te], d2) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) te++; } @@ -2338,7 +2371,8 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) break; i = te; - while (member (string[i], d) && (ifs_split || spctabnl(string[i]))) + /* XXX - honor SD_NOQUOTEDELIM here */ + while (member (string[i], d) && (ifs_split || spctabnl(string[i])) && ((flags&SD_NOQUOTEDELIM) == 0 || (string[te] != '\'' && string[te] != '"'))) i++; if (string[i]) @@ -2501,9 +2535,12 @@ ifs_firstchar (lenp) expansion [of $*] appears within a double quoted string, it expands to a single field with the value of each parameter separated by the first character of the IFS variable, or by a if IFS is unset." */ +/* Posix interpretation 888 changes this when IFS is null by specifying + that when unquoted, this expands to separate arguments */ char * -string_list_dollar_star (list) +string_list_dollar_star (list, quoted, flags) WORD_LIST *list; + int quoted, flags; { char *ret; #if defined (HANDLE_MULTIBYTE) @@ -2606,11 +2643,11 @@ string_list_dollar_at (list, quoted, flags) sep[0] = ' '; sep[1] = '\0'; } -#else +#else /* !HANDLE_MULTIBYTE */ /* XXX - bash-4.4/bash-5.0 test PF_ASSIGNRHS */ sep[0] = ((flags & PF_ASSIGNRHS) || ifs == 0 || *ifs == 0) ? ' ' : *ifs; sep[1] = '\0'; -#endif +#endif /* !HANDLE_MULTIBYTE */ /* XXX -- why call quote_list if ifs == 0? we can get away without doing it now that quote_escapes quotes spaces */ @@ -2642,7 +2679,7 @@ string_list_pos_params (pchar, list, quoted) { tlist = quote_list (list); word_list_remove_quoted_nulls (tlist); - ret = string_list_dollar_star (tlist); + ret = string_list_dollar_star (tlist, 0, 0); } else if (pchar == '*' && (quoted & Q_HERE_DOCUMENT)) { @@ -2650,12 +2687,14 @@ string_list_pos_params (pchar, list, quoted) word_list_remove_quoted_nulls (tlist); ret = string_list (tlist); } + else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */ + ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ else if (pchar == '*') { /* Even when unquoted, string_list_dollar_star does the right thing making sure that the first character of $IFS is used as the separator. */ - ret = string_list_dollar_star (list); + ret = string_list_dollar_star (list, quoted, 0); } else if (pchar == '@' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) /* We use string_list_dollar_at, but only if the string is quoted, since @@ -2666,8 +2705,10 @@ string_list_pos_params (pchar, list, quoted) the elements of $@ are separated by the first character of $IFS for later splitting. */ ret = string_list_dollar_at (list, quoted, 0); + else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */ + ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */ else if (pchar == '@') - ret = string_list_dollar_star (list); + ret = string_list_dollar_star (list, quoted, 0); else ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (list) : list); @@ -2749,11 +2790,11 @@ list_string (string, separators, quoted) extract a word, stopping at a separator skip sequences of spc, tab, or nl as long as they are separators This obeys the field splitting rules in Posix.2. */ - slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 1; + slen = STRLEN (string); for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { - /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim - unless multibyte chars are possible. */ + /* Don't need string length in ADVANCE_CHAR unless multibyte chars are + possible, but need it in string_extract_verbatim for bounds checking */ current_word = string_extract_verbatim (string, slen, &sindex, separators, xflags); if (current_word == 0) break; @@ -3016,19 +3057,20 @@ do_compound_assignment (name, value, flags) int flags; { SHELL_VAR *v; - int mklocal, mkassoc, mkglobal; + int mklocal, mkassoc, mkglobal, chklocal; WORD_LIST *list; mklocal = flags & ASS_MKLOCAL; mkassoc = flags & ASS_MKASSOC; mkglobal = flags & ASS_MKGLOBAL; + chklocal = flags & ASS_CHKLOCAL; if (mklocal && variable_context) { v = find_variable (name); if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } @@ -3042,13 +3084,18 @@ do_compound_assignment (name, value, flags) if (list) dispose_words (list); } - /* In a function but forcing assignment in global context */ + /* In a function but forcing assignment in global context. CHKLOCAL means to + check for an existing local variable first. */ else if (mkglobal && variable_context) { - v = find_global_variable (name); + v = chklocal ? find_variable (name) : 0; + if (v && (local_p (v) == 0 || v->context != variable_context)) + v = 0; + if (v == 0) + v = find_global_variable (name); if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } @@ -3071,7 +3118,7 @@ do_compound_assignment (name, value, flags) v = assign_array_from_string (name, value, flags); if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) { - if (v && readonly_p (v)) + if (readonly_p (v)) err_readonly (name); return (v); /* XXX */ } @@ -3155,7 +3202,7 @@ do_assignment_internal (word, expand) aflags |= ASS_APPEND; #if defined (ARRAY_VARS) - if (t = mbschr (name, '[')) /*]*/ + if (t = mbschr (name, LBRACK)) { if (assign_list) { @@ -3168,6 +3215,8 @@ do_assignment_internal (word, expand) } else if (assign_list) { + if ((word->flags & W_ASSIGNARG) && (word->flags & W_CHKLOCAL)) + aflags |= ASS_CHKLOCAL; if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL) == 0) aflags |= ASS_MKLOCAL; if ((word->flags & W_ASSIGNARG) && (word->flags & W_ASSNGLOBAL)) @@ -3303,7 +3352,7 @@ string_rest_of_args (dollar_star) char *string; list = list_rest_of_args (); - string = dollar_star ? string_list_dollar_star (list) : string_list (list); + string = dollar_star ? string_list_dollar_star (list, 0, 0) : string_list (list); dispose_words (list); return (string); } @@ -3348,7 +3397,6 @@ pos_params (string, start, end, quoted) t = params; params = params->next; } - t->next = (WORD_LIST *)NULL; ret = string_list_pos_params (string[0], h, quoted); @@ -3584,7 +3632,7 @@ cond_expand_word (w, special) /* Need to figure out whether or not we should call dequote_escapes or a new dequote_ctlnul function here, and under what circumstances. */ - qflags = QGLOB_CVTNULL; + qflags = QGLOB_CVTNULL|QGLOB_CTLESC; if (special == 2) qflags |= QGLOB_REGEXP; word_list_remove_quoted_nulls (l); @@ -3697,7 +3745,16 @@ expand_string_assignment (string, quoted) expand_no_split_dollar_star = 1; +#if 0 + /* Other shells (ksh93) do it this way, which affects how $@ is expanded + in constructs like bar=${@#0} (preserves the spaces resulting from the + expansion of $@ in a context where you don't do word splitting); Posix + interp 888 makes the expansion of $@ in contexts where word splitting + is not performed unspecified. */ + td.flags = W_ASSIGNRHS|W_NOSPLIT2; /* Posix interp 888 */ +#else td.flags = W_ASSIGNRHS; +#endif td.word = savestring (string); value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL); FREE (td.word); @@ -3788,7 +3845,52 @@ expand_string_leave_quoted (string, quoted) /* This does not perform word splitting or dequote the WORD_LIST it returns. */ static WORD_LIST * -expand_string_for_rhs (string, quoted, dollar_at_p, expanded_p) +expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p) + char *string; + int quoted, op, pflags; + int *dollar_at_p, *expanded_p; +{ + WORD_DESC td; + WORD_LIST *tresult; + int old_nosplit; + + if (string == 0 || *string == '\0') + return (WORD_LIST *)NULL; + + /* We want field splitting to be determined by what is going to be done with + the entire ${parameterOPword} expansion, so we don't want to split the RHS + we expand here. However, the expansion of $* is determined by whether we + are going to eventually perform word splitting, so we want to set this + depending on whether or not are are going to be splitting: if the expansion + is quoted, if the OP is `=', or if IFS is set to the empty string, we + are not going to be splitting, so we set expand_no_split_dollar_star to + We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an + assignment statement. */ + /* The updated treatment of $* is the result of Posix interp 888 */ + /* This was further clarified on the austin-group list in March, 2017 and + in Posix bug 1129 */ + old_nosplit = expand_no_split_dollar_star; + expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */ + td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ + if (pflags & PF_ASSIGNRHS) /* pass through */ + td.flags |= W_ASSIGNRHS; + if (op == '=') +#if 0 + td.flags |= W_ASSIGNRHS; /* expand b in ${a=b} like assignment */ +#else + td.flags |= W_ASSIGNRHS|W_NOASSNTILDE; /* expand b in ${a=b} like assignment */ +#endif + td.word = string; + tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); + expand_no_split_dollar_star = old_nosplit; + + return (tresult); +} + +/* This does not perform word splitting or dequote the WORD_LIST + it returns and it treats $* as if it were quoted. */ +static WORD_LIST * +expand_string_for_pat (string, quoted, dollar_at_p, expanded_p) char *string; int quoted, *dollar_at_p, *expanded_p; { @@ -3826,6 +3928,69 @@ expand_string (string, quoted) return (result ? dequote_list (result) : result); } +/******************************************* + * * + * Functions to expand WORD_DESCs * + * * + *******************************************/ + +/* Expand WORD, performing word splitting on the result. This does + parameter expansion, command substitution, arithmetic expansion, + word splitting, and quote removal. */ + +WORD_LIST * +expand_word (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result, *tresult; + + tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + result = word_list_split (tresult); + dispose_words (tresult); + return (result ? dequote_list (result) : result); +} + +/* Expand WORD, but do not perform word splitting on the result. This + does parameter expansion, command substitution, arithmetic expansion, + and quote removal. */ +WORD_LIST * +expand_word_unsplit (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + expand_no_split_dollar_star = 1; + if (ifs_is_null) + word->flags |= W_NOSPLIT; + word->flags |= W_NOSPLIT2; + result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + expand_no_split_dollar_star = 0; + + return (result ? dequote_list (result) : result); +} + +/* Perform shell expansions on WORD, but do not perform word splitting or + quote removal on the result. Virtually identical to expand_word_unsplit; + could be combined if implementations don't diverge. */ +WORD_LIST * +expand_word_leave_quoted (word, quoted) + WORD_DESC *word; + int quoted; +{ + WORD_LIST *result; + + expand_no_split_dollar_star = 1; + if (ifs_is_null) + word->flags |= W_NOSPLIT; + word->flags |= W_NOSPLIT2; + result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); + expand_no_split_dollar_star = 0; + + return result; +} + /*************************************************** * * * Functions to handle quoting chars * @@ -3849,11 +4014,11 @@ expand_string (string, quoted) document (effectively double-quoted). */ char * quote_escapes (string) - char *string; + const char *string; { - register char *s, *t; + const char *s, *send; + char *t, *result; size_t slen; - char *result, *send; int quote_spaces, skip_ctlesc, skip_ctlnul; DECLARE_MBSTATE; @@ -3908,16 +4073,16 @@ list_quote_escapes (list) Also used by parts of the pattern substitution code. */ char * dequote_escapes (string) - char *string; + const char *string; { - register char *s, *t, *s1; + const char *s, *send; + char *t, *result; size_t slen; - char *result, *send; int quote_spaces; DECLARE_MBSTATE; if (string == 0) - return string; + return (char *)0; slen = strlen (string); send = string + slen; @@ -3945,6 +4110,7 @@ dequote_escapes (string) return result; } +#if defined (INCLUDE_UNUSED) static WORD_LIST * list_dequote_escapes (list) WORD_LIST *list; @@ -3960,6 +4126,7 @@ list_dequote_escapes (list) } return list; } +#endif /* Return a new string with the quoted representation of character C. This turns "" into QUOTED_NULL, so the W_HASQUOTEDNULL flag needs to be @@ -4036,7 +4203,7 @@ dequote_string (string) internal_inform ("dequote_string: string with bare CTLESC"); #endif - slen = strlen (string); + slen = STRLEN (string); t = result = (char *)xmalloc (slen + 1); @@ -4133,11 +4300,43 @@ remove_quoted_escapes (string) return (string); } -/* Perform quoted null character removal on STRING. We don't allow any - quoted null characters in the middle or at the ends of strings because - of how expand_word_internal works. remove_quoted_nulls () turns - STRING into an empty string iff it only consists of a quoted null, - and removes all unquoted CTLNUL characters. */ +/* Remove quoted $IFS characters from STRING. Quoted IFS characters are + added to protect them from word splitting, but we need to remove them + if no word splitting takes place. This returns newly-allocated memory, + so callers can use it to replace savestring(). */ +char * +remove_quoted_ifs (string) + char *string; +{ + register size_t slen; + register int i, j; + char *ret, *send; + DECLARE_MBSTATE; + + slen = strlen (string); + send = string + slen; + + i = j = 0; + ret = (char *)xmalloc (slen + 1); + + while (i < slen) + { + if (string[i] == CTLESC) + { + i++; + if (string[i] == 0 || isifs (string[i]) == 0) + ret[j++] = CTLESC; + if (i == slen) + break; + } + + COPY_CHAR_I (ret, j, string, send, i); + } + ret[j] = '\0'; + + return (ret); +} + char * remove_quoted_nulls (string) char *string; @@ -4160,7 +4359,8 @@ remove_quoted_nulls (string) point -- what if a CTLNUL has already been removed from the string? We don't want to drop the CTLESC or recopy characters that we've already copied down. */ - i++; string[j++] = CTLESC; + i++; + string[j++] = CTLESC; if (i == slen) break; } @@ -4171,7 +4371,7 @@ remove_quoted_nulls (string) } prev_i = i; - ADVANCE_CHAR (string, slen, i); + ADVANCE_CHAR (string, slen, i); /* COPY_CHAR_I? */ if (j < prev_i) { do string[j++] = string[prev_i++]; while (prev_i < i); @@ -4206,7 +4406,7 @@ word_list_remove_quoted_nulls (list) /* **************************************************************** */ #if defined (HANDLE_MULTIBYTE) -#if 0 /* Currently unused */ +# ifdef INCLUDE_UNUSED static unsigned char * mb_getcharlens (string, len) char *string; @@ -4229,7 +4429,7 @@ mb_getcharlens (string, len) } return ret; } -#endif +# endif #endif /* Remove the portion of PARAM matched by PATTERN according to OP, where OP @@ -4408,6 +4608,9 @@ remove_pattern (param, pattern, op) wchar_t *wparam, *wpattern; mbstate_t ps; + /* XXX - could optimize here by checking param and pattern for multibyte + chars with mbsmbchar and calling remove_upattern. */ + n = xdupmbstowcs (&wpattern, NULL, pattern); if (n == (size_t)-1) { @@ -4467,7 +4670,6 @@ match_upattern (string, pat, mtype, sp, ep) size_t len; register char *p, *p1, *npat; char *end; - int n1; /* If the pattern doesn't match anywhere in the string, go ahead and short-circuit right away. A minor optimization, saves a bunch of @@ -4485,7 +4687,7 @@ match_upattern (string, pat, mtype, sp, ep) p = npat = (char *)xmalloc (len + 3); p1 = pat; - if (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob)) + if ((mtype != MATCH_BEG) && (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob))) *p++ = '*'; while (*p1) *p++ = *p1++; @@ -4496,7 +4698,7 @@ match_upattern (string, pat, mtype, sp, ep) /* If the pattern ends with a `*' we leave it alone if it's preceded by an even number of backslashes, but if it's escaped by a backslash we need to add another `*'. */ - if (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\')) + if ((mtype != MATCH_END) && (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\'))) { pp = p1 - 3; while (pp >= pat && *pp-- == '\\') @@ -4504,7 +4706,7 @@ match_upattern (string, pat, mtype, sp, ep) if (unescaped_backslash) *p++ = '*'; } - else if (p1[-1] != '*') + else if (mtype != MATCH_END && p1[-1] != '*') *p++ = '*'; #else if (p1[-1] != '*' || p1[-2] == '\\') @@ -4768,7 +4970,6 @@ match_pattern (string, pat, mtype, sp, ep) size_t n; wchar_t *wstring, *wpat; char **indices; - size_t slen, plen, mslen, mplen; #endif if (string == 0 || pat == 0 || *pat == 0) @@ -4846,9 +5047,9 @@ getpattern (value, quoted, expandpat) } #endif - /* expand_string_for_rhs () leaves WORD quoted and does not perform + /* expand_string_for_pat () leaves WORD quoted and does not perform word splitting. */ - l = *value ? expand_string_for_rhs (value, + l = *value ? expand_string_for_pat (value, (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted, (int *)NULL, (int *)NULL) : (WORD_LIST *)0; @@ -4938,7 +5139,7 @@ array_remove_pattern (var, pattern, patspec, varname, quoted) SHELL_VAR *v; /* compute itype from varname here */ - v = array_variable_part (varname, &ret, 0); + v = array_variable_part (varname, 0, &ret, 0); /* XXX */ if (v && invisible_p (v)) @@ -4967,17 +5168,21 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag int rtype, quoted, flags; { int vtype, patspec, starsub; - char *temp1, *val, *pattern; + char *temp1, *val, *pattern, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); + oname = this_command_name; this_command_name = varname; vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -5022,7 +5227,11 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag #endif case VT_POSPARMS: temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + if (temp1 && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) { val = quote_escapes (temp1); free (temp1); @@ -5031,459 +5240,352 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag break; } + this_command_name = oname; + FREE (pattern); return temp1; } -static char * -string_var_assignment (v, s) - SHELL_VAR *v; - char *s; -{ - char flags[MAX_ATTRIBUTES], *ret, *val; - int i; +#if defined (PROCESS_SUBSTITUTION) - val = sh_quote_reusable (s, 0); - i = var_attribute_string (v, 0, flags); - ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); - if (i > 0) - sprintf (ret, "declare -%s %s=%s", flags, v->name, val); - else - sprintf (ret, "%s=%s", v->name, val); - free (val); - return ret; -} +/*****************************************************************/ +/* */ +/* Hacking Process Substitution */ +/* */ +/*****************************************************************/ -#if defined (ARRAY_VARS) -static char * -array_var_assignment (v, itype, quoted) - SHELL_VAR *v; - int itype, quoted; +#if !defined (HAVE_DEV_FD) +/* Named pipes must be removed explicitly with `unlink'. This keeps a list + of FIFOs the shell has open. unlink_fifo_list will walk the list and + unlink all of them. add_fifo_list adds the name of an open FIFO to the + list. NFIFO is a count of the number of FIFOs in the list. */ +#define FIFO_INCR 20 + +/* PROC value of -1 means the process has been reaped and the FIFO needs to + be removed. PROC value of 0 means the slot is unused. */ +struct temp_fifo { + char *file; + pid_t proc; +}; + +static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; +static int nfifo; +static int fifo_list_size; + +void +clear_fifo_list () { - char *ret, *val, flags[MAX_ATTRIBUTES]; - int i; +} - if (v == 0) - return (char *)NULL; - val = array_p (v) ? array_to_assign (array_cell (v), 0) - : assoc_to_assign (assoc_cell (v), 0); - if (val == 0) - { - val = (char *)xmalloc (3); - val[0] = '('; - val[1] = ')'; - val[2] = 0; - } - else +char * +copy_fifo_list (sizep) + int *sizep; +{ + if (sizep) + *sizep = 0; + return (char *)NULL; +} + +static void +add_fifo_list (pathname) + char *pathname; +{ + int osize, i; + + if (nfifo >= fifo_list_size - 1) { - ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); - free (val); - val = ret; + osize = fifo_list_size; + fifo_list_size += FIFO_INCR; + fifo_list = (struct temp_fifo *)xrealloc (fifo_list, + fifo_list_size * sizeof (struct temp_fifo)); + for (i = osize; i < fifo_list_size; i++) + { + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; /* unused */ + } } - i = var_attribute_string (v, 0, flags); - ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16); - sprintf (ret, "declare -%s %s=%s", flags, v->name, val); - free (val); - return ret; + + fifo_list[nfifo].file = savestring (pathname); + nfifo++; } -#endif -static char * -pos_params_assignment (list, itype, quoted) - WORD_LIST *list; - int itype; - int quoted; +void +unlink_fifo (i) + int i; { - char *temp, *ret; - - /* first, we transform the list to quote each word. */ - temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); - ret = (char *)xmalloc (strlen (temp) + 8); - strcpy (ret, "set -- "); - strcpy (ret + 7, temp); - free (temp); - return ret; + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } } -static char * -string_transform (xc, v, s) - int xc; - SHELL_VAR *v; - char *s; +void +unlink_fifo_list () { - char *ret, flags[MAX_ATTRIBUTES]; - int i; + int saved, i, j; - if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0)) - return (char *)NULL; + if (nfifo == 0) + return; - switch (xc) + for (i = saved = 0; i < nfifo; i++) { - /* Transformations that interrogate the variable */ - case 'a': - i = var_attribute_string (v, 0, flags); - ret = (i > 0) ? savestring (flags) : (char *)NULL; - break; - case 'A': - ret = string_var_assignment (v, s); - break; - /* Transformations that modify the variable's value */ - case 'E': - ret = ansiexpand (s, 0, strlen (s), (int *)0); - break; - case 'P': - ret = decode_prompt_string (s); - break; - case 'Q': - ret = sh_quote_reusable (s, 0); - break; - default: - ret = (char *)NULL; - break; + if ((fifo_list[i].proc == (pid_t)-1) || (fifo_list[i].proc > 0 && (kill(fifo_list[i].proc, 0) == -1))) + { + unlink (fifo_list[i].file); + free (fifo_list[i].file); + fifo_list[i].file = (char *)NULL; + fifo_list[i].proc = 0; + } + else + saved++; } - return ret; + + /* If we didn't remove some of the FIFOs, compact the list. */ + if (saved) + { + for (i = j = 0; i < nfifo; i++) + if (fifo_list[i].file) + { + fifo_list[j].file = fifo_list[i].file; + fifo_list[j].proc = fifo_list[i].proc; + j++; + } + nfifo = j; + } + else + nfifo = 0; } -static char * -list_transform (xc, v, list, itype, quoted) - int xc; - SHELL_VAR *v; - WORD_LIST *list; - int itype, quoted; +/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list + from some point in the past, and close all open FIFOs in fifo_list + that are not marked as active in LIST. If LIST is NULL, close + everything in fifo_list. LSIZE is the number of elements in LIST, in + case it's larger than fifo_list_size (size of fifo_list). */ +void +close_new_fifos (list, lsize) + char *list; + int lsize; { - WORD_LIST *new, *l; - WORD_DESC *w; - char *tword; + int i; - for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + if (list == 0) { - tword = string_transform (xc, v, l->word->word); - w = alloc_word_desc (); - w->word = tword ? tword : savestring (""); /* XXX */ - new = make_word_list (w, new); + unlink_fifo_list (); + return; } - l = REVERSE_LIST (new, WORD_LIST *); - tword = string_list_pos_params (itype, l, quoted); - dispose_words (l); + for (i = 0; i < lsize; i++) + if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) + unlink_fifo (i); - return (tword); + for (i = lsize; i < fifo_list_size; i++) + unlink_fifo (i); } -static char * -parameter_list_transform (xc, itype, quoted) - int xc; - int itype; - int quoted; +int +find_procsub_child (pid) + pid_t pid; { - char *ret; - WORD_LIST *list; + int i; - list = list_rest_of_args (); - if (list == 0) - return ((char *)NULL); - if (xc == 'A') - return (pos_params_assignment (list, itype, quoted)); - ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); - dispose_words (list); - return (ret); + for (i = 0; i < nfifo; i++) + if (fifo_list[i].proc == pid) + return i; + return -1; } -#if defined (ARRAY_VARS) -static char * -array_transform (xc, var, varname, quoted) - int xc; - SHELL_VAR *var; - char *varname; /* so we can figure out how it's indexed */ - int quoted; +void +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; { - ARRAY *a; - HASH_TABLE *h; - int itype; - char *ret; - WORD_LIST *list; - SHELL_VAR *v; + if (ind >= 0 && ind < nfifo) + fifo_list[ind].proc = (pid_t)-1; /* sentinel */ +} - /* compute itype from varname here */ - v = array_variable_part (varname, &ret, 0); +/* If we've marked the process for this procsub as dead, close the + associated file descriptor and delete the FIFO. */ +void +reap_procsubs () +{ + int i; - /* XXX */ - if (v && invisible_p (v)) - return ((char *)NULL); + for (i = 0; i < nfifo; i++) + if (fifo_list[i].proc == (pid_t)-1) /* reaped */ + unlink_fifo (i); +} - itype = ret[0]; +void +wait_procsubs () +{ + int i, r; - if (xc == 'A') - return (array_var_assignment (v, itype, quoted)); + for (i = 0; i < nfifo; i++) + { + if (fifo_list[i].proc != (pid_t)-1 && fifo_list[i].proc > 0) + { + r = wait_for (fifo_list[i].proc); + fifo_list[i].proc = (pid_t)-1; + } + } +} - a = (v && array_p (v)) ? array_cell (v) : 0; - h = (v && assoc_p (v)) ? assoc_cell (v) : 0; - - list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); - if (list == 0) - return ((char *)NULL); - ret = list_transform (xc, v, list, itype, quoted); - dispose_words (list); +int +fifos_pending () +{ + return nfifo; +} - return ret; +int +num_fifos () +{ + return nfifo; } -#endif /* ARRAY_VARS */ static char * -parameter_brace_transform (varname, value, ind, xform, rtype, quoted, flags) - char *varname, *value; - int ind; - char *xform; - int rtype, quoted, flags; +make_named_pipe () { - int vtype, xc; - char *temp1, *val; - SHELL_VAR *v; - - xc = xform[0]; - if (value == 0 && xc != 'A' && xc != 'a') - return ((char *)NULL); - - this_command_name = varname; - - vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); - if (vtype == -1) - return ((char *)NULL); + char *tname; - /* check for valid values of xc */ - switch (xc) + tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); + if (mkfifo (tname, 0600) < 0) { - case 'a': /* expand to a string with just attributes */ - case 'A': /* expand as an assignment statement with attributes */ - case 'E': /* expand like $'...' */ - case 'P': /* expand like prompt string */ - case 'Q': /* quote reusably */ - break; - default: - return &expand_param_error; + free (tname); + return ((char *)NULL); } - temp1 = (char *)NULL; /* shut up gcc */ - switch (vtype & ~VT_STARSUB) - { - case VT_VARIABLE: - case VT_ARRAYMEMBER: - temp1 = string_transform (xc, v, val); - if (vtype == VT_VARIABLE) - FREE (val); - if (temp1) - { - val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) - ? quote_string (temp1) - : quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; -#if defined (ARRAY_VARS) - case VT_ARRAYVAR: - temp1 = array_transform (xc, v, varname, quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) - { - val = quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; -#endif - case VT_POSPARMS: - temp1 = parameter_list_transform (xc, varname[0], quoted); - if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) - { - val = quote_escapes (temp1); - free (temp1); - temp1 = val; - } - break; - } - - return temp1; + add_fifo_list (tname); + return (tname); } -/******************************************* - * * - * Functions to expand WORD_DESCs * - * * - *******************************************/ - -/* Expand WORD, performing word splitting on the result. This does - parameter expansion, command substitution, arithmetic expansion, - word splitting, and quote removal. */ +#else /* HAVE_DEV_FD */ -WORD_LIST * -expand_word (word, quoted) - WORD_DESC *word; - int quoted; -{ - WORD_LIST *result, *tresult; +/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell + has open to children. NFDS is a count of the number of bits currently + set in DEV_FD_LIST. TOTFDS is a count of the highest possible number + of open files. */ +/* dev_fd_list[I] value of -1 means the process has been reaped and file + descriptor I needs to be closed. Value of 0 means the slot is unused. */ - tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - result = word_list_split (tresult); - dispose_words (tresult); - return (result ? dequote_list (result) : result); -} +static pid_t *dev_fd_list = (pid_t *)NULL; +static int nfds; +static int totfds; /* The highest possible number of open files. */ -/* Expand WORD, but do not perform word splitting on the result. This - does parameter expansion, command substitution, arithmetic expansion, - and quote removal. */ -WORD_LIST * -expand_word_unsplit (word, quoted) - WORD_DESC *word; - int quoted; +void +clear_fifo (i) + int i; { - WORD_LIST *result; - - expand_no_split_dollar_star = 1; -#if defined (HANDLE_MULTIBYTE) - if (ifs_firstc[0] == 0) -#else - if (ifs_firstc == 0) -#endif - word->flags |= W_NOSPLIT; - word->flags |= W_NOSPLIT2; - result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - expand_no_split_dollar_star = 0; - - return (result ? dequote_list (result) : result); + if (dev_fd_list[i]) + { + dev_fd_list[i] = 0; + nfds--; + } } -/* Perform shell expansions on WORD, but do not perform word splitting or - quote removal on the result. Virtually identical to expand_word_unsplit; - could be combined if implementations don't diverge. */ -WORD_LIST * -expand_word_leave_quoted (word, quoted) - WORD_DESC *word; - int quoted; +void +clear_fifo_list () { - WORD_LIST *result; - - expand_no_split_dollar_star = 1; -#if defined (HANDLE_MULTIBYTE) - if (ifs_firstc[0] == 0) -#else - if (ifs_firstc == 0) -#endif - word->flags |= W_NOSPLIT; - word->flags |= W_NOSPLIT2; - result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL); - expand_no_split_dollar_star = 0; - - return result; -} - -#if defined (PROCESS_SUBSTITUTION) - -/*****************************************************************/ -/* */ -/* Hacking Process Substitution */ -/* */ -/*****************************************************************/ - -#if !defined (HAVE_DEV_FD) -/* Named pipes must be removed explicitly with `unlink'. This keeps a list - of FIFOs the shell has open. unlink_fifo_list will walk the list and - unlink all of them. add_fifo_list adds the name of an open FIFO to the - list. NFIFO is a count of the number of FIFOs in the list. */ -#define FIFO_INCR 20 + register int i; -struct temp_fifo { - char *file; - pid_t proc; -}; + if (nfds == 0) + return; -static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; -static int nfifo; -static int fifo_list_size; + for (i = 0; nfds && i < totfds; i++) + clear_fifo (i); -void -clear_fifo_list () -{ + nfds = 0; } char * copy_fifo_list (sizep) int *sizep; { + char *ret; + + if (nfds == 0 || totfds == 0) + { + if (sizep) + *sizep = 0; + return (char *)NULL; + } + if (sizep) - *sizep = 0; - return (char *)NULL; + *sizep = totfds; + ret = (char *)xmalloc (totfds * sizeof (pid_t)); + return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); } static void -add_fifo_list (pathname) - char *pathname; +add_fifo_list (fd) + int fd; { - if (nfifo >= fifo_list_size - 1) + if (dev_fd_list == 0 || fd >= totfds) { - fifo_list_size += FIFO_INCR; - fifo_list = (struct temp_fifo *)xrealloc (fifo_list, - fifo_list_size * sizeof (struct temp_fifo)); + int ofds; + + ofds = totfds; + totfds = getdtablesize (); + if (totfds < 0 || totfds > 256) + totfds = 256; + if (fd >= totfds) + totfds = fd + 2; + + dev_fd_list = (pid_t *)xrealloc (dev_fd_list, totfds * sizeof (dev_fd_list[0])); + /* XXX - might need a loop for this */ + memset (dev_fd_list + ofds, '\0', (totfds - ofds) * sizeof (pid_t)); } - fifo_list[nfifo].file = savestring (pathname); - nfifo++; + dev_fd_list[fd] = 1; /* marker; updated later */ + nfds++; +} + +int +fifos_pending () +{ + return 0; /* used for cleanup; not needed with /dev/fd */ +} + +int +num_fifos () +{ + return nfds; } void -unlink_fifo (i) - int i; +unlink_fifo (fd) + int fd; { - if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1)) + if (dev_fd_list[fd]) { - unlink (fifo_list[i].file); - free (fifo_list[i].file); - fifo_list[i].file = (char *)NULL; - fifo_list[i].proc = -1; + close (fd); + dev_fd_list[fd] = 0; + nfds--; } } void unlink_fifo_list () { - int saved, i, j; + register int i; - if (nfifo == 0) + if (nfds == 0) return; - for (i = saved = 0; i < nfifo; i++) - { - if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1)) - { - unlink (fifo_list[i].file); - free (fifo_list[i].file); - fifo_list[i].file = (char *)NULL; - fifo_list[i].proc = -1; - } - else - saved++; - } + for (i = totfds-1; nfds && i >= 0; i--) + unlink_fifo (i); - /* If we didn't remove some of the FIFOs, compact the list. */ - if (saved) - { - for (i = j = 0; i < nfifo; i++) - if (fifo_list[i].file) - { - fifo_list[j].file = fifo_list[i].file; - fifo_list[j].proc = fifo_list[i].proc; - j++; - } - nfifo = j; - } - else - nfifo = 0; + nfds = 0; } -/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list - from some point in the past, and close all open FIFOs in fifo_list - that are not marked as active in LIST. If LIST is NULL, close - everything in fifo_list. LSIZE is the number of elements in LIST, in - case it's larger than fifo_list_size (size of fifo_list). */ +/* Take LIST, which is a snapshot copy of dev_fd_list from some point in + the past, and close all open fds in dev_fd_list that are not marked + as open in LIST. If LIST is NULL, close everything in dev_fd_list. + LSIZE is the number of elements in LIST, in case it's larger than + totfds (size of dev_fd_list). */ void close_new_fifos (list, lsize) char *list; @@ -5498,180 +5600,64 @@ close_new_fifos (list, lsize) } for (i = 0; i < lsize; i++) - if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) + if (list[i] == 0 && i < totfds && dev_fd_list[i]) unlink_fifo (i); - for (i = lsize; i < fifo_list_size; i++) + for (i = lsize; i < totfds; i++) unlink_fifo (i); } int -fifos_pending () +find_procsub_child (pid) + pid_t pid; { - return nfifo; -} - -int -num_fifos () -{ - return nfifo; -} - -static char * -make_named_pipe () -{ - char *tname; - - tname = sh_mktmpname ("sh-np", MT_USERANDOM|MT_USETMPDIR); - if (mkfifo (tname, 0600) < 0) - { - free (tname); - return ((char *)NULL); - } - - add_fifo_list (tname); - return (tname); -} - -#else /* HAVE_DEV_FD */ - -/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell - has open to children. NFDS is a count of the number of bits currently - set in DEV_FD_LIST. TOTFDS is a count of the highest possible number - of open files. */ -static char *dev_fd_list = (char *)NULL; -static int nfds; -static int totfds; /* The highest possible number of open files. */ - -void -clear_fifo (i) - int i; -{ - if (dev_fd_list[i]) - { - dev_fd_list[i] = 0; - nfds--; - } -} - -void -clear_fifo_list () -{ - register int i; + int i; if (nfds == 0) - return; - - for (i = 0; nfds && i < totfds; i++) - clear_fifo (i); - - nfds = 0; -} - -char * -copy_fifo_list (sizep) - int *sizep; -{ - char *ret; - - if (nfds == 0 || totfds == 0) - { - if (sizep) - *sizep = 0; - return (char *)NULL; - } - - if (sizep) - *sizep = totfds; - ret = (char *)xmalloc (totfds); - return (memcpy (ret, dev_fd_list, totfds)); -} - -static void -add_fifo_list (fd) - int fd; -{ - if (dev_fd_list == 0 || fd >= totfds) - { - int ofds; - - ofds = totfds; - totfds = getdtablesize (); - if (totfds < 0 || totfds > 256) - totfds = 256; - if (fd >= totfds) - totfds = fd + 2; - - dev_fd_list = (char *)xrealloc (dev_fd_list, totfds); - memset (dev_fd_list + ofds, '\0', totfds - ofds); - } - - dev_fd_list[fd] = 1; - nfds++; -} + return -1; -int -fifos_pending () -{ - return 0; /* used for cleanup; not needed with /dev/fd */ -} + for (i = 0; i < totfds; i++) + if (dev_fd_list[i] == pid) + return i; -int -num_fifos () -{ - return nfds; + return -1; } void -unlink_fifo (fd) - int fd; +set_procsub_status (ind, pid, status) + int ind; + pid_t pid; + int status; { - if (dev_fd_list[fd]) - { - close (fd); - dev_fd_list[fd] = 0; - nfds--; - } + if (ind >= 0 && ind < totfds) + dev_fd_list[ind] = (pid_t)-1; /* sentinel */ } +/* If we've marked the process for this procsub as dead, close the + associated file descriptor. */ void -unlink_fifo_list () +reap_procsubs () { - register int i; - - if (nfds == 0) - return; - - for (i = 0; nfds && i < totfds; i++) - unlink_fifo (i); + int i; - nfds = 0; + for (i = 0; nfds > 0 && i < totfds; i++) + if (dev_fd_list[i] == (pid_t)-1) + unlink_fifo (i); } -/* Take LIST, which is a snapshot copy of dev_fd_list from some point in - the past, and close all open fds in dev_fd_list that are not marked - as open in LIST. If LIST is NULL, close everything in dev_fd_list. - LSIZE is the number of elements in LIST, in case it's larger than - totfds (size of dev_fd_list). */ void -close_new_fifos (list, lsize) - char *list; - int lsize; +wait_procsubs () { - int i; + int i, r; - if (list == 0) + for (i = 0; nfds > 0 && i < totfds; i++) { - unlink_fifo_list (); - return; + if (dev_fd_list[i] != (pid_t)-1 && dev_fd_list[i] > 0) + { + r = wait_for (dev_fd_list[i]); + dev_fd_list[i] = (pid_t)-1; + } } - - for (i = 0; i < lsize; i++) - if (list[i] == 0 && i < totfds && dev_fd_list[i]) - unlink_fifo (i); - - for (i = lsize; i < totfds; i++) - unlink_fifo (i); } #if defined (NOTDEF) @@ -5727,7 +5713,7 @@ process_substitute (string, open_for_read_in_child) int open_for_read_in_child; { char *pathname; - int fd, result; + int fd, result, rc, function_value; pid_t old_pid, pid; #if defined (HAVE_DEV_FD) int parent_pipe_fd, child_pipe_fd; @@ -5785,6 +5771,10 @@ process_substitute (string, open_for_read_in_child) setup_async_signals (); subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB; + /* We don't inherit the verbose option for command substitutions now, so + let's try it for process substitutions. */ + change_flag ('v', FLAG_OFF); + /* if we're expanding a redirection, we shouldn't have access to the temporary environment, but commands in the subshell should have access to their own temporary environment. */ @@ -5809,6 +5799,9 @@ process_substitute (string, open_for_read_in_child) close (parent_pipe_fd); close (child_pipe_fd); #endif /* HAVE_DEV_FD */ +#if defined (JOB_CONTROL) + restore_pipeline (1); +#endif return ((char *)NULL); } @@ -5820,7 +5813,9 @@ process_substitute (string, open_for_read_in_child) last_procsub_child = restore_pipeline (0); #endif -#if !defined (HAVE_DEV_FD) +#if defined (HAVE_DEV_FD) + dev_fd_list[parent_pipe_fd] = pid; +#else fifo_list[nfifo-1].proc = pid; #endif @@ -5908,18 +5903,41 @@ process_substitute (string, open_for_read_in_child) remove_quoted_escapes (string); - subshell_level++; - result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); - subshell_level--; + /* Give process substitution a place to jump back to on failure, + so we don't go back up to main (). */ + result = setjmp_nosigs (top_level); + + /* If we're running a process substitution inside a shell function, + trap `return' so we don't return from the function in the subshell + and go off to never-never land. */ + if (result == 0 && return_catch_flag) + function_value = setjmp_nosigs (return_catch); + else + function_value = 0; + + if (result == ERREXIT) + rc = last_command_exit_value; + else if (result == EXITPROG) + rc = last_command_exit_value; + else if (result) + rc = EXECUTION_FAILURE; + else if (function_value) + rc = return_catch_value; + else + { + subshell_level++; + rc = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); + /* leave subshell level intact for any exit trap */ + } #if !defined (HAVE_DEV_FD) /* Make sure we close the named pipe in the child before we exit. */ close (open_for_read_in_child ? 0 : 1); #endif /* !HAVE_DEV_FD */ - last_command_exit_value = result; - result = run_exit_trap (); - exit (result); + last_command_exit_value = rc; + rc = run_exit_trap (); + exit (rc); /*NOTREACHED*/ } #endif /* PROCESS_SUBSTITUTION */ @@ -5931,20 +5949,21 @@ process_substitute (string, open_for_read_in_child) /***********************************/ static char * -read_comsub (fd, quoted, rflag) - int fd, quoted; +read_comsub (fd, quoted, flags, rflag) + int fd, quoted, flags; int *rflag; { - char *istring, buf[128], *bufp, *s; - int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul; + char *istring, buf[128], *bufp; + int istring_index, c, tflag, skip_ctlesc, skip_ctlnul; + size_t istring_size; ssize_t bufn; int nullbyte; istring = (char *)NULL; istring_index = istring_size = bufn = tflag = 0; - for (skip_ctlesc = skip_ctlnul = 0, s = ifs_value; s && *s; s++) - skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; + skip_ctlesc = ifs_cmap[CTLESC]; + skip_ctlnul = ifs_cmap[CTLNUL]; nullbyte = 0; @@ -5981,6 +6000,8 @@ read_comsub (fd, quoted, rflag) /* This is essentially quote_string inline */ if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */) istring[istring_index++] = CTLESC; + else if ((flags & PF_ASSIGNRHS) && skip_ctlesc && c == CTLESC) + istring[istring_index++] = CTLESC; /* Escape CTLESC and CTLNUL in the output to protect those characters from the rest of the word expansions (word splitting and globbing.) This is essentially quote_escapes inline. */ @@ -6047,9 +6068,10 @@ read_comsub (fd, quoted, rflag) /* Perform command substitution on STRING. This returns a WORD_DESC * with the contained string possibly quoted. */ WORD_DESC * -command_substitute (string, quoted) +command_substitute (string, quoted, flags) char *string; int quoted; + int flags; { pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid; char *istring, *s; @@ -6091,6 +6113,8 @@ command_substitute (string, quoted) /* Flags to pass to parse_and_execute() */ pflags = (interactive && sourcelevel == 0) ? SEVAL_RESETLINE : 0; + old_pid = last_made_pid; + /* Pipe the output of executing STRING into the current shell. */ if (pipe (fildes) < 0) { @@ -6098,7 +6122,6 @@ command_substitute (string, quoted) goto error_exit; } - old_pid = last_made_pid; #if defined (JOB_CONTROL) old_pipeline_pgrp = pipeline_pgrp; /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline. */ @@ -6221,6 +6244,8 @@ command_substitute (string, quoted) remove_quoted_escapes (string); startup_state = 2; /* see if we can avoid a fork */ + parse_and_execute_level = 0; + /* Give command substitution a place to jump back to on failure, so we don't go back up to main (). */ result = setjmp_nosigs (top_level); @@ -6245,7 +6270,7 @@ command_substitute (string, quoted) { subshell_level++; rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST); - subshell_level--; + /* leave subshell level intact for any exit trap */ } last_command_exit_value = rc; @@ -6264,7 +6289,7 @@ command_substitute (string, quoted) close (fildes[1]); tflag = 0; - istring = read_comsub (fildes[0], quoted, &tflag); + istring = read_comsub (fildes[0], quoted, flags, &tflag); close (fildes[0]); @@ -6323,7 +6348,7 @@ array_length_reference (s) HASH_TABLE *h; SHELL_VAR *var; - var = array_variable_part (s, &t, &len); + var = array_variable_part (s, 0, &t, &len); /* If unbound variables should generate an error, report one and return failure. */ @@ -6346,7 +6371,7 @@ array_length_reference (s) array = array_p (var) ? array_cell (var) : (ARRAY *)NULL; h = assoc_p (var) ? assoc_cell (var) : (HASH_TABLE *)NULL; - if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']') + if (ALL_ELEMENT_SUB (t[0]) && t[1] == RBRACK) { if (assoc_p (var)) return (h ? assoc_num_elements (h) : 0); @@ -6360,7 +6385,7 @@ array_length_reference (s) { t[len - 1] = '\0'; akey = expand_assignment_string_to_string (t, 0); /* [ */ - t[len - 1] = ']'; + t[len - 1] = RBRACK; if (akey == 0 || *akey == 0) { err_badarraysub (t); @@ -6372,7 +6397,7 @@ array_length_reference (s) } else { - ind = array_expand_index (var, t, len); + ind = array_expand_index (var, t, len, 0); /* negative subscripts to indexed arrays count back from end */ if (var && array_p (var) && ind < 0) ind = array_max_index (array_cell (var)) + 1 + ind; @@ -6448,18 +6473,18 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) #if defined (ARRAY_VARS) else if (valid_array_reference (name, 0)) { - temp1 = mbschr (name, '['); - if (temp1 && temp1[1] == '@' && temp1[2] == ']') + temp1 = mbschr (name, LBRACK); + if (temp1 && temp1[1] == '@' && temp1[2] == RBRACK) { if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) *quoted_dollar_atp = 1; if (contains_dollar_at) *contains_dollar_at = 1; return 1; - } /* [ */ + } /* ${array[*]}, when unquoted, should be treated like ${array[@]}, which should result in separate words even when IFS is unset. */ - if (temp1 && temp1[1] == '*' && temp1[2] == ']' && quoted == 0) + if (temp1 && temp1[1] == '*' && temp1[2] == RBRACK && quoted == 0) { if (contains_dollar_at) *contains_dollar_at = 1; @@ -6471,7 +6496,7 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) } /* Parameter expand NAME, and return a new string which is the expansion, - or NULL if there was no expansion. + or NULL if there was no expansion. NAME is as given in ${NAMEcWORD}. VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that NAME was found inside of a double-quoted expression. */ @@ -6522,10 +6547,11 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) else if (valid_array_reference (name, 0)) { expand_arrayref: + var = array_variable_part (name, 0, &tt, (int *)0); + /* These are the cases where word splitting will not be performed */ if (pflags & PF_ASSIGNRHS) { - var = array_variable_part (name, &tt, (int *)0); - if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == RBRACK) { /* Only treat as double quoted if array variable */ if (var && (array_p (var) || assoc_p (var))) @@ -6537,6 +6563,27 @@ expand_arrayref: else temp = array_value (name, quoted, 0, &atype, &ind); } + /* Posix interp 888 */ + else if (pflags & PF_NOSPLIT2) + { + /* Special cases, then general case, for each of A[@], A[*], A[n] */ +#if defined (HANDLE_MULTIBYTE) + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + else if (tt[0] == '@' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); + else if (tt[0] == '*' && tt[1] == RBRACK) + temp = array_value (name, quoted, 0, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + } + else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null) + temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind); else temp = array_value (name, quoted, 0, &atype, &ind); if (atype == 0 && temp) @@ -6617,6 +6664,7 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) char *temp, *t; WORD_DESC *w; SHELL_VAR *v; + int pflags, oldex; if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name, 0)) && nameref_p (v) && (t = nameref_cell (v)) && *t) @@ -6625,12 +6673,23 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) /* If var_is_special == 0, and name is not an array reference, this does more expansion than necessary. It should really look up the variable's value and not try to expand it. */ - w = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND, 0); + pflags = PF_IGNUNBOUND; + /* Note that we're not going to be doing word splitting here */ + if (var_is_special) + { + pflags |= PF_ASSIGNRHS; /* suppresses word splitting */ + oldex = expand_no_split_dollar_star; + expand_no_split_dollar_star = 1; + } + w = parameter_brace_expand_word (name, var_is_special, quoted, pflags, 0); + if (var_is_special) + expand_no_split_dollar_star = oldex; + t = w->word; /* Have to dequote here if necessary */ if (t) { - temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + temp = ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || var_is_special) ? dequote_string (t) : dequote_escapes (t); free (t); @@ -6649,7 +6708,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c int var_is_special, quoted; int *quoted_dollar_atp, *contains_dollar_at; { - char *temp, *t; + char *t; WORD_DESC *w; SHELL_VAR *v; @@ -6669,15 +6728,47 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c } } + /* An indirect reference to a positional parameter or a special parameter + is ok. Indirect references to array references, as explained above, are + ok (currently). Only references to unset variables are errors at this + point. */ + if (legal_identifier (name) && v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + t = parameter_brace_find_indir (name, var_is_special, quoted, 0); chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at); + +#if defined (ARRAY_VARS) + /* Array references to unset variables are also an error */ + if (t == 0 && valid_array_reference (name, 0)) + { + v = array_variable_part (name, 0, (char **)0, (int *)0); + if (v == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + else + return (WORD_DESC *)NULL; + } +#endif + if (t == 0) return (WORD_DESC *)NULL; if (valid_brace_expansion_word (t, SPECIAL_VAR (t, 0)) == 0) { - report_error (_("%s: bad substitution"), t); + report_error (_("%s: invalid variable name"), t); free (t); w = alloc_word_desc (); w->word = &expand_param_error; @@ -6696,9 +6787,9 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c "-", "+", or "=". QUOTED is true if the entire brace expression occurs between double quotes. */ static WORD_DESC * -parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdollarat) +parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdollarat) char *name, *value; - int c, quoted, pflags, *qdollaratp, *hasdollarat; + int op, quoted, pflags, *qdollaratp, *hasdollarat; { WORD_DESC *w; WORD_LIST *l; @@ -6719,8 +6810,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla w = alloc_word_desc (); l_hasdollat = 0; - /* XXX was 0 not quoted */ - l = *temp ? expand_string_for_rhs (temp, quoted, &l_hasdollat, (int *)NULL) + l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL) : (WORD_LIST *)0; if (hasdollarat) *hasdollarat = l_hasdollat || (l && l->next); @@ -6751,7 +6841,7 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla w->flags |= W_SPLITSPACE; } else - temp = (l_hasdollat || l->next) ? string_list_dollar_star (l) : string_list (l); + temp = (l_hasdollat || l->next) ? string_list_dollar_star (l, quoted, 0) : string_list (l); /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the @@ -6792,16 +6882,15 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla else temp = (char *)NULL; - if (c == '-' || c == '+') + if (op == '-' || op == '+') { w->word = temp; return w; } - /* c == '=' */ - t = temp ? savestring (temp) : savestring (""); - t1 = dequote_string (t); - free (t); + /* op == '=' */ + t1 = temp ? dequote_string (temp) : savestring (""); + free (temp); /* bash-4.4/5.0 */ vname = name; @@ -6838,9 +6927,13 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla free (vname); /* From Posix group discussion Feb-March 2010. Issue 7 0000221 */ - free (temp); - w->word = t1; + /* If we are double-quoted or if we are not going to be performing word + splitting, we want to quote the value we return appropriately, like + the other expansions this function handles. */ + w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1); + free (t1); + return w; } @@ -6849,8 +6942,9 @@ parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdolla used as the error message to print, otherwise a standard message is printed. */ static void -parameter_brace_expand_error (name, value) +parameter_brace_expand_error (name, value, check_null) char *name, *value; + int check_null; { WORD_LIST *l; char *temp; @@ -6864,6 +6958,8 @@ parameter_brace_expand_error (name, value) FREE (temp); dispose_words (l); } + else if (check_null == 0) + report_error (_("%s: parameter not set"), name); else report_error (_("%s: parameter null or not set"), name); @@ -7030,7 +7126,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) t = (char *)0; temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES); - *e1p = evalexp (temp1, &expok); + *e1p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ free (temp1); if (expok == 0) return (0); @@ -7088,15 +7184,17 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p) temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); free (temp2); t[-1] = ':'; - *e2p = evalexp (temp1, &expok); + *e2p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */ free (temp1); if (expok == 0) return (0); + + /* Should we allow positional parameter length < 0 to count backwards + from end of positional parameters? */ #if 1 if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0) #else - /* bash-4.3: allow positional parameter length < 0 to count backwards - from end of positional parameters */ + /* XXX - bash-5.0 */ if (vtype == VT_ARRAYVAR && *e2p < 0) #endif { @@ -7151,7 +7249,6 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) { int vtype, want_indir; char *temp, *vname; - WORD_DESC *wd; SHELL_VAR *v; arrayind_t lind; @@ -7164,91 +7261,390 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) else vname = varname; - if (vname == 0) + if (vname == 0) + { + vtype = VT_VARIABLE; + *varp = (SHELL_VAR *)NULL; + *valp = (char *)NULL; + return (vtype); + } + + /* This sets vtype to VT_VARIABLE or VT_POSPARMS */ + vtype = STR_DOLLAR_AT_STAR (vname); + if (vtype == VT_POSPARMS && vname[0] == '*') + vtype |= VT_STARSUB; + *varp = (SHELL_VAR *)NULL; + +#if defined (ARRAY_VARS) + if (valid_array_reference (vname, 0)) + { + v = array_variable_part (vname, 0, &temp, (int *)0); + /* If we want to signal array_value to use an already-computed index, + set LIND to that index */ + lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0; + if (v && invisible_p (v)) + { + vtype = VT_ARRAYMEMBER; + *varp = (SHELL_VAR *)NULL; + *valp = (char *)NULL; + } + if (v && (array_p (v) || assoc_p (v))) + { + if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK) + { + /* Callers have to differentiate between indexed and associative */ + vtype = VT_ARRAYVAR; + if (temp[0] == '*') + vtype |= VT_STARSUB; + *valp = array_p (v) ? (char *)array_cell (v) : (char *)assoc_cell (v); + } + else + { + vtype = VT_ARRAYMEMBER; + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + } + *varp = v; + } + else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == RBRACK)) + { + vtype = VT_VARIABLE; + *varp = v; + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } + else + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + } + } + else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) + { + vtype = VT_ARRAYMEMBER; + *varp = v; + *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); + } + else +#endif + { + if (value && vtype == VT_VARIABLE) + { + *varp = find_variable (vname); + if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) + *valp = dequote_string (value); + else + *valp = dequote_escapes (value); + } + else + *valp = value; + } + + if (want_indir) + free (vname); + + return vtype; +} + +/***********************************************************/ +/* */ +/* Functions to perform transformations on variable values */ +/* */ +/***********************************************************/ + +static char * +string_var_assignment (v, s) + SHELL_VAR *v; + char *s; +{ + char flags[MAX_ATTRIBUTES], *ret, *val; + int i; + + val = sh_quote_reusable (s, 0); + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); + if (i > 0) + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + else + sprintf (ret, "%s=%s", v->name, val); + free (val); + return ret; +} + +#if defined (ARRAY_VARS) +static char * +array_var_assignment (v, itype, quoted) + SHELL_VAR *v; + int itype, quoted; +{ + char *ret, *val, flags[MAX_ATTRIBUTES]; + int i; + + if (v == 0) + return (char *)NULL; + val = array_p (v) ? array_to_assign (array_cell (v), 0) + : assoc_to_assign (assoc_cell (v), 0); + if (val == 0) + { + val = (char *)xmalloc (3); + val[0] = LPAREN; + val[1] = RPAREN; + val[2] = 0; + } + else + { + ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); + free (val); + val = ret; + } + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16); + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + free (val); + return ret; +} +#endif + +static char * +pos_params_assignment (list, itype, quoted) + WORD_LIST *list; + int itype; + int quoted; +{ + char *temp, *ret; + + /* first, we transform the list to quote each word. */ + temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); + ret = (char *)xmalloc (strlen (temp) + 8); + strcpy (ret, "set -- "); + strcpy (ret + 7, temp); + free (temp); + return ret; +} + +static char * +string_transform (xc, v, s) + int xc; + SHELL_VAR *v; + char *s; +{ + char *ret, flags[MAX_ATTRIBUTES], *t; + int i; + + if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0)) + return (char *)NULL; + + switch (xc) + { + /* Transformations that interrogate the variable */ + case 'a': + i = var_attribute_string (v, 0, flags); + ret = (i > 0) ? savestring (flags) : (char *)NULL; + break; + case 'A': + ret = string_var_assignment (v, s); + break; + /* Transformations that modify the variable's value */ + case 'E': + t = ansiexpand (s, 0, strlen (s), (int *)0); + ret = dequote_escapes (t); + free (t); + break; + case 'P': + ret = decode_prompt_string (s); + break; + case 'Q': + ret = sh_quote_reusable (s, 0); + break; + default: + ret = (char *)NULL; + break; + } + return ret; +} + +static char * +list_transform (xc, v, list, itype, quoted) + int xc; + SHELL_VAR *v; + WORD_LIST *list; + int itype, quoted; +{ + WORD_LIST *new, *l; + WORD_DESC *w; + char *tword; + int qflags; + + for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + { + tword = string_transform (xc, v, l->word->word); + w = alloc_word_desc (); + w->word = tword ? tword : savestring (""); /* XXX */ + new = make_word_list (w, new); + } + l = REVERSE_LIST (new, WORD_LIST *); + + qflags = quoted; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (itype == '*' && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + + tword = string_list_pos_params (itype, l, qflags); + dispose_words (l); + + return (tword); +} + +static char * +parameter_list_transform (xc, itype, quoted) + int xc; + int itype; + int quoted; +{ + char *ret; + WORD_LIST *list; + + list = list_rest_of_args (); + if (list == 0) + return ((char *)NULL); + if (xc == 'A') + return (pos_params_assignment (list, itype, quoted)); + ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); + dispose_words (list); + return (ret); +} + +#if defined (ARRAY_VARS) +static char * +array_transform (xc, var, varname, quoted) + int xc; + SHELL_VAR *var; + char *varname; /* so we can figure out how it's indexed */ + int quoted; +{ + ARRAY *a; + HASH_TABLE *h; + int itype; + char *ret; + WORD_LIST *list; + SHELL_VAR *v; + + /* compute itype from varname here */ + v = array_variable_part (varname, 0, &ret, 0); + + /* XXX */ + if (v && invisible_p (v)) + return ((char *)NULL); + + itype = ret[0]; + + if (xc == 'A') + return (array_var_assignment (v, itype, quoted)); + + a = (v && array_p (v)) ? array_cell (v) : 0; + h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); + if (list == 0) + return ((char *)NULL); + ret = list_transform (xc, v, list, itype, quoted); + dispose_words (list); + + return ret; +} +#endif /* ARRAY_VARS */ + +static char * +parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags) + char *varname, *value; + int ind; + char *xform; + int rtype, quoted, pflags, flags; +{ + int vtype, xc; + char *temp1, *val, *oname; + SHELL_VAR *v; + + xc = xform[0]; + if (value == 0 && xc != 'A' && xc != 'a') + return ((char *)NULL); + + oname = this_command_name; + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) { - vtype = VT_VARIABLE; - *varp = (SHELL_VAR *)NULL; - *valp = (char *)NULL; - return (vtype); + this_command_name = oname; + return ((char *)NULL); } - /* This sets vtype to VT_VARIABLE or VT_POSPARMS */ - vtype = STR_DOLLAR_AT_STAR (vname); - if (vtype == VT_POSPARMS && vname[0] == '*') - vtype |= VT_STARSUB; - *varp = (SHELL_VAR *)NULL; + /* check for valid values of xc */ + switch (xc) + { + case 'a': /* expand to a string with just attributes */ + case 'A': /* expand as an assignment statement with attributes */ + case 'E': /* expand like $'...' */ + case 'P': /* expand like prompt string */ + case 'Q': /* quote reusably */ + break; + default: + this_command_name = oname; + return &expand_param_error; + } -#if defined (ARRAY_VARS) - if (valid_array_reference (vname, 0)) + temp1 = (char *)NULL; /* shut up gcc */ + switch (vtype & ~VT_STARSUB) { - v = array_variable_part (vname, &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; - if (v && invisible_p (v)) + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp1 = string_transform (xc, v, val); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp1) { - vtype = VT_ARRAYMEMBER; - *varp = (SHELL_VAR *)NULL; - *valp = (char *)NULL; - } - if (v && (array_p (v) || assoc_p (v))) - { /* [ */ - if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']') - { - /* Callers have to differentiate between indexed and associative */ - vtype = VT_ARRAYVAR; - if (temp[0] == '*') - vtype |= VT_STARSUB; - *valp = array_p (v) ? (char *)array_cell (v) : (char *)assoc_cell (v); - } - else - { - vtype = VT_ARRAYMEMBER; - *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); - } - *varp = v; + val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + ? quote_string (temp1) + : quote_escapes (temp1); + free (temp1); + temp1 = val; } - else if (v && (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')) + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp1 = array_transform (xc, v, varname, quoted); + if (temp1 && quoted == 0 && ifs_is_null) { - vtype = VT_VARIABLE; - *varp = v; - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - *valp = dequote_string (value); - else - *valp = dequote_escapes (value); + /* Posix interp 888 */ } - else + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) { - vtype = VT_ARRAYMEMBER; - *varp = v; - *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind); + val = quote_escapes (temp1); + free (temp1); + temp1 = val; } - } - else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v))) - { - vtype = VT_ARRAYMEMBER; - *varp = v; - *valp = assoc_p (v) ? assoc_reference (assoc_cell (v), "0") : array_reference (array_cell (v), 0); - } - else + break; #endif - { - if (value && vtype == VT_VARIABLE) + case VT_POSPARMS: + temp1 = parameter_list_transform (xc, varname[0], quoted); + if (temp1 && quoted == 0 && ifs_is_null) { - *varp = find_variable (vname); - if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - *valp = dequote_string (value); - else - *valp = dequote_escapes (value); + /* Posix interp 888 */ } - else - *valp = value; + else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; } - if (want_indir) - free (vname); - - return vtype; + this_command_name = oname; + return temp1; } /******************************************************/ @@ -7293,14 +7689,14 @@ mb_substring (string, s, e) VARNAME. If VARNAME is an array variable, use the array elements. */ static char * -parameter_brace_substring (varname, value, ind, substr, quoted, flags) +parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) char *varname, *value; int ind; char *substr; - int quoted, flags; + int quoted, pflags, flags; { intmax_t e1, e2; - int vtype, r, starsub; + int vtype, r, starsub, qflags; char *temp, *val, *tt, *oname; SHELL_VAR *v; @@ -7349,8 +7745,16 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) FREE (tt); break; case VT_POSPARMS: - tt = pos_params (varname, e1, e2, quoted); - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) + qflags = quoted; + tt = pos_params (varname, e1, e2, qflags); + /* string_list_dollar_at will quote the list if ifs_is_null != 0 */ + /* We want to leave this alone in every case where pos_params/ + string_list_pos_params quotes the list members */ + if (tt && quoted == 0 && ifs_is_null) + { + temp = tt; /* Posix interp 888 */ + } + else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) { temp = tt ? quote_escapes (tt) : (char *)NULL; FREE (tt); @@ -7386,7 +7790,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) /* */ /****************************************************************/ -#if 0 /* Unused */ +#ifdef INCLUDE_UNUSED static int shouldexp_replacement (s) char *s; @@ -7563,8 +7967,12 @@ pos_params_pat_subst (string, pat, rep, mflags) pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; - ret = string_list_pos_params (pchar, save, qflags); + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && expand_no_split_dollar_star && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + ret = string_list_pos_params (pchar, save, qflags); dispose_words (save); return (ret); @@ -7582,17 +7990,21 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) int quoted, pflags, flags; { int vtype, mflags, starsub, delim; - char *val, *temp, *pat, *rep, *p, *lpatsub, *tt; + char *val, *temp, *pat, *rep, *p, *lpatsub, *tt, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); - this_command_name = varname; + oname = this_command_name; + this_command_name = varname; /* error messages */ vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -7697,8 +8109,18 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) } break; case VT_POSPARMS: + /* This does the right thing for the case where we are not performing + word splitting. MATCH_STARSUB restricts it to ${* /foo/bar}, and + pos_params_pat_subst/string_list_pos_params will do the right thing + in turn for the case where ifs_is_null. Posix interp 888 */ + if ((pflags & PF_NOSPLIT2) && (mflags & MATCH_STARSUB)) + mflags |= MATCH_ASSIGNRHS; temp = pos_params_pat_subst (val, p, rep, mflags); - if (temp && (mflags & MATCH_QUOTED) == 0) + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) { tt = quote_escapes (temp); free (temp); @@ -7707,6 +8129,12 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) break; #if defined (ARRAY_VARS) case VT_ARRAYVAR: + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + temp = assoc_p (v) ? assoc_patsub (assoc_cell (v), p, rep, mflags) : array_patsub (array_cell (v), p, rep, mflags); /* Don't call quote_escapes anymore; array_patsub calls @@ -7720,6 +8148,8 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) FREE (rep); free (lpatsub); + this_command_name = oname; + return temp; } @@ -7758,6 +8188,11 @@ pos_params_modcase (string, pat, modop, mflags) pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@'; qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0; + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how $* will be expanded. */ + if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */ + ret = string_list_pos_params (pchar, save, qflags); dispose_words (save); @@ -7769,24 +8204,28 @@ pos_params_modcase (string, pat, modop, mflags) to perform. QUOTED is a flags word containing the type of quoting currently in effect. */ static char * -parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) +parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags) char *varname, *value; int ind, modspec; char *patspec; - int quoted, flags; + int quoted, pflags, flags; { int vtype, starsub, modop, mflags, x; - char *val, *temp, *pat, *p, *lpat, *tt; + char *val, *temp, *pat, *p, *lpat, *tt, *oname; SHELL_VAR *v; if (value == 0) return ((char *)NULL); + oname = this_command_name; this_command_name = varname; vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); if (vtype == -1) - return ((char *)NULL); + { + this_command_name = oname; + return ((char *)NULL); + } starsub = vtype & VT_STARSUB; vtype &= ~VT_STARSUB; @@ -7797,6 +8236,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) mflags |= MATCH_QUOTED; if (starsub) mflags |= MATCH_STARSUB; + if (pflags & PF_ASSIGNRHS) + mflags |= MATCH_ASSIGNRHS; p = patspec; if (modspec == '^') @@ -7820,7 +8261,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) lpat = p ? savestring (p) : 0; /* Perform the same expansions on the pattern as performed by the - pattern removal expansions. FOR LATER */ + pattern removal expansions. */ pat = lpat ? getpattern (lpat, quoted, 1) : 0; /* OK, now we do the case modification. */ @@ -7841,7 +8282,11 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) case VT_POSPARMS: temp = pos_params_modcase (val, pat, modop, mflags); - if (temp && (mflags & MATCH_QUOTED) == 0) + if (temp && quoted == 0 && ifs_is_null) + { + /* Posix interp 888 */ + } + else if (temp && (mflags & MATCH_QUOTED) == 0) { tt = quote_escapes (temp); free (temp); @@ -7851,6 +8296,12 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) #if defined (ARRAY_VARS) case VT_ARRAYVAR: + /* If we are expanding in a context where word splitting will not be + performed, treat as quoted. This changes how ${A[*]} will be + expanded to make it identical to $*. */ + if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) + mflags |= MATCH_QUOTED; /* Posix interp 888 */ + temp = assoc_p (v) ? assoc_modcase (assoc_cell (v), pat, modop, mflags) : array_modcase (array_cell (v), pat, modop, mflags); /* Don't call quote_escapes; array_modcase calls array_quote_escapes @@ -7863,6 +8314,8 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags) FREE (pat); free (lpat); + this_command_name = oname; + return temp; } @@ -7970,7 +8423,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta name[1] = '\0'; t_index++; } - else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == '}') + else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == RBRACE) { name = (char *)xrealloc (name, t_index - sindex + 2); name[t_index - sindex] = '@'; @@ -8063,7 +8516,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1]) || VALID_INDIR_PARAM (name[1])); - /* Determine the value of this variable. */ + /* Determine the value of this variable whose name is NAME. */ /* Check for special variables, directly referenced. */ if (SPECIAL_VAR (name, want_indir)) @@ -8130,7 +8583,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta x = all_variables_matching_prefix (temp1); xlist = strvec_to_word_list (x, 0, 0); if (string[sindex - 2] == '*') - temp = string_list_dollar_star (xlist); + temp = string_list_dollar_star (xlist, quoted, 0); else { temp = string_list_dollar_at (xlist, quoted, 0); @@ -8155,16 +8608,16 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } #if defined (ARRAY_VARS) - /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */ + /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ if (want_indir && string[sindex - 1] == RBRACE && - string[sindex - 2] == ']' && valid_array_reference (name+1, 0)) + string[sindex - 2] == RBRACK && valid_array_reference (name+1, 0)) { char *x, *x1; temp1 = savestring (name + 1); - x = array_variable_name (temp1, &x1, (int *)0); /* [ */ + x = array_variable_name (temp1, 0, &x1, (int *)0); FREE (x); - if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']') + if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == RBRACK) { temp = array_keys (temp1, quoted); /* handles assoc vars too */ if (x1[0] == '@') @@ -8207,6 +8660,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta temp = (char *)NULL; goto bad_substitution; } + /* Turn off the W_ARRAYIND flag because there is no way for this function to return the index we're supposed to be using. */ if (tdesc && tdesc->flags) @@ -8240,13 +8694,18 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta qflags = quoted; /* If in a context where word splitting will not take place, treat as if double-quoted. Has effects with $* and ${array[*]} */ + if (pflags & PF_ASSIGNRHS) qflags |= Q_DOUBLE_QUOTES; - chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at); /* We duplicate a little code here */ - t = mbschr (name, '['); - if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == ']') - all_element_arrayref = 1; + t = mbschr (name, LBRACK); + if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == RBRACK) + { + all_element_arrayref = 1; + if (expand_no_split_dollar_star && t[1] == '*') /* XXX */ + qflags |= Q_DOUBLE_QUOTES; + } + chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at); } #endif @@ -8290,15 +8749,15 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* If this is a substring spec, process it and add the result. */ if (want_substring) { - temp1 = parameter_brace_substring (name, temp, ind, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); + temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8310,19 +8769,24 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } else if (want_patsub) { temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8330,20 +8794,25 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } #if defined (CASEMOD_EXPANSIONS) else if (want_casemod) { - temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); - FREE (name); + temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (value); FREE (temp); - if (temp1 == &expand_param_error) - return (&expand_wdesc_error); - else if (temp1 == &expand_param_fatal) - return (&expand_wdesc_fatal); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + FREE (name); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } ret = alloc_word_desc (); ret->word = temp1; @@ -8351,6 +8820,11 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta (quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + FREE (name); return ret; } #endif @@ -8375,13 +8849,14 @@ bad_substitution: break; case '@': - temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); - free (name); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) { - last_command_exit_value = EXECUTION_FAILURE; + free (name); + last_command_exit_value = EXECUTION_FAILURE; report_error (_("%s: bad substitution"), string ? string : "??"); return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); } @@ -8390,6 +8865,11 @@ bad_substitution: ret->word = temp1; if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); return ret; case '#': /* ${param#[#]pattern} */ @@ -8402,12 +8882,16 @@ bad_substitution: temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); free (temp); free (value); - free (name); ret = alloc_word_desc (); ret->word = temp1; if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + /* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */ + else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null) + ret->flags |= W_SPLITSPACE; /* Posix interp 888 */ + + free (name); return ret; case '-': @@ -8468,7 +8952,7 @@ bad_substitution: } else if (c == '?') { - parameter_brace_expand_error (name, value); + parameter_brace_expand_error (name, value, check_nullness); return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal); } else if (c != '+') @@ -8649,7 +9133,7 @@ param_expand (string, sindex, quoted, expanded_something, quote the whole string, including the separators. If IFS is unset, the parameters are separated by ' '; if $IFS is null, the parameters are concatenated. */ - temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list) : string_list (list); + temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list, quoted, 0) : string_list (list); if (temp) { temp1 = (quoted & Q_DOUBLE_QUOTES) ? quote_string (temp) : temp; @@ -8667,15 +9151,39 @@ param_expand (string, sindex, quoted, expanded_something, an assignment statement. In that case, we don't separate the arguments at all. Otherwise, if the $* is not quoted it is identical to $@ */ + if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS unset */ + temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags); + tflag |= W_SPLITSPACE; + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_null && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to '' */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_escapes (temp1) : temp1; + FREE (temp1); + } + else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set && ifs_is_null == 0 && (pflags & PF_ASSIGNRHS)) + { + /* Posix interp 888: RHS of assignment, IFS set to non-null value */ + temp1 = string_list_dollar_star (list, quoted, pflags); + temp = temp1 ? quote_string (temp1) : temp1; + FREE (temp1); + } + /* XXX - should we check ifs_is_set here as well? */ # if defined (HANDLE_MULTIBYTE) - if (expand_no_split_dollar_star && ifs_firstc[0] == 0) + else if (expand_no_split_dollar_star && ifs_firstc[0] == 0) # else - if (expand_no_split_dollar_star && ifs_firstc == 0) + else if (expand_no_split_dollar_star && ifs_firstc == 0) # endif - temp = string_list_dollar_star (list); + /* Posix interp 888: not RHS, no splitting, IFS set to '' */ + temp = string_list_dollar_star (list, quoted, 0); else { temp = string_list_dollar_at (list, quoted, 0); + /* Set W_SPLITSPACE to make sure the individual positional + parameters are split into separate arguments */ if (quoted == 0 && (ifs_is_set == 0 || ifs_is_null)) tflag |= W_SPLITSPACE; /* If we're not quoted but we still don't want word splitting, make @@ -8741,10 +9249,32 @@ param_expand (string, sindex, quoted, expanded_something, parameters no matter what IFS is set to. */ /* XXX - what to do when in a context where word splitting is not performed? Even when IFS is not the default, posix seems to imply - that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 - here. */ - /* XXX - bash-4.4/bash-5.0 passing PFLAGS */ - temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted, pflags); + that we behave like unquoted $* ? See below for how we use + PF_NOSPLIT2 here. */ + + /* These are the cases where word splitting will not be performed. */ + if (pflags & PF_ASSIGNRHS) + temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags); + /* This needs to match what expand_word_internal does with non-quoted $@ + does with separating with spaces. Passing Q_DOUBLE_QUOTES means that + the characters in LIST will be quoted, and PF_ASSIGNRHS ensures that + they will separated by spaces. After doing this, we need the special + handling for PF_NOSPLIT2 in expand_word_internal to remove the CTLESC + quotes. */ + else if (pflags & PF_NOSPLIT2) + { +#if defined (HANDLE_MULTIBYTE) + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc[0] != ' ') +#else + if (quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ') +#endif + /* Posix interp 888 */ + temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags); + else + temp = string_list_dollar_at (list, quoted, pflags); + } + else + temp = string_list_dollar_at (list, quoted, pflags); tflag |= W_DOLLARAT; dispose_words (list); @@ -8826,7 +9356,7 @@ arithsub: /* No error messages. */ savecmd = this_command_name; this_command_name = (char *)NULL; - number = evalexp (temp1, &expok); + number = evalexp (temp1, EXP_EXPANDED, &expok); this_command_name = savecmd; free (temp); free (temp1); @@ -8850,7 +9380,7 @@ comsub: temp1 = substring (string, *sindex, zindex+1); else { - tdesc = command_substitute (temp, quoted); + tdesc = command_substitute (temp, quoted, pflags&PF_ASSIGNRHS); temp1 = tdesc ? tdesc->word : (char *)NULL; if (tdesc) dispose_word_desc (tdesc); @@ -8861,7 +9391,7 @@ comsub: /* Do POSIX.2d9-style arithmetic substitution. This will probably go away in a future bash release. */ - case '[': + case '[': /*]*/ /* Extract the contents of this arithmetic substitution. */ t_index = zindex + 1; temp = extract_arithmetic_subst (string, &t_index); @@ -9067,8 +9597,10 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin /* State flags */ int had_quoted_null; + int has_quoted_ifs; /* did we add a quoted $IFS character here? */ int has_dollar_at, temp_has_dollar_at; int split_on_spaces; + int local_expanded; int tflag; int pflags; /* flags passed to param_expand */ int mb_cur_max; @@ -9102,6 +9634,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE); istring[istring_index = 0] = '\0'; quoted_dollar_at = had_quoted_null = has_dollar_at = 0; + has_quoted_ifs = 0; split_on_spaces = 0; quoted_state = UNQUOTED; @@ -9111,7 +9644,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin mb_cur_max = MB_CUR_MAX; /* Don't need the string length for the SADD... and COPY_ macros unless - multibyte characters are possible. */ + multibyte characters are possible, but do need it for bounds checking. */ string_size = (mb_cur_max > 1) ? strlen (string) : 1; if (contains_dollar_at) @@ -9230,12 +9763,15 @@ add_string: word->flags |= W_ASSIGNRHS; /* affects $@ */ if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) - goto add_ifs_character; + { + has_quoted_ifs++; + goto add_ifs_character; + } else goto add_character; case ':': - if (word->flags & W_NOTILDE) + if (word->flags & (W_NOTILDE|W_NOASSNTILDE)) { if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) goto add_ifs_character; @@ -9257,10 +9793,13 @@ add_string: at the start of a word or after an unquoted : or = in an assignment statement, we don't do tilde expansion. If we don't want tilde expansion when expanding words to be passed to the arithmetic - evaluator, remove the check for Q_ARITH. */ + evaluator, remove the check for Q_ARITH. Right now, the code + suppresses tilde expansion when expanding in a pure arithmetic + context, but allows it when expanding an array subscript. This is + for backwards compatibility, but I figure nobody's relying on it */ if ((word->flags & (W_NOTILDE|W_DQUOTE)) || (sindex > 0 && ((word->flags & W_ITILDE) == 0)) || - ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0))) + ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARRAYSUB) == 0))) { word->flags &= ~W_ITILDE; if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) @@ -9303,6 +9842,7 @@ add_string: case '$': if (expanded_something) *expanded_something = 1; + local_expanded = 1; temp_has_dollar_at = 0; pflags = (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0; @@ -9329,7 +9869,7 @@ add_string: *contains_dollar_at = 1; if (tword && (tword->flags & W_HASQUOTEDNULL)) - had_quoted_null = 1; + had_quoted_null = 1; /* note for later */ temp = tword ? tword->word : (char *)NULL; dispose_word_desc (tword); @@ -9369,6 +9909,7 @@ add_string: if (expanded_something) *expanded_something = 1; + local_expanded = 1; if (word->flags & W_NOCOMSUB) /* sindex + 1 because string[sindex] == '`' */ @@ -9376,7 +9917,7 @@ add_string: else { de_backslash (temp); - tword = command_substitute (temp, quoted); + tword = command_substitute (temp, quoted, 0); temp1 = tword ? tword->word : (char *)NULL; if (tword) dispose_word_desc (tword); @@ -9419,6 +9960,15 @@ add_string: SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size); } + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && c == 0) + { + RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, + DEFAULT_ARRAY_SIZE); + istring[istring_index++] = CTLESC; + istring[istring_index++] = '\\'; + istring[istring_index] = '\0'; + break; + } else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0)) { SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size); @@ -9475,7 +10025,7 @@ add_twochars: temp = (char *)NULL; - temp_has_dollar_at = 0; /* XXX */ + temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */ /* Need to get W_HASQUOTEDNULL flag through this function. */ list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL); has_dollar_at += temp_has_dollar_at; @@ -9495,13 +10045,32 @@ add_twochars: /* "$@" (a double-quoted dollar-at) expands into nothing, not even a NULL word, when there are no positional - parameters. */ + parameters. Posix interp 888 says that other parts of the + word that expand to quoted nulls result in quoted nulls, so + we can't just throw the entire word away if we have "$@" + anywhere in it. We use had_quoted_null to keep track */ if (list == 0 && temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; break; } + /* If this list comes back with a quoted null from expansion, + we have either "$x" or "$@" with $1 == ''. In either case, + we need to make sure we add a quoted null argument and + disable the special handling that "$@" gets. */ + if (list && list->word && list->next == 0 && (list->word->flags & W_HASQUOTEDNULL)) + { + /* If we already saw a quoted null, we don't need to add + another one */ + if (had_quoted_null && temp_has_dollar_at) + { + quoted_dollar_at++; + break; + } + had_quoted_null = 1; /* XXX */ + } + /* If we get "$@", we know we have expanded something, so we need to remember it for the final split on $IFS. This is a special case; it's the only case where a quoted string @@ -9513,9 +10082,6 @@ add_twochars: if (list) dequote_list (list); - if (list && list->word && (list->word->flags & W_HASQUOTEDNULL)) - had_quoted_null = 1; /* XXX */ - if (temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; @@ -9523,6 +10089,7 @@ add_twochars: *contains_dollar_at = 1; if (expanded_something) *expanded_something = 1; + local_expanded = 1; } } else @@ -9530,6 +10097,7 @@ add_twochars: /* What we have is "". This is a minor optimization. */ FREE (temp); list = (WORD_LIST *)NULL; + had_quoted_null = 1; /* note for later */ } /* The code above *might* return a list (consider the case of "$@", @@ -9600,6 +10168,7 @@ add_twochars: /* Add NULL arg. */ c = CTLNUL; sindex--; /* add_character: label increments sindex */ + had_quoted_null = 1; /* note for later */ goto add_character; } @@ -9627,9 +10196,13 @@ add_twochars: else remove_quoted_escapes (temp); /* ??? */ + if (temp == 0 && quoted_state == PARTIALLY_QUOTED) + had_quoted_null = 1; /* note for later */ + /* We do not want to add quoted nulls to strings that are only partially quoted; such nulls are discarded. See above for the - exception, which is when the string is going to be split. */ + exception, which is when the string is going to be split. + Posix interp 888 */ if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2))) continue; @@ -9650,6 +10223,8 @@ add_twochars: add_ifs_character: if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0)) { + if ((quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0) + has_quoted_ifs++; if (string[sindex]) /* from old goto dollar_add_string */ sindex++; if (c == 0) @@ -9660,6 +10235,8 @@ add_twochars: else { #if HANDLE_MULTIBYTE + /* XXX - should make sure that c is actually multibyte, + otherwise we can use the twochars branch */ if (mb_cur_max > 1) sindex--; @@ -9723,7 +10300,9 @@ finished_with_string: { istring[0] = CTLNUL; istring[1] = '\0'; - tword = make_bare_word (istring); + tword = alloc_word_desc (); + tword->word = istring; + istring = 0; /* avoid later free() */ tword->flags |= W_HASQUOTEDNULL; /* XXX */ list = make_word_list (tword, (WORD_LIST *)NULL); if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) @@ -9736,22 +10315,16 @@ finished_with_string: null arguments */ else if (quoted_state == UNQUOTED || quoted_dollar_at) list = (WORD_LIST *)NULL; -#if 0 - else - { - tword = make_bare_word (istring); - if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) - tword->flags |= W_QUOTED; - list = make_word_list (tword, (WORD_LIST *)NULL); - } -#else else list = (WORD_LIST *)NULL; -#endif } else if (word->flags & W_NOSPLIT) { - tword = make_bare_word (istring); + tword = alloc_word_desc (); + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; + istring = 0; /* avoid later free() */ if (word->flags & W_ASSIGNMENT) tword->flags |= W_ASSIGNMENT; /* XXX */ if (word->flags & W_COMPASSIGN) @@ -9764,14 +10337,11 @@ finished_with_string: tword->flags |= W_NOEXPAND; /* XXX */ if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) tword->flags |= W_QUOTED; - if (had_quoted_null && QUOTED_NULL (istring)) - tword->flags |= W_HASQUOTEDNULL; list = make_word_list (tword, (WORD_LIST *)NULL); } else { char *ifs_chars; - char *tstring; ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; @@ -9787,7 +10357,16 @@ finished_with_string: or we expanded "$@" with IFS null and we need to split the positional parameters into separate words. */ if (split_on_spaces) - list = list_string (istring, " ", 1); /* XXX quoted == 1? */ + { + /* If IFS is not set, and the word is not quoted, we want to split + the individual words on $' \t\n'. We rely on previous steps to + quote the portions of the word that should not be split */ + if (ifs_is_set == 0) + list = list_string (istring, " \t\n", 1); /* XXX quoted == 1? */ + else + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ + } + /* If we have $@ (has_dollar_at != 0) and we are in a context where we don't want to split the result (W_NOSPLIT2), and we are not quoted, we have already separated the arguments with the first character of @@ -9799,35 +10378,47 @@ finished_with_string: double-quoted $@ while expanding it. */ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) { + tword = alloc_word_desc (); /* Only split and rejoin if we have to */ if (*ifs_chars && *ifs_chars != ' ') { + /* list_string dequotes CTLESCs in the string it's passed, so we + need it to get the space separation right if space isn't the + first character in IFS (but is present) and to remove the + quoting we added back in param_expand(). */ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); - tstring = string_list (list); + /* This isn't exactly right in the case where we're expanding + the RHS of an expansion like ${var-$@} where IFS=: (for + example). The W_NOSPLIT2 means we do the separation with :; + the list_string removes the quotes and breaks the string into + a list, and the string_list rejoins it on spaces. When we + return, we expect to be able to split the results, but the + space separation means the right split doesn't happen. */ + tword->word = string_list (list); } else - tstring = istring; - tword = make_bare_word (tstring); - if (tstring != istring) - free (tstring); - goto set_word_flags; - } - /* This is the attempt to make $* in an assignment context (a=$*) and - array variables subscripted with * in an assignment context (a=${foo[*]}) - behave similarly. It has side effects that, though they increase - compatibility with other shells, are not backwards compatible. */ -#if 0 - else if (has_dollar_at && quoted == 0 && ifs_chars && (word->flags & W_ASSIGNRHS)) - { - tword = make_bare_word (istring); + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ goto set_word_flags; } -#endif else if (has_dollar_at && ifs_chars) list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); else { - tword = make_bare_word (istring); + tword = alloc_word_desc (); + if (expanded_something && *expanded_something == 0 && has_quoted_ifs) + tword->word = remove_quoted_ifs (istring); + else + tword->word = istring; + if (had_quoted_null && QUOTED_NULL (istring)) + tword->flags |= W_HASQUOTEDNULL; /* XXX */ + if (tword->word != istring) + free (istring); + istring = 0; /* avoid later free() */ set_word_flags: if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) tword->flags |= W_QUOTED; @@ -9841,8 +10432,6 @@ set_word_flags: tword->flags |= W_NOBRACE; if (word->flags & W_NOEXPAND) tword->flags |= W_NOEXPAND; - if (had_quoted_null && QUOTED_NULL (istring)) - tword->flags |= W_HASQUOTEDNULL; /* XXX */ list = make_word_list (tword, (WORD_LIST *)NULL); } } @@ -10002,7 +10591,7 @@ setifs (v) #if defined (HANDLE_MULTIBYTE) if (ifs_value == 0) { - ifs_firstc[0] = '\0'; + ifs_firstc[0] = '\0'; /* XXX - ? */ ifs_firstc_len = 1; } else @@ -10091,6 +10680,8 @@ exp_jump_to_top_level (v) /* Cleanup code goes here. */ expand_no_split_dollar_star = 0; /* XXX */ + if (expanding_redir) + undo_partial_redirects (); expanding_redir = 0; assigning_in_environment = 0; @@ -10467,7 +11058,6 @@ shell_expand_word_list (tlist, eflags) { WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd; int expanded_something, has_dollar_at; - char *temp_string; /* We do tilde expansion all the time. This is what 1003.2 says. */ new_list = (WORD_LIST *)NULL; @@ -10477,8 +11067,6 @@ shell_expand_word_list (tlist, eflags) for (orig_list = tlist; tlist; tlist = next) { - temp_string = tlist->word->word; - next = tlist->next; #if defined (ARRAY_VARS) @@ -10491,10 +11079,11 @@ shell_expand_word_list (tlist, eflags) if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG)) { int t; - char opts[16], opti; + char opts[16]; + int opti; opti = 0; - if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_ASSIGNARRAY)) + if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY)) opts[opti++] = '-'; if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL)) @@ -10514,6 +11103,9 @@ shell_expand_word_list (tlist, eflags) else if (tlist->word->flags & W_ASSNGLOBAL) opts[opti++] = 'g'; + if (tlist->word->flags & W_CHKLOCAL) + opts[opti++] = 'G'; + /* If we have special handling note the integer attribute and others that transform the value upon assignment. What we do is take all of the option arguments and scan through them looking for options @@ -10673,11 +11265,12 @@ expand_word_list_internal (list, eflags) tint = do_word_assignment (temp_list->word, 0); this_command_name = savecmd; /* Variable assignment errors in non-interactive shells - running in Posix.2 mode cause the shell to exit. */ + running in Posix.2 mode cause the shell to exit, unless + they are being run by the `command' builtin. */ if (tint == 0) { last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct) + if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0) exp_jump_to_top_level (FORCE_EOF); else exp_jump_to_top_level (DISCARD); @@ -10748,11 +11341,16 @@ expand_word_list_internal (list, eflags) if (assign_func == do_word_assignment) { last_command_exit_value = EXECUTION_FAILURE; - if (interactive_shell == 0 && posixly_correct && is_special_builtin) + if (interactive_shell == 0 && posixly_correct) exp_jump_to_top_level (FORCE_EOF); else exp_jump_to_top_level (DISCARD); } + else if (interactive_shell == 0 && is_special_builtin) + { + last_command_exit_value = EXECUTION_FAILURE; + exp_jump_to_top_level (FORCE_EOF); + } else tempenv_assign_error++; } diff --git a/subst.h b/subst.h index a2a8294ed..7530dc6e9 100644 --- a/subst.h +++ b/subst.h @@ -1,6 +1,6 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993-2015 Free Software Foundation, Inc. +/* Copyright (C) 1993-2017 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -50,6 +50,10 @@ #define ASS_MKGLOBAL 0x0008 /* force global assignment */ #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ #define ASS_FORCE 0x0020 /* force assignment even to readonly variable */ +#define ASS_CHKLOCAL 0x0040 /* check local variable before assignment */ +#define ASS_NOEXPAND 0x0080 /* don't expand associative array subscripts */ +#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */ +#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */ /* Flags for the string extraction functions. */ #define SX_NOALLOC 0x0001 /* just skip; don't return substring */ @@ -102,7 +106,7 @@ extern char *string_list_internal __P((WORD_LIST *, char *)); extern char *string_list __P((WORD_LIST *)); /* Turn $* into a single string, obeying POSIX rules. */ -extern char *string_list_dollar_star __P((WORD_LIST *)); +extern char *string_list_dollar_star __P((WORD_LIST *, int, int)); /* Expand $@ into a single string, obeying POSIX rules. */ extern char *string_list_dollar_at __P((WORD_LIST *, int, int)); @@ -188,7 +192,7 @@ extern char *expand_arith_string __P((char *, int)); extern char *dequote_string __P((char *)); /* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */ -extern char *dequote_escapes __P((char *)); +extern char *dequote_escapes __P((const char *)); /* De-quote quoted characters in each word in LIST. */ extern WORD_LIST *dequote_list __P((WORD_LIST *)); @@ -212,7 +216,7 @@ extern char *quote_string __P((char *)); /* Quote escape characters (characters special to interals of expansion) in a string. */ -extern char *quote_escapes __P((char *)); +extern char *quote_escapes __P((const char *)); /* And remove such quoted special characters. */ extern char *remove_quoted_escapes __P((char *)); @@ -258,9 +262,10 @@ extern WORD_LIST *expand_words_no_vars __P((WORD_LIST *)); command substitution, arithmetic expansion, and word splitting. */ extern WORD_LIST *expand_words_shellexp __P((WORD_LIST *)); -extern WORD_DESC *command_substitute __P((char *, int)); +extern WORD_DESC *command_substitute __P((char *, int, int)); extern char *pat_subst __P((char *, char *, char *, int)); +#if defined (PROCESS_SUBSTITUTION) extern int fifos_pending __P((void)); extern int num_fifos __P((void)); extern void unlink_fifo_list __P((void)); @@ -272,6 +277,13 @@ extern void close_new_fifos __P((char *, int)); extern void clear_fifo_list __P((void)); +extern int find_procsub_child __P((pid_t)); +extern void set_procsub_status __P((int, pid_t, int)); + +extern void wait_procsubs __P((void)); +extern void reap_procsubs __P((void)); +#endif + extern WORD_LIST *list_string_with_quotes __P((char *)); #if defined (ARRAY_VARS) @@ -312,6 +324,7 @@ extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int, int *, int extern SHELL_VAR *ifs_var; extern char *ifs_value; extern unsigned char ifs_cmap[]; +extern int ifs_is_set, ifs_is_null; #if defined (HANDLE_MULTIBYTE) extern unsigned char ifs_firstc[]; @@ -320,6 +333,12 @@ extern size_t ifs_firstc_len; extern unsigned char ifs_firstc; #endif +extern int assigning_in_environment; +extern int expanding_redir; +extern int inherit_errexit; + +extern pid_t last_command_subst_pid; + /* Evaluates to 1 if C is a character in $IFS. */ #define isifs(c) (ifs_cmap[(unsigned char)(c)] != 0) diff --git a/support/Makefile.in b/support/Makefile.in index 9ed70215c..f684a4d6d 100644 --- a/support/Makefile.in +++ b/support/Makefile.in @@ -79,10 +79,9 @@ man2html$(EXEEXT): $(OBJ1) $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD} clean: - $(RM) man2html$(EXEEXT) + $(RM) man2html$(EXEEXT) $(OBJ1) distclean maintainer-clean mostlyclean: clean - $(RM) $(OBJ1) $(RM) bash.pc man2html.o: man2html.c diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in new file mode 100644 index 000000000..5e92b9959 --- /dev/null +++ b/support/bashbug.sh.in @@ -0,0 +1,272 @@ +#!/bin/sh - +# +# bashbug - create a bug report and mail it to the bug address +# +# The bug address depends on the release status of the shell. Versions +# with status `devel', `alpha', `beta', or `rc' mail bug reports to +# chet@cwru.edu and, optionally, to bash-testers@cwru.edu. +# Other versions send mail to bug-bash@gnu.org. +# +# Copyright (C) 1996-2004 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# configuration section: +# these variables are filled in by the make target in Makefile +# +MACHINE="@host_cpu@" +OS="@host_os@" +CC="@CC@" +CFLAGS="@CFLAGS@" +RELEASE="@BASHVERS@" +PATCHLEVEL="!PATCHLEVEL!" +RELSTATUS="@RELSTATUS@" +MACHTYPE="@host@" + +PATH=/bin:/usr/bin:/usr/local/bin:$PATH +export PATH + +# Check if TMPDIR is set, default to /tmp +: ${TMPDIR:=/tmp} + +#Securely create a temporary directory for the temporary files +TEMPDIR=$TMPDIR/bbug.$$ +(umask 077 && mkdir $TEMPDIR) || { + echo "$0: could not create temporary directory" >&2 + exit 1 +} + +TEMPFILE1=$TEMPDIR/bbug1 +TEMPFILE2=$TEMPDIR/bbug2 + +USAGE="Usage: $0 [--help] [--version] [bug-report-email-address]" +VERSTR="GNU bashbug, version ${RELEASE}.${PATCHLEVEL}-${RELSTATUS}" + +do_help= do_version= + +while [ $# -gt 0 ]; do + case "$1" in + --help) shift ; do_help=y ;; + --version) shift ; do_version=y ;; + --) shift ; break ;; + -*) echo "bashbug: ${1}: invalid option" >&2 + echo "$USAGE" >&2 + exit 2 ;; + *) break ;; + esac +done + +if [ -n "$do_version" ]; then + echo "${VERSTR}" + exit 0 +fi + +if [ -n "$do_help" ]; then + echo "${VERSTR}" + echo "${USAGE}" + echo + cat << HERE_EOF +Bashbug is used to send mail to the Bash maintainers +for when Bash doesn't behave like you'd like, or expect. + +Bashbug will start up your editor (as defined by the shell's +EDITOR environment variable) with a preformatted bug report +template for you to fill in. The report will be mailed to the +bug-bash mailing list by default. See the manual for details. + +If you invoke bashbug by accident, just quit your editor without +saving any changes to the template, and no bug report will be sent. +HERE_EOF + exit 0 +fi + +# Figure out how to echo a string without a trailing newline +N=`echo 'hi there\c'` +case "$N" in +*c) n=-n c= ;; +*) n= c='\c' ;; +esac + +BASHTESTERS="bash-testers@cwru.edu" + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;; +*) BUGBASH=bug-bash@gnu.org ;; +esac + +case "$RELSTATUS" in +alpha*|beta*|devel*|rc*) + echo "$0: This is a testing release. Would you like your bug report" + echo "$0: to be sent to the bash-testers mailing list?" + echo $n "$0: Send to bash-testers? $c" + read ans + case "$ans" in + y*|Y*) BUGBASH="${BUGBASH},${BASHTESTERS}" ;; + esac ;; +esac + +BUGADDR="${1-$BUGBASH}" + +if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then + if [ -x /usr/bin/editor ]; then + DEFEDITOR=editor + elif [ -x /usr/local/bin/ce ]; then + DEFEDITOR=ce + elif [ -x /usr/local/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/contrib/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/emacs ]; then + DEFEDITOR=emacs + elif [ -x /usr/bin/xemacs ]; then + DEFEDITOR=xemacs + elif [ -x /usr/contrib/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/local/bin/jove ]; then + DEFEDITOR=jove + elif [ -x /usr/bin/vi ]; then + DEFEDITOR=vi + else + echo "$0: No default editor found: attempting to use vi" >&2 + DEFEDITOR=vi + fi +fi + + +: ${EDITOR=$DEFEDITOR} + +: ${USER=${LOGNAME-`whoami`}} + +trap 'rm -rf "$TEMPDIR"; exit 1' 1 2 3 13 15 +trap 'rm -rf "$TEMPDIR"' 0 + +UN= +if (uname) >/dev/null 2>&1; then + UN=`uname -a` +fi + +if [ -f /usr/lib/sendmail ] ; then + RMAIL="/usr/lib/sendmail" + SMARGS="-i -t" +elif [ -f /usr/sbin/sendmail ] ; then + RMAIL="/usr/sbin/sendmail" + SMARGS="-i -t" +else + RMAIL=rmail + SMARGS="$BUGADDR" +fi + +INITIAL_SUBJECT='[50 character or so descriptive subject here (for reference)]' + +cat > "$TEMPFILE1" <> $HOME/dead.bashbug + echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: please send it manually to ${BUGADDR}" >&2 +} + +exit 0 diff --git a/support/config.guess b/support/config.guess index 9afd67620..770cb5c7e 100644 --- a/support/config.guess +++ b/support/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2013-11-29' +timestamp='2017-12-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ timestamp='2013-11-29' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -24,12 +24,12 @@ timestamp='2013-11-29' # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` @@ -39,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2017 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." @@ -149,7 +149,7 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:MidnightBSD:*:*) + echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +259,15 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + *:Redox:*:*) + echo ${UNAME_MACHINE}-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,55 +284,46 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$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 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -461,13 +485,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); @@ -579,8 +603,9 @@ EOF else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi @@ -589,7 +614,7 @@ EOF *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and @@ -610,20 +635,20 @@ EOF 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -662,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -679,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -724,7 +749,7 @@ EOF { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -733,7 +758,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -789,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -812,10 +837,11 @@ EOF UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin @@ -826,13 +852,9 @@ EOF *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; @@ -848,27 +870,12 @@ EOF echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; @@ -878,7 +885,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -901,7 +908,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -932,6 +939,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -944,6 +954,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -969,10 +982,13 @@ EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) + mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1001,6 +1017,9 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1020,7 +1039,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1059,7 +1078,7 @@ EOF i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + i*86:*:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} @@ -1099,7 +1118,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1248,6 +1267,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1261,16 +1283,23 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub @@ -1285,7 +1314,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1294,15 +1323,18 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit ;; - NEO-?:NONSTOP_KERNEL:*:*) + NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; - NSR-?:NONSTOP_KERNEL:*:*) + NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk${UNAME_RELEASE} + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; @@ -1316,7 +1348,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1358,7 +1390,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1369,171 +1401,37 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif +echo "$0: unable to guess system type" >&2 -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif +case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 </dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} +NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize +the system type. Please install a C compiler and try again. EOF - -$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. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi + ;; +esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp @@ -1561,7 +1459,7 @@ EOF exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/support/config.sub b/support/config.sub index 61cb4bc22..00f68b8e5 100644 --- a/support/config.sub +++ b/support/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2017 Free Software Foundation, Inc. -timestamp='2013-10-01' +timestamp='2017-11-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -15,7 +15,7 @@ timestamp='2013-10-01' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -25,7 +25,7 @@ timestamp='2013-10-01' # of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +33,7 @@ timestamp='2013-10-01' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,12 +53,11 @@ timestamp='2013-10-01' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2017 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." @@ -117,8 +116,8 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -230,9 +229,6 @@ case $os in -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; -psos*) os=-psos ;; @@ -255,15 +251,16 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ - | i370 | i860 | i960 | ia64 \ + | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ @@ -283,8 +280,10 @@ case $basic_machine in | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -296,14 +295,15 @@ case $basic_machine in | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -311,7 +311,8 @@ case $basic_machine in | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ + | visium \ + | wasm32 \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown @@ -325,6 +326,9 @@ case $basic_machine in c6x) basic_machine=tic6x-unknown ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none @@ -370,17 +374,18 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ @@ -402,8 +407,10 @@ case $basic_machine in | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -415,16 +422,19 @@ case $basic_machine in | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -432,6 +442,8 @@ case $basic_machine in | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ + | visium-* \ + | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -508,6 +520,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -624,10 +639,18 @@ case $basic_machine in basic_machine=rs6000-bull os=-bosx ;; - dpx2* | dpx2*-bull) + dpx2*) basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -769,6 +792,9 @@ case $basic_machine in basic_machine=m68k-isi os=-sysv ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; m68knommu) basic_machine=m68k-unknown os=-linux @@ -824,6 +850,10 @@ case $basic_machine in basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos @@ -871,7 +901,7 @@ case $basic_machine in basic_machine=v70-nec os=-sysv ;; - next | m*-next ) + next | m*-next) basic_machine=m68k-next case $os in -nextstep* ) @@ -916,6 +946,9 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf @@ -1000,7 +1033,7 @@ case $basic_machine in ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) + ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) @@ -1010,7 +1043,7 @@ case $basic_machine in ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) + ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) @@ -1211,6 +1244,9 @@ case $basic_machine in basic_machine=a29k-wrs os=-vxworks ;; + wasm32) + basic_machine=wasm32-unknown + ;; w65*) basic_machine=w65-wdc os=-none @@ -1219,6 +1255,9 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; + x64) + basic_machine=x86_64-pc + ;; xbox) basic_machine=i686-pc os=-mingw32 @@ -1326,8 +1365,8 @@ esac if [ x"$os" != x"" ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. + # First match some system type aliases that might get confused + # with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux @@ -1347,36 +1386,37 @@ case $os in -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; - # First accept the basic system types. + # Now accept the basic system types. # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. + # Each alternative MUST end in a * to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1451,7 +1491,7 @@ case $os in -nova*) os=-rtmk-nova ;; - -ns2 ) + -ns2) os=-nextstep2 ;; -nsk*) @@ -1506,8 +1546,23 @@ case $os in -dicos*) os=-dicos ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; -nacl*) ;; + -ios) + ;; -none) ;; *) @@ -1594,9 +1649,6 @@ case $basic_machine in mips*-*) os=-elf ;; - or1k-*) - os=-elf - ;; or32-*) os=-coff ;; @@ -1606,6 +1658,9 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; + pru-*) + os=-elf + ;; *-be) os=-beos ;; @@ -1651,7 +1706,7 @@ case $basic_machine in m88k-omron*) os=-luna ;; - *-next ) + *-next) os=-nextstep ;; *-sequent) @@ -1786,7 +1841,7 @@ echo $basic_machine$os exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/support/shobj-conf b/support/shobj-conf index 1f64433de..7920f1b5c 100755 --- a/support/shobj-conf +++ b/support/shobj-conf @@ -189,7 +189,7 @@ darwin*) darwin[1-7].*) SHOBJ_STATUS=unsupported SHOBJ_LDFLAGS='-dynamic' - SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; # Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4 *) @@ -205,7 +205,7 @@ darwin*) ;; esac SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}" - SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v' + SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v' ;; esac diff --git a/test.c b/test.c index ee6342045..3da8c7b36 100644 --- a/test.c +++ b/test.c @@ -274,7 +274,7 @@ term () value = binary_operator (); /* Might be a switch type argument */ - else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0') { if (test_unop (argv[pos])) value = unary_operator (); @@ -344,10 +344,10 @@ arithcomp (s, t, op, flags) if (flags & TEST_ARITHEXP) { - l = evalexp (s, &expok); + l = evalexp (s, 0, &expok); if (expok == 0) return (FALSE); /* should probably longjmp here */ - r = evalexp (t, &expok); + r = evalexp (t, 0, &expok); if (expok == 0) return (FALSE); /* ditto */ } @@ -627,8 +627,12 @@ unary_test (op, arg) if (v == 0 && valid_array_reference (arg, 0)) { char *t; - t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0); - return (t ? TRUE : FALSE); + int rtype, ret; + t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0); + ret = t ? TRUE : FALSE; + if (rtype > 0) /* subscript is * or @ */ + free (t); + return ret; } else if (v && invisible_p (v) == 0 && array_p (v)) { @@ -670,7 +674,7 @@ test_binop (op) else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!')) return (1); #endif - else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0') + else if (op[0] != '-' || op[1] == '\0' || op[2] == '\0' || op[3] != '\0') return (0); else { @@ -714,7 +718,7 @@ int test_unop (op) char *op; { - if (op[0] != '-' || op[2] != 0) + if (op[0] != '-' || (op[1] && op[2] != 0)) return (0); switch (op[1]) @@ -736,7 +740,7 @@ two_arguments () { if (argv[pos][0] == '!' && argv[pos][1] == '\0') return (argv[pos + 1][0] == '\0'); - else if (argv[pos][0] == '-' && argv[pos][2] == '\0') + else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0') { if (test_unop (argv[pos])) return (unary_operator ()); @@ -749,7 +753,7 @@ two_arguments () return (0); } -#define ANDOR(s) (s[0] == '-' && !s[2] && (s[1] == 'a' || s[1] == 'o')) +#define ANDOR(s) (s[0] == '-' && (s[1] == 'a' || s[1] == 'o') && s[2] == 0) /* This could be augmented to handle `-t' as equivalent to `-t 1', but POSIX requires that `-t' be given an argument. */ diff --git a/tests/alias.right b/tests/alias.right index cab07a988..3ab9a7171 100644 --- a/tests/alias.right +++ b/tests/alias.right @@ -18,3 +18,15 @@ one two three four +Error: bar +ok 1 +ok 2 +text +whoops: nullalias +foo +a +a b +a b +a a b +ok 3 +ok 4 diff --git a/tests/alias.tests b/tests/alias.tests index d1ba97b30..6aa1218b0 100644 --- a/tests/alias.tests +++ b/tests/alias.tests @@ -38,3 +38,5 @@ unalias foo bar baz ${THIS_SH} ./alias1.sub ${THIS_SH} ./alias2.sub +${THIS_SH} ./alias3.sub +${THIS_SH} ./alias4.sub diff --git a/tests/alias3.sub b/tests/alias3.sub new file mode 100644 index 000000000..bb94268a8 --- /dev/null +++ b/tests/alias3.sub @@ -0,0 +1,12 @@ +#!/bin/bash +shopt -s expand_aliases +alias foo='oneword' +foo_word='foo' +# +# Fails silently to match 'foo': +# +case "$foo_word" +in + foo) ;; + *) echo bad 1;; +esac diff --git a/tests/alias4.sub b/tests/alias4.sub new file mode 100644 index 000000000..966b93d1d --- /dev/null +++ b/tests/alias4.sub @@ -0,0 +1,61 @@ +shopt -s expand_aliases + +# from an austin-group report +alias foo="echo 'Error:" +foo bar' + +# from some FreeBSD sh tests + +v=1 +alias a='unalias -a +v=2' +eval a +[ "$v" = 2 ] && echo ok 1 +v=1 +alias a='unalias a +v=2' +eval a +[ "$v" = 2 ] && echo ok 2 + +# make sure command doesn't ever reset anything even if it's made a keyword +unalias -a +alias command=command +alias true='echo bad' +eval 'command true' + +unalias -a +alias alias0=command +alias true='echo bad' +eval 'alias0 true' + +# make sure null aliases are ok +unalias -a +alias nullalias='' +alias foo='echo ' +foo nullalias text +unalias foo + +# aliases shouldn't be expanded in quoted strings even when the previous word +# is an alias whose expansion ends in a space +alias foo="echo 'whoops: " +foo nullalias' + +unalias -a + +# recursive alias definitions +alias echo=echo +eval echo foo + +alias echo='echo a' + +echo +echo b +eval echo b +echo $(eval echo b) + +unalias -a + +# alias expansion when in a command position after redirections +alias e=echo +eval '&1 | sed 's|^.*/||' +#echo $? -for (( i=0; i < 3; i++; 7 )) +{ +${THIS_SH} -c 'for (( i=0; i < 3; i++; 7 )) do echo $i -done -echo $? +done' ; echo $?; } 2>&1 | sed 's|^.*/||' +#echo $? # one-liners added in post-bash-2.04 for ((i=0; i < 20; i++)) do : ; done diff --git a/tests/arith.right b/tests/arith.right index 13c8c7106..2c3d172af 100644 --- a/tests/arith.right +++ b/tests/arith.right @@ -242,14 +242,22 @@ efg e abcdefg efg +0 +0 +0 +0 +0 +0 +0 8 12 -./arith.tests: line 294: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") -./arith.tests: line 298: a b: syntax error in expression (error token is "b") -./arith.tests: line 299: ((: a b: syntax error in expression (error token is "b") +./arith.tests: line 297: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") +./arith.tests: line 301: a b: syntax error in expression (error token is "b") +./arith.tests: line 302: ((: a b: syntax error in expression (error token is "b") 42 42 42 42 42 42 -./arith.tests: line 310: b[c]d: syntax error in expression (error token is "d") +./arith.tests: line 314: 'foo' : syntax error: operand expected (error token is "'foo' ") +./arith.tests: line 318: b[c]d: syntax error in expression (error token is "d") diff --git a/tests/arith.tests b/tests/arith.tests index 79ce016d5..bc9490e98 100644 --- a/tests/arith.tests +++ b/tests/arith.tests @@ -283,6 +283,9 @@ ${THIS_SH} ./arith6.sub # part of word expansions such as substring extraction ${THIS_SH} ./arith7.sub +# problems with evaluation of conditional expressions +${THIS_SH} ./arith8.sub + x=4 y=7 @@ -306,5 +309,10 @@ printf "%u\n" $n echo $(( 16#$(printf "%x\n" $n) )) echo $(( 16#$(printf "%X\n" $n) )) +# these are errors +foo=1 +echo $(( 'foo' )) + + # causes longjmp botches through bash-2.05b a[b[c]d]=e diff --git a/tests/arith8.sub b/tests/arith8.sub new file mode 100644 index 000000000..1ab0895ef --- /dev/null +++ b/tests/arith8.sub @@ -0,0 +1,37 @@ +# problems with evaluation of wrong terms in conditional expressions through +# bash-4.4 + +a=0 x="a=1" +((0?x:0)) +echo $a +unset a x + +a=0 x="a=1" +((1?0:x)) +echo $a +unset a x + +a=0 x="a=1" +((0?(x):0)) +echo $a +unset a x + +a=0 x="a=1" +((0?$x:0)) +echo $a +unset a x + +a=0 x="a=1" +((0&&x)) +echo $a +unset a x + +a=0 x="a=1" +((1||x)) +echo $a +unset a x + +a=0 +((0?arr[a=1]:0)) +echo $a +unset a diff --git a/tests/array.right b/tests/array.right index 031a0b7e4..aab4153d0 100644 --- a/tests/array.right +++ b/tests/array.right @@ -26,7 +26,7 @@ hello world 11 3 bdef hello world test expression test 2 -./array.tests: line 76: readonly: `a[5]': not a valid identifier +./array.tests: line 79: readonly: `a[5]': not a valid identifier declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") declare -ar c declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") @@ -46,17 +46,17 @@ declare -ar c declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element") declare -a e=([0]="test") declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") -./array.tests: line 100: a: readonly variable -./array.tests: line 102: b[]: bad array subscript -./array.tests: line 103: b[*]: bad array subscript -./array.tests: line 104: ${b[ ]}: bad substitution -./array.tests: line 106: c[-2]: bad array subscript -./array.tests: line 107: c: bad array subscript +./array.tests: line 103: a: readonly variable +./array.tests: line 105: b[]: bad array subscript +./array.tests: line 106: b[*]: bad array subscript +./array.tests: line 107: ${b[ ]}: bad substitution +./array.tests: line 109: c[-2]: bad array subscript +./array.tests: line 110: c: bad array subscript -./array.tests: line 109: d[7]: cannot assign list to array member -./array.tests: line 111: []=abcde: bad array subscript -./array.tests: line 111: [*]=last: cannot assign to non-numeric index -./array.tests: line 111: [-65]=negative: bad array subscript +./array.tests: line 112: d[7]: cannot assign list to array member +./array.tests: line 114: []=abcde: bad array subscript +./array.tests: line 114: [*]=last: cannot assign to non-numeric index +./array.tests: line 114: [-65]=negative: bad array subscript declare -a BASH_ARGC=() declare -a BASH_ARGV=() declare -a BASH_LINENO=([0]="0") @@ -68,8 +68,8 @@ declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") declare -ar c declare -a d=([1]="test test") declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") -./array.tests: line 119: unset: ps1: not an array variable -./array.tests: line 123: declare: c: cannot destroy array variables in this way +./array.tests: line 122: unset: ps1: not an array variable +./array.tests: line 126: declare: c: cannot destroy array variables in this way this of this is a test of read using arrays this test @@ -127,7 +127,7 @@ grep [ 123 ] * 6 7 9 5 length = 3 value = new1 new2 new3 -./array.tests: line 239: narray: unbound variable +./array.tests: line 242: narray: unbound variable ./array1.sub: line 1: syntax error near unexpected token `(' ./array1.sub: line 1: `printf "%s\n" -a a=(a 'b c')' ./array2.sub: line 1: declare: `[]=asdf': not a valid identifier @@ -154,10 +154,10 @@ for case if then else 12 14 16 18 20 4414758999202 aaa bbb -./array.tests: line 289: syntax error near unexpected token `<>' -./array.tests: line 289: `metas=( <> < > ! )' -./array.tests: line 290: syntax error near unexpected token `<>' -./array.tests: line 290: `metas=( [1]=<> [2]=< [3]=> [4]=! )' +./array.tests: line 292: syntax error near unexpected token `<>' +./array.tests: line 292: `metas=( <> < > ! )' +./array.tests: line 293: syntax error near unexpected token `<>' +./array.tests: line 293: `metas=( [1]=<> [2]=< [3]=> [4]=! )' abc 3 case 4 abc case if then else 5 @@ -502,3 +502,122 @@ unset declare -a a=() declare -A A=() declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3") +a1 +argv[1] = <> +argv[2] = <> +a2 +argv[1] = <> +a3 +argv[1] = <> +argv[2] = +a4 +argv[1] = +p1 +argv[1] = <> +argv[2] = <> +p2 +argv[1] = <> +argv[2] = +p3 +argv[1] = +./array23.sub: line 9: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +./array23.sub: line 10: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ") +foo +0 +foo +foo +foo +6 +./array23.sub: line 21: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +./array23.sub: line 22: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )") +IFS=: ${var-$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS=: ${var=$*} +abc +def ghi +jkl +var=abc:def ghi:jkl +abc +def ghi +jkl +var=abc:def ghi:jkl +---- +IFS=: ${var+$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS= ${var-$*} +abc +def ghi +jkl +abc +def ghi +jkl +---- +IFS= ${var=$*} +abcdef ghijkl +var=abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +---- +IFS= ${var+$*} +abc +def ghi +jkl +abc +def ghi +jkl +1. indexed: +reference: +./array25.sub: line 10: ${a[ ]}: bad substitution +./array25.sub: line 11: ' ': syntax error: operand expected (error token is "' '") +./array25.sub: line 12: ${a[ ]}: bad substitution +4. 0 +5. 0 +6. 0 +assignment: +1.declare -a a=([0]="10" [1]="1") +2.declare -a a=([0]="11" [1]="1") +3.declare -a a=([0]="12" [1]="1") +4.declare -a a=([0]="13" [1]="1") +arithmetic: +1.declare -a a=([0]="0" [1]="1") +2.declare -a a=([0]="0" [1]="1") +3.declare -a a=([0]="0" [1]="1") +4.declare -a a=([0]="0" [1]="1") +5.declare -a a=([0]="0" [1]="1") +6.declare -a a=([0]="11" [1]="1") +7.declare -a a=([0]="0" [1]="1") +8.declare -a a=([0]="13" [1]="1") +2. associative: +reference: +./array25.sub: line 47: ${a[ ]}: bad substitution +2. +./array25.sub: line 49: ${a[ ]}: bad substitution +4. +5. +6. +assignment: +1.declare -A a=([" "]="10" [0]="0" [1]="1" ) +2.declare -A a=([" "]="11" [0]="0" [1]="1" ) +3.declare -A a=([" "]="12" [0]="0" [1]="1" ) +4.declare -A a=([" "]="13" [0]="0" [1]="1" ) +arithmetic: +1.declare -A a=([" "]="13" [0]="0" [1]="1" ) +2.declare -A a=([" "]="13" [0]="0" [1]="1" ) +3.declare -A a=([" "]="13" [0]="0" [1]="1" ) +4.declare -A a=([" "]="13" [0]="0" [1]="1" ) +5.declare -A a=([" "]="13" [0]="0" [1]="1" ) +6.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="11" ) +7.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="11" ) +8.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="13" ) diff --git a/tests/array.tests b/tests/array.tests index b10539376..e045d5c4a 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -21,6 +21,9 @@ unset a a=abcde declare -a a echo ${a[0]} +if [ "$a" != "${a[0]}" ]; then + echo 'array.tests: $a and $a[0] array mismatch' +fi unset a a=abcde @@ -248,7 +251,7 @@ ${THIS_SH} ./array3.sub ${THIS_SH} ./array4.sub set +u -cd /tmp +cd ${TMPDIR:=/tmp} touch 1=bar foo=([10]="bar") @@ -397,3 +400,7 @@ ${THIS_SH} ./array18.sub ${THIS_SH} ./array19.sub ${THIS_SH} ./array20.sub ${THIS_SH} ./array21.sub +${THIS_SH} ./array22.sub +${THIS_SH} ./array23.sub +${THIS_SH} ./array24.sub +${THIS_SH} ./array25.sub diff --git a/tests/array22.sub b/tests/array22.sub new file mode 100644 index 000000000..e0463c343 --- /dev/null +++ b/tests/array22.sub @@ -0,0 +1,34 @@ +# This isn't perfect behavior, but it establishes a baseline and will provide +# a way to detect behavior changes + +echo a1 +a[0]= a[1]=; recho "${a[@]:-y}" +unset a + +echo a2 +a[1]=; recho "${a[@]:-y}" +unset a + +echo a3 +a[0]= a[1]=x; recho "${a[@]:-y}" +unset a + +echo a4 +a[0]= a[1]=x; recho ${a[@]:+y} +unset a + +echo p1 +set '' '' +recho "${@:-y}" + +shift $# + +echo p2 +set '' x +recho "${@:-y}" + +shift $# + +echo p3 +set '' x +recho ${@:+y} diff --git a/tests/array23.sub b/tests/array23.sub new file mode 100644 index 000000000..a762aadba --- /dev/null +++ b/tests/array23.sub @@ -0,0 +1,22 @@ +# this captures how bash and ksh93 expand indexed array subscripts in +# various contexts. if changes are ever made, or an option added to do +# this differently, the diffs will show up here + +typeset -a array + +index='$( echo >&2 foo )' # Literal shell code should never be evaluated unless an 'eval' is involved. + +echo ${array[ $index ]} # [] expands $index, results in a literal that [] does not re-evaluate. +echo $(( $index )) # (( )) expands $index, results in a literal that (( )) does not re-evaluate. +echo $(( array[ $index ] )) # (( )) expands $index, results in a literal that [] DOES re-evaluate. + +(( array[ $index ] )) + +typeset -a a + +: $(( a[$index]=5 )) + +#shopt -s assoc_expand_once +echo $((1+a[$index])) +echo $((1+a[\$index])) +echo "1+${a[$index]}" diff --git a/tests/array24.sub b/tests/array24.sub new file mode 100644 index 000000000..108f761bc --- /dev/null +++ b/tests/array24.sub @@ -0,0 +1,47 @@ +set -- "abc" "def ghi" "jkl" +A=("$@") + +IFS=':' + +echo 'IFS=: ${var-$*}' +unset var; printf '%s\n' ${var-$*} +printf '%s\n' ${var-${A[*]}} + +echo "----" +echo 'IFS=: ${var=$*}' + +unset var; printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" + +unset var; printf '%s\n' ${var=${A[*]}} +printf 'var=%s\n' "$var" + +echo "----" +echo 'IFS=: ${var+$*}' + +printf '%s\n' ${var+$*} +printf '%s\n' ${var+${A[*]}} + +echo "----" +echo 'IFS= ${var-$*}' + +IFS='' +unset var; printf '%s\n' ${var-$*} +unset var; printf '%s\n' ${var-${A[*]}} + +echo "----" +echo 'IFS= ${var=$*}' + +unset var +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" + +unset var +printf '%s\n' ${var=${A[*]}} +printf 'var=%s\n' "$var" + +echo "----" +echo 'IFS= ${var+$*}' + +printf '%s\n' ${var+$*} +printf '%s\n' ${var+${A[*]}} diff --git a/tests/array25.sub b/tests/array25.sub new file mode 100644 index 000000000..b550d9d5e --- /dev/null +++ b/tests/array25.sub @@ -0,0 +1,70 @@ +# tests with blank subscripts, indexed and associative + +echo 1. indexed: +a[0]=0 a[1]=1 + +v=" " + +echo reference: + +echo 1. ${a[ ]} +echo 2. ${a[' ']} +echo 3. "${a[ ]}" +echo 4. ${a[$v]} +echo 5. ${a["$v"]} +echo 6. "${a[$v]}" + +echo assignment: + +echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0 +echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0 +echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0 +echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0 + +echo arithmetic: + +echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0 +echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0 +echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0 +echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0 +echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0 +echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0 +echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0 +echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0 + +unset -v a v + +echo 2. associative: +shopt -s assoc_expand_once + +typeset -A a +a[0]=0 a[1]=1 + +v=" " + +echo reference: + +echo 1. ${a[ ]} +echo 2. ${a[' ']} +echo 3. "${a[ ]}" +echo 4. ${a[$v]} +echo 5. ${a["$v"]} +echo 6. "${a[$v]}" + +echo assignment: + +echo -n 1. ; a[ ]=10 ; typeset -p a ; a[0]=0 +echo -n 2. ; a[" "]=11 ; typeset -p a ; a[0]=0 +echo -n 3. ; a[$v]=12 ; typeset -p a ; a[0]=0 +echo -n 4. ; a["$v"]=13 ; typeset -p a ; a[0]=0 + +echo arithmetic: + +echo -n 1. ; (( a[ ]=10 )); typeset -p a ; a[0]=0 +echo -n 2. ; (( a[" "]=11 )); typeset -p a ; a[0]=0 +echo -n 3. ; (( a[$v]=12 )); typeset -p a ; a[0]=0 +echo -n 4. ; (( a["$v"]=13 )); typeset -p a ; a[0]=0 +echo -n 5. ; let "a[ ]=10" ; typeset -p a ; a[0]=0 +echo -n 6. ; let "a[\" \"]=11" ; typeset -p a ; a[0]=0 +echo -n 7. ; let "a[$v]=12" ; typeset -p a ; a[0]=0 +echo -n 8. ; let "a[\"$v\"]=13" ; typeset -p a ; a[0]=0 diff --git a/tests/array5.sub b/tests/array5.sub index 778a28df4..00953c4a6 100644 --- a/tests/array5.sub +++ b/tests/array5.sub @@ -4,7 +4,7 @@ mkdir $TMPDIR/bash-test-$$ cd $TMPDIR/bash-test-$$ -trap "cd / ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 +trap "cd $OLDPWD ; rm -rf $TMPDIR/bash-test-$$" 0 1 2 3 6 15 touch '[3]=abcde' diff --git a/tests/assoc.right b/tests/assoc.right index 0a6951d4a..e10636b2d 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -195,3 +195,28 @@ declare -A assoc=([0]="assoc" ) assoc declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" ) declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" ) +declare -A b=(["\""]="" [")"]="" ["\\"]="" ["]"]="" ["\`"]="" ) +declare -A b=(["]"]="" ["\`"]="" ) +declare -A dict=(["\""]="1" ["'"]="3" ["\\"]="4" ["\`"]="2" ) +./assoc9.sub: line 23: unset: `dict["]': not a valid identifier +./assoc9.sub: line 23: unset: `dict[']': not a valid identifier +./assoc9.sub: line 23: unset: `dict[\]': not a valid identifier +./assoc9.sub: line 23: unset: `dict[`]': not a valid identifier +declare -A dict=(["\""]="1" ["'"]="3" ["\\"]="4" ["\`"]="2" ) +declare -A dict=(["\""]="1" ["'"]="3" ["\\"]="4" ["\`"]="2" ) +declare -A dict=() +4 +4 +a[$b]= 5 +declare -A a=(["80's"]="Depeche Mode" ) +./assoc9.sub: line 71: read: `a[80's]': not a valid identifier +declare -A a +declare -A a=(["80's"]="Depeche Mode" ) +./assoc9.sub: line 83: printf: `a[80's]': not a valid identifier +declare -A a +declare -A a=(["80's"]="Depeche Mode" ) +6 +1 +1+5 +declare -A a=(["\$(date >&2)"]="5" ) +declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) diff --git a/tests/assoc.tests b/tests/assoc.tests index 32536b8d2..24ab08c02 100644 --- a/tests/assoc.tests +++ b/tests/assoc.tests @@ -107,7 +107,7 @@ unset flix wheat # TEST - index expansion: no word splitting or globbing typeset -A wheat -cd /tmp +cd ${TMPDIR:=/tmp} touch '[sfiri]' wheat=([s*]=6 [foo bar]=flix ) @@ -174,6 +174,13 @@ T='([a]=1)' echo "${T[@]}" unset T +# peculiar ksh93 semantics for unsubscripted assoc variable reference +declare -A T +T[0]='zero' +if [ "$T" != "${T[0]}" ]; then + echo 'assoc.tests: $T and ${T[0]} mismatch' +fi + ${THIS_SH} ./assoc1.sub ${THIS_SH} ./assoc2.sub @@ -207,3 +214,6 @@ readonly -A assoc declare -p assoc ${THIS_SH} ./assoc8.sub + +# new shopt option to prevent multiple expansion of assoc array subscripts +${THIS_SH} ./assoc9.sub diff --git a/tests/assoc9.sub b/tests/assoc9.sub new file mode 100644 index 000000000..c5fbe45bd --- /dev/null +++ b/tests/assoc9.sub @@ -0,0 +1,110 @@ +typeset -A a=( [\\]= [\"]= [\)]= ) b +for x in "${!a[@]}"; do b[$x]=; done +b+=([\`]= [\]]=) +typeset -p b +for x in "${!a[@]}"; do + unset -v 'b[$x]' +done +typeset -p b + +unset -v a b + +loaddict() +{ + dict['"']=1 + dict['`']=2 + dict["'"]=3 + dict['\']=4 + declare -p dict +} + +del() +{ + unset -v dict["$1"]; +} + +declare -A dict +loaddict +for k in "${!dict[@]}"; do del "$k"; done +declare -p dict + +unset 'dict[@]' + +shopt -s assoc_expand_once +declare -A dict +loaddict +for k in "${!dict[@]}"; do del "$k"; done +declare -p dict + +unset a b dict + +typeset -A a +b="80's" + +((++a[$b])) + +((++a["$b"])) +[[ $((++a[$b])) ]] +[[ $((++a["$b"])) ]] +echo ${a["$b"]} +echo ${a[$b]} + +let "++a[$b]" + +echo 'a[$b]=' "${a[$b]}" + +unset a b + +declare -A a +b="80's" + +: ${a[$b]:='Depeche Mode'} + +declare -p a + +unset a b +shopt -u assoc_expand_once + +typeset -A a +b="80's" + +read a[$b] <<<"Depeche Mode" +typeset -p a + +shopt -s assoc_expand_once +read a[$b] <<<"Depeche Mode" +typeset -p a + +unset a +shopt -u assoc_expand_once + +typeset -A a + +printf -v a[$b] "%s" "Depeche Mode" +typeset -p a + +shopt -s assoc_expand_once + +printf -v a[$b] "%s" "Depeche Mode" +typeset -p a + +unset a + +declare -A a +x='$(date >&2)' +a[$x]=5 + +shopt -s assoc_expand_once +echo $((1+a[$x])) +echo $((1+a[\$x])) +echo "1+${a[$x]}" + +declare -p a + +shopt -s assoc_expand_once +declare -A myarray + +declare myarray["foo[bar"]=bleh +myarray["foo"]=bleh + +declare -p myarray diff --git a/tests/case.right b/tests/case.right index a17234b9f..d2055c9db 100644 --- a/tests/case.right +++ b/tests/case.right @@ -25,3 +25,38 @@ ok 8 ok 9 mysterious 1 mysterious 2 +argv[1] = <\a\b\c\^A\d\e\f> +argv[1] = <\a\b\c\^A\d\e\f> +argv[1] = +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +--- testing: soh +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +--- testing: stx +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +--- testing: del +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 +ok1ok2ok3ok4ok5 diff --git a/tests/case.tests b/tests/case.tests index 7ab316a7e..cc73d8e18 100644 --- a/tests/case.tests +++ b/tests/case.tests @@ -51,3 +51,5 @@ case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac # tests of quote removal and pattern matching ${THIS_SH} ./case1.sub +${THIS_SH} ./case2.sub +${THIS_SH} ./case3.sub diff --git a/tests/case2.sub b/tests/case2.sub new file mode 100644 index 000000000..085f888c3 --- /dev/null +++ b/tests/case2.sub @@ -0,0 +1,52 @@ +x=$'\\a\\b\\c\\\001\\d\\e\\f' +y='\a\b\c\\d\e\f' +z=$'abc\001def' + +recho "$x" +recho "$y" +recho "$z" + +case $'abc\001def' in +$x) echo ok 1 ;; +*) echo oops 1;; +esac + +case $z in +$x) echo ok 2 ;; +*) echo oops 2;; +esac + +case $'abc\001def' in +$y) echo ok 3 ;; +*) echo oops 3;; +esac + +case $z in +$y) echo ok 4 ;; +*) echo oops 4;; +esac + +# no backslash before \001 +x=$'\\a\\b\\c\001\\d\\e\\f' +y='\a\b\c\d\e\f' + +case $'abc\001def' in +$x) echo ok 5 ;; +*) echo oops 5;; +esac + +case $z in +$x) echo ok 6 ;; +*) echo oops 6;; +esac + +case $'abc\001def' in +$y) echo ok 7 ;; +*) echo oops 7;; +esac + +case $z in +$y) echo ok 8 ;; +*) echo oops 8;; +esac + diff --git a/tests/case3.sub b/tests/case3.sub new file mode 100644 index 000000000..77526c322 --- /dev/null +++ b/tests/case3.sub @@ -0,0 +1,40 @@ +#!/bin/sh + +testmatch() { + case $1 in + ( $2 ) printf ok1 ;; + ( * ) printf fail1 ;; + esac + case $1,$2 in + ( $2,"$2" ) printf ok2 ;; + ( * ) printf fail2 ;; + esac + case $1, in + ( $2, ) printf ok3 ;; + ( * ) printf fail3 ;; + esac + case ,$2 in + ( ,"$2" ) printf ok4 ;; + ( * ) printf fail4 ;; + esac + case "$1,$2" in + ( $2,"$2" ) printf ok5 ;; + ( * ) printf fail5 ;; + esac + echo +} + +for c in $'\1' $'\2' $'\177'; do + echo -n "--- testing: " + echo "$c" | od -t a | awk 'NR==1 { print $2 } ' + testmatch "${c}" "\\${c}" + testmatch "${c}x" "\\${c}\\x" # bash-git fails case 2 and 5 for $'\1' + testmatch "${c}x" "${c}\\x" + testmatch "${c}x" "${c}x" + testmatch "${c}x" "\\${c}x" + testmatch "x${c}" "\\x\\${c}" + testmatch "x${c}" "x\\${c}" +done + +match() { case $1 in ( $2 ) ;; ( * ) return 1 ;; esac; } +match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 6 diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests index 0650ca987..d53e6ebc9 100644 --- a/tests/comsub-posix.tests +++ b/tests/comsub-posix.tests @@ -1,3 +1,4 @@ +: ${HOME:=/} # works right echo ab$(echo mnop)yz diff --git a/tests/comsub.right b/tests/comsub.right index 09518aae8..71bb205a8 100644 --- a/tests/comsub.right +++ b/tests/comsub.right @@ -28,6 +28,7 @@ ok 4 ok 5 ok 6 xyz +ok 7 \/tmp\/foo\/bar /tmp/foo/bar /tmp/foo/bar @@ -48,3 +49,9 @@ b c 1 2 +d \ +g +d \ +g +d \ +g diff --git a/tests/comsub.tests b/tests/comsub.tests index 4defc31eb..ed56007c0 100644 --- a/tests/comsub.tests +++ b/tests/comsub.tests @@ -44,6 +44,19 @@ bar') # long-standing parse error in all versions up through bash-4.3 echo ${foo:-$(echo a{b,c})} >/dev/null +# parsing problem based on recursively calling bison parser through bash-4.4 +for (( INDEX=0; INDEX<$((10-$(echo length $V_NAME))); INDEX++ )) +do + : +done + +# problem with four-character words followed by a metachar through bash-4.4 +comsub_foo_1() +{ + echo $(while true; do case $HOME in /*) echo abs ;; esac; done) +} + ${THIS_SH} ./comsub1.sub ${THIS_SH} ./comsub2.sub ${THIS_SH} ./comsub3.sub +${THIS_SH} ./comsub4.sub diff --git a/tests/comsub1.sub b/tests/comsub1.sub index 216e03f1f..b1af263be 100644 --- a/tests/comsub1.sub +++ b/tests/comsub1.sub @@ -52,3 +52,9 @@ echo $( # we just took and pasted in some # command substitution echo xyz ) + +# problem with parse_comsub through bash-4.4 +case $(echo $$'x\nx') in +x*) echo bad 7;; +*) echo ok 7;; +esac diff --git a/tests/comsub2.sub b/tests/comsub2.sub index a2d58ad01..d60ae6a0e 100644 --- a/tests/comsub2.sub +++ b/tests/comsub2.sub @@ -3,6 +3,6 @@ qpath='\/tmp\/foo\/bar' echo "$qpath" # it's crazy that all three of these produce the same result -echo ${qpath//\\/} -echo ${qpath//"`echo \\`"/} -echo ${qpath//`echo "\\\\\\\\"`/} +printf "%s\n" ${qpath//\\/} +printf "%s\n" ${qpath//"`printf '%s' \\`"/} +printf "%s\n" ${qpath//`printf '%s' "\\\\\\\\"`/} diff --git a/tests/comsub4.sub b/tests/comsub4.sub new file mode 100644 index 000000000..461a9ad18 --- /dev/null +++ b/tests/comsub4.sub @@ -0,0 +1,27 @@ +x=$(cat <<'EOT' +d \ +g +EOT +) + +echo "$x" +unset x + +x=$( cat <<\EOT\ +4 +d \ +g +EOT4 +) + +echo "$x" +unset x + +x=$( cat <<\EOT +d \ +g +EOT +) + +echo "$x" + diff --git a/tests/cond-regexp.sub b/tests/cond-regexp.sub deleted file mode 100644 index 724957dde..000000000 --- a/tests/cond-regexp.sub +++ /dev/null @@ -1,42 +0,0 @@ -VAR='[[:alpha:]]' - -[[ $VAR =~ '[[:alpha:]]' ]] && echo match 1 - -[[ a =~ '[[:alpha:]]' ]] || echo match 2 - -[[ a =~ [[:alpha:]] ]] && echo match 3 - -[[ a =~ $VAR ]] && echo match 4 - -[[ a =~ "$VAR" ]] || echo match 5 - -line=aab -[[ $line =~ [[:space:]]*(a)?b ]] && echo match 6 - -V="alphabet" -[[ $V == alphabet ]] && echo yes 1 -[[ $V == "alphabet" ]] && echo yes 2 -[[ $V == 'alphabet' ]] && echo yes 3 -[[ $V =~ alphabet ]] && echo yes 4 -[[ $V =~ "alphabet" ]] && echo yes 5 -[[ $V =~ 'alphabet' ]] && echo yes 6 - -DOG="Dog name - 01 - Wiggles" -REPAT='([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$' -if [[ $DOG =~ ([[:alpha:][:blank:]]*)-\ ([[:digit:]]*)\ -\ (.*)$ ]] -then - echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]} -fi -if [[ $DOG =~ $REPAT ]] -then - echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]} -fi - -[[ $REPAT =~ "$REPAT" ]] && echo rematch 1 - -v="one two buckle my shoe" -[[ ${v} =~ "one two" ]] && echo matches 7 - -[[ ${v} =~ (one two) ]] && echo matches 8 - -[[ ${v} =~ one\ two ]] && echo matches 9 diff --git a/tests/cond-regexp2.sub b/tests/cond-regexp2.sub index 71abfb70d..2bea63845 100644 --- a/tests/cond-regexp2.sub +++ b/tests/cond-regexp2.sub @@ -28,3 +28,5 @@ [[ ']' =~ [']'] ]] && echo ok 11 [[ a =~ ['a]'] ]] || echo ok 12 + +[[ "\\" =~ [^]"."] ]] || echo unexpected diff --git a/tests/cond.tests b/tests/cond.tests index 8e4548acb..2cef92931 100755 --- a/tests/cond.tests +++ b/tests/cond.tests @@ -180,6 +180,9 @@ echo ${BASH_REMATCH[@]} if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi +match() { [[ $1 == $2 ]]; } +match $'? *x\1y\177z' $'??\\*\\x\\\1\\y\\\177\\z' || echo bad 44 + foo="" [[ bar == *"${foo,,}"* ]] && echo ok 1 [[ bar == *${foo,,}* ]] && echo ok 2 diff --git a/tests/coproc.tests b/tests/coproc.tests index d347eb749..5066f7c5d 100644 --- a/tests/coproc.tests +++ b/tests/coproc.tests @@ -30,8 +30,8 @@ read LINE <&${REFLECT[0]} echo $LINE { sleep 1; kill $REFLECT_PID; } & -wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?" -grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || { +wait $REFLECT_PID >$TMPOUT 2>&1 || { status=$? ; echo "coproc.tests: REFLECT: status $status" ; } +[[ $status < 128 || $status == 143 ]] || { echo "coproc.tests: wait for REFLECT failed" >&2 } rm -f $TMPOUT diff --git a/tests/dollar-at-star b/tests/dollar-at-star index 2d2a1b66e..0f713dc39 100755 --- a/tests/dollar-at-star +++ b/tests/dollar-at-star @@ -6,6 +6,23 @@ recho "$*" recho $@ recho $* +foo=$* +foo=$@ + +foo="$*" +foo="$@" + +unset -v bar + +foo=${bar:-$*} +foo=${bar:-$@} + +foo=${bar:-"$*"} +foo=${bar:-"$@"} + +foo=${!*} +foo=${!@} + set a b recho "$*" @@ -271,4 +288,18 @@ ${THIS_SH} ./dollar-star6.sub # problem through bash-4.2 ${THIS_SH} ./dollar-star7.sub +# tests for expansions of $* (unquoted) when IFS is null and word splitting is +# not going to be performed. +# problem through bash-4.4 in some parameter expansion contexts +${THIS_SH} ./dollar-star8.sub + +# tests for expansions of "$@" when there are no positional parameter or when +# $1 == '' and the expansion is preceded by something that results in a quoted +# null string +${THIS_SH} ./dollar-at7.sub + +# tests for expansions of $* when in an assignment context (no splitting) and +# IFS is null +${THIS_SH} ./dollar-star9.sub + exit 0 diff --git a/tests/dollar-at-star4.sub b/tests/dollar-at-star4.sub index 690eb677b..be2892ddc 100644 --- a/tests/dollar-at-star4.sub +++ b/tests/dollar-at-star4.sub @@ -33,10 +33,12 @@ unset a unset IFS set a b "c d" printf '<%s>' $* ; echo +printf '<%s>' ${q-$*} ; echo IFS= set a b "c d" printf '<%s>' $* ; echo +printf '<%s>' ${q-$*} ; echo IFS=: set a b diff --git a/tests/dollar-at7.sub b/tests/dollar-at7.sub new file mode 100644 index 000000000..311a6fef3 --- /dev/null +++ b/tests/dollar-at7.sub @@ -0,0 +1,46 @@ +set -- '' + +recho 1 ''"$@" +recho 2 """$@" + +recho 3 "$@""$@" +recho 4 "$x""$@" + +set -- + +echo ----- +recho 1 ''"$@" +recho 2 """$@" + +recho 3 "$@""$@" +recho 4 "$x""$@" + +set -- X + +echo ------ +recho 1 ''"${@/*}" +recho 2 """${@/*}" + +recho 3 "$x""${@/*}" + +recho 4 ''"${@#X}" +recho 5 """${@#X}" + +recho 6 "$x""${@#X}" + +set -- + +echo ----- +recho 1 ''"${@/*}" +recho 2 """${@/*}" + +recho 3 "$x""${@/*}" + +recho 4 ''"${@#X}" +recho 5 """${@#X}" + +recho 6 "$x""${@#X}" + +echo ----- +recho 1 "$novar${*}$(echo)" +recho 2 ''"$novar${@}$(echo)" diff --git a/tests/dollar-star8.sub b/tests/dollar-star8.sub new file mode 100644 index 000000000..72ba10807 --- /dev/null +++ b/tests/dollar-star8.sub @@ -0,0 +1,21 @@ +IFS= +set "abc" "def ghi" "jkl" + +set ${1+$*} +printf '<%s>\n' "$#" "$@" + +set "abc" "def ghi" "jkl" +set $* +printf '<%s>\n' "$#" "$@" + +printf '<%s>\n' $* ; +printf '<%s>\n' ${q:-$*} +printf '<%s>\n' "${q:-$*}" + +IFS=: +printf '<%s>\n' $* ; +printf '<%s>\n' ${q:-$*} +printf '<%s>\n' "${q:-$*}" + +unset -v IFS +printf '<%s>\n' $* $@ diff --git a/tests/dollar-star9.sub b/tests/dollar-star9.sub new file mode 100644 index 000000000..26d0ed21e --- /dev/null +++ b/tests/dollar-star9.sub @@ -0,0 +1,46 @@ +set -- 1 2 + +IFS= + +a=$* b=${*} +c=${*/} d=${*#} e=${*%} f=${*:1} +printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f"; echo + +unset a b c d e f +: ${a=$*} ${b=${*}} ${c=${*/}} +: ${d=${*#}} ${e=${*%}} ${f=${*:1}} +printf '<%s>' "$a" "$b" "$c" "$d" "$e" "$f" ; echo + +unset f g +f=${*,,} g=${*@Q} +printf '<%s>' "$f" "$g" ; echo + +unset -v a b c d e f g +unset var + +# resetting IFS here + +IFS=$' \t\n' + +printf '%s\n' "${*:1}" +var=${*:1}; printf '%s\n' "$var" +var="${*:1}"; printf '%s\n' "$var" + +unset var +recho ${var-${*}} +recho ${var-${*:1}} +recho "${var-${*:1}}" +recho ${var-"${*:1}"} + +unset var +recho ${var=${*}} +printf 'var=%s\n' "$var" +unset var +recho ${var=${*:1}} +printf 'var=%s\n' "$var" + +a=${*:1} +recho "$a" + +: ${b=${*:1}} +recho "$b" diff --git a/tests/dollar.right b/tests/dollar.right index 1e48c24ee..d72361f9d 100644 --- a/tests/dollar.right +++ b/tests/dollar.right @@ -177,6 +177,8 @@ ab a b a b + + @@ -478,3 +480,100 @@ argv[2] = argv[3] = argv[4] = argv[1] = +<3> + + + +<3> + + + + + + + + + + + + + + + + + + + + + + + + + +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[1] = <4> +argv[2] = <> +------ +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +argv[1] = <5> +argv[2] = <> +argv[1] = <6> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +argv[1] = <3> +argv[2] = <> +argv[1] = <4> +argv[2] = <> +argv[1] = <5> +argv[2] = <> +argv[1] = <6> +argv[2] = <> +----- +argv[1] = <1> +argv[2] = <> +argv[1] = <2> +argv[2] = <> +<12><12><12><12><12><12> +<12><12><12><12><12><12> +<12><'1''2'> +1 2 +1 2 +1 2 +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +var=1 2 +argv[1] = <1> +argv[2] = <2> +var=1 2 +argv[1] = <1 2> +argv[1] = <1 2> diff --git a/tests/dstack2.tests b/tests/dstack2.tests index d902bffb4..3aa105b3d 100644 --- a/tests/dstack2.tests +++ b/tests/dstack2.tests @@ -1,3 +1,4 @@ +wdir=$PWD cd / echo expect '~1' @@ -31,3 +32,5 @@ dirs -v -1 echo these lines should be the same dirs -0 echo ~-0 ${DIRSTACK[NDIRS]} + +cd "$wdir" diff --git a/tests/dynvar.right b/tests/dynvar.right new file mode 100644 index 000000000..e1344c60d --- /dev/null +++ b/tests/dynvar.right @@ -0,0 +1,7 @@ +BASHPID ok +BASH_ARGV0 ok +BASH_ARGV0 ok +SECONDS ok +EPOCHSECONDS ok +EPOCHREALTIME ok +echo $BASH_COMMAND diff --git a/tests/dynvar.tests b/tests/dynvar.tests new file mode 100644 index 000000000..a01f5ed28 --- /dev/null +++ b/tests/dynvar.tests @@ -0,0 +1,77 @@ +# specvar -- test some of the dynamic variables + +# BASHPID +pid=$$ +bpid=$BASHPID +subpid=$( (echo $BASHPID) ) + +if [ "$bpid" -ne "$subpid" ]; then echo BASHPID ok; fi + +# BASH_ARGV0 + +BASH_ARGV0=hello +case $0 in +hello) echo BASH_ARGV0 ok ;; +*) echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;; +esac + +setarg0() +{ + BASH_ARGV0="$1" +} + +setarg0 arg0 +case $0 in +arg0) echo BASH_ARGV0 ok ;; +*) echo "BASH_ARGV0 mismatch: $BASH_ARGV0 ($0)" >&2 ;; +esac + +# SECONDS +before=$SECONDS +sleep 2 +after=$SECONDS + +if (( $after > $before )); then echo SECONDS ok; fi +unset before after + +# EPOCHSECONDS + +# not exact, but should work + +now1=$(perl -e 'print time') +now2=$EPOCHSECONDS + +case $now1 in +$now2) echo EPOCHSECONDS ok ;; +*) echo "current time via perl and EPOCHSECONDS possible mismatch|$now1|$now2" >&2 ;; +esac +unset now1 now2 + +LC_ALL=C # force decimal point to `.' +now1=$EPOCHREALTIME +now2=$EPOCHREALTIME +sec1=${now1%%.*} +sec2=${now2%%.*} + +msec1=${now1##*.} +msec2=${now2##*.} +# cut off leading zeros +shopt -s extglob +msec1=${msec1##*(0)} +msec2=${msec2##*(0)} + +dsec=$(( $sec2 - $sec1 )) +dmsec=$(( $msec2 - $msec1 )) +if (( $dmsec < 0 )); then + dmsec=$(( dmsec + 1000000 )) + dsec=$(( desc - 1 )) +fi + +# not a real test, but ok for a start +if (( $dmsec < 1000000 )); then echo EPOCHREALTIME ok; fi + +${THIS_SH} -c 'echo $BASH_COMMAND' + +# FUNCNAME tested in func.tests +# RANDOM tested in varenv.sh +# LINENO tested in dbg-support diff --git a/tests/errors.right b/tests/errors.right index 362855e3b..4bf478b07 100644 --- a/tests/errors.right +++ b/tests/errors.right @@ -120,17 +120,61 @@ after readonly assignment ./errors4.sub: line 7: var: readonly variable ./errors5.sub: line 6: array: unbound variable ./errors5.sub: line 7: array: unbound variable -./errors5.sub: line 10: 7: unbound variable +./errors5.sub: line 8: array[7]: unbound variable ./errors5.sub: line 11: 7: unbound variable +./errors5.sub: line 12: 7: unbound variable after 1: 1 after 2: 1 after 3: 1 array after 1: 1 array after 2: 1 -./errors6.sub: line 18: ${-3}: bad substitution -./errors6.sub: line 19: -3: bad substitution +./errors6.sub: uvar: parameter not set +./errors6.sub: uvar: parameter null or not set + +./errors6.sub: uvar: parameter null or not set +./errors6.sub: line 25: ${-3:-${-3}}: bad substitution +./errors6.sub: line 26: ${-3}: bad substitution +./errors6.sub: line 27: -3: invalid variable name after indir: 1 -./errors6.sub: line 18: ${-3}: bad substitution -./errors6.sub: line 19: -3: bad substitution +./errors6.sub: line 30: -3: invalid variable name + +unset +./errors6.sub: line 37: var: invalid indirect expansion +./errors6.sub: line 38: var: invalid indirect expansion +./errors6.sub: line 41: invalid-ident: invalid variable name +./errors6.sub: line 42: invalid-ident: invalid variable name +./errors6.sub: line 43: invalid-ident: invalid variable name +./errors6.sub: uvar: parameter not set +./errors6.sub: uvar: parameter null or not set + +./errors6.sub: uvar: parameter null or not set +./errors6.sub: line 25: ${-3:-${-3}}: bad substitution +./errors6.sub: line 26: ${-3}: bad substitution +./errors6.sub: line 27: -3: invalid variable name after indir: 1 -./errors.tests: line 278: `!!': not a valid identifier +./errors6.sub: line 30: -3: invalid variable name + +unset +./errors6.sub: line 37: var: invalid indirect expansion +./errors6.sub: line 38: var: invalid indirect expansion +./errors6.sub: line 41: invalid-ident: invalid variable name +./errors6.sub: line 42: invalid-ident: invalid variable name +./errors6.sub: line 43: invalid-ident: invalid variable name +./errors7.sub: line 8: x: readonly variable +./errors7.sub: line 8: notthere: command not found +after no such command: 127 +./errors7.sub: line 10: x: readonly variable +echo builtin +after non-special builtin: 0 +./errors7.sub: line 12: x: readonly variable +after special builtin: 0 +./errors7.sub: line 14: x: readonly variable +./errors7.sub: line 8: x: readonly variable +./errors7.sub: line 8: notthere: command not found +after no such command: 127 +./errors7.sub: line 10: x: readonly variable +echo builtin +after non-special builtin: 0 +./errors7.sub: line 12: x: readonly variable +./errors7.sub: line 14: x: readonly variable +./errors.tests: line 281: `!!': not a valid identifier diff --git a/tests/errors.tests b/tests/errors.tests index ff542f783..4183d0241 100644 --- a/tests/errors.tests +++ b/tests/errors.tests @@ -270,6 +270,9 @@ ${THIS_SH} ./errors5.sub ${THIS_SH} ./errors6.sub THIS_SH="${THIS_SH} -o posix" ${THIS_SH} ./errors6.sub +${THIS_SH} ./errors7.sub +${THIS_SH} -o posix ./errors7.sub + # this must be last! # in posix mode, a function name must be a valid identifier # this can't go in posix2.tests, since it causes the shell to exit diff --git a/tests/errors5.sub b/tests/errors5.sub index 7d9068b76..112b2a113 100644 --- a/tests/errors5.sub +++ b/tests/errors5.sub @@ -5,6 +5,7 @@ set -u ( echo ${#array} ) ( echo ${array} ) +( echo ${array[7]} ) set -- 1 2 3 ( echo ${#7} ) diff --git a/tests/errors6.sub b/tests/errors6.sub index 3c05625a4..b80580e73 100644 --- a/tests/errors6.sub +++ b/tests/errors6.sub @@ -15,6 +15,29 @@ echo array after 1: $?' 2>/dev/null ${THIS_SH} -c 'typeset -A v ; v["0"]=one ; echo ${v[ ]} echo array after 2: $?' 2>/dev/null +${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub +${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub +export uvar= +${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub +${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub +unset uvar + +echo "${-3:-${-3}}" echo ${-3} x=-3; echo ${!x} echo after indir: $? + +function ivar() { echo -n "${!1:-${1}}"; } +ivar -3 + +foo=bar +echo ${!foo} +echo ${!foo:-unset} + +echo ${!var:-unset} +echo ${!var+unset} + +foo=invalid-ident +echo ${!foo} +echo ${!foo:-unset} +echo ${!foo+unset} diff --git a/tests/errors7.sub b/tests/errors7.sub new file mode 100644 index 000000000..067867a1f --- /dev/null +++ b/tests/errors7.sub @@ -0,0 +1,15 @@ +: ${THIS_SH:=./bash} +readonly x=4 + +# in posix mode, these are all variable assignment errors, so strict conformance +# implies that we exit after any of them. ksh93 doesn't do that. we more-or-less +# emulate the ksh93 behavior + +x=8 notthere +echo after no such command: $? +x=8 echo echo builtin +echo after non-special builtin: $? +( x=8 : nosuchdir +echo after special builtin: $? ) +( x=8 $nocmd +echo after assignment error: $? ) diff --git a/tests/exec12.sub b/tests/exec12.sub index 4bd6121b3..bc627d2d9 100644 --- a/tests/exec12.sub +++ b/tests/exec12.sub @@ -1,5 +1,6 @@ : ${TMPDIR:=/var/tmp} TMPFILE=$TMPDIR/exitcode +trap 'rm -f $TMPFILE' 0 rm -f $TMPFILE set -e diff --git a/tests/exec7.sub b/tests/exec7.sub index ea2fd0668..0267505c4 100644 --- a/tests/exec7.sub +++ b/tests/exec7.sub @@ -18,3 +18,6 @@ chmod 755 testb/foo PATH=$TMPDIR/testa:$TMPDIR/testb $THIS_SH -c foo rm -rf testa testb + +cd $OLDPWD +exit 0 diff --git a/tests/execscript b/tests/execscript index 3415ae3c6..c1819de79 100644 --- a/tests/execscript +++ b/tests/execscript @@ -59,10 +59,10 @@ echo $? echo $? # kill two birds with one test -- test out the BASH_ENV code -echo echo this is bashenv > /tmp/bashenv -export BASH_ENV=/tmp/bashenv +echo echo this is bashenv > $TMPDIR/bashenv +export BASH_ENV=$TMPDIR/bashenv ${THIS_SH} ./exec3.sub -rm -f /tmp/bashenv +rm -f $TMPDIR/bashenv unset BASH_ENV # we're resetting the $PATH to empty, so this should be last @@ -108,7 +108,7 @@ ${THIS_SH} ./exec6.sub # checks for properly deciding what constitutes an executable file ${THIS_SH} ./exec7.sub -${THIS_SH} -i ./exec8.sub +${THIS_SH} -i ${PWD}/exec8.sub ${THIS_SH} ./exec9.sub diff --git a/tests/exp.right b/tests/exp.right index 96617397d..599482a7a 100644 --- a/tests/exp.right +++ b/tests/exp.right @@ -210,11 +210,13 @@ argv[1] = argv[2] = argv[1] = argv[2] = +./exp7.sub: line 5: INFORM: dequote_string: string with bare CTLESC argv[1] = <^A> argv[1] = <3> argv[2] = <^C> argv[3] = <^C> argv[4] = <^C> +./exp7.sub: line 10: INFORM: dequote_string: string with bare CTLESC argv[1] = <^A> argv[1] = argv[1] = @@ -291,7 +293,9 @@ var=abc:def ghi:jkl abcdef ghijkl abcdef ghijkl abcdef ghijkl -abcdef ghijkl +abc +def ghi +jkl abcdef ghijkl abcdef ghijkl abcdef ghijkl @@ -332,3 +336,68 @@ jkl [] [foo] [] +< A >< B >< A >< B > +< A >< B >< A >< B > +< A >< B >< a >< b > +< A >< B >< A >< B > +< A >< B ><' A '><' B '> +----- +< A >< B >< A >< B > +< A >< B >< A >< B > +< A >< B >< a >< b > +< A >< B >< A >< B > +< A >< B ><' A '><' B '> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <12> +argv[1] = <12> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = < > +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +abcdefg +abcdefg +abcdefg +abcdefg +cdefg +abcdefg +abcde +abcdefg diff --git a/tests/exp.tests b/tests/exp.tests index b446d6372..6e364f9ca 100644 --- a/tests/exp.tests +++ b/tests/exp.tests @@ -405,3 +405,6 @@ ${THIS_SH} ./exp6.sub ${THIS_SH} ./exp7.sub ${THIS_SH} ./exp8.sub ${THIS_SH} ./exp9.sub +${THIS_SH} ./exp10.sub +${THIS_SH} ./exp11.sub +${THIS_SH} ./exp12.sub diff --git a/tests/exp10.sub b/tests/exp10.sub new file mode 100644 index 000000000..6592bab97 --- /dev/null +++ b/tests/exp10.sub @@ -0,0 +1,26 @@ +set -- ' A ' ' B ' +IFS= + +printf '<%s>' ${*} ${*##} +echo +printf '<%s>' ${*} ${*/} +echo +printf '<%s>' ${*} ${*,,} +echo +printf '<%s>' ${*} ${*:1:2} +echo +printf '<%s>' ${*} ${*@Q} +echo + +echo ----- + +printf '<%s>' ${@} ${@##} +echo +printf '<%s>' ${@} ${@/} +echo +printf '<%s>' ${@} ${@,,} +echo +printf '<%s>' ${@} ${@:1:2} +echo +printf '<%s>' ${@} ${@@Q} +echo diff --git a/tests/exp11.sub b/tests/exp11.sub new file mode 100644 index 000000000..cae7b19cd --- /dev/null +++ b/tests/exp11.sub @@ -0,0 +1,92 @@ +set -- '1 2' + +unset var +recho ${var-${*:1}} + +unset var +recho ${var=$*} + +unset var +recho ${var=${*:1}} +recho "$var" + +# posix interp 221 +unset var +recho ${var:-a\ b} + +recho ${var:=a\ b} +recho "$var" + +set -- 1 2 +IFS= + +unset a b c +recho $* +recho ${a-$*} +recho ${b-${*/}} +recho ${c=${*/}} +recho "$c" +recho ${b-${*,,}} +recho ${d-${*,,}} + +unset -v a b c +IFS=$' \t\n' + +set -- ' ' +A=(' ') + +IFS= +unset var +var=${*@E} +recho "$var" + +unset var +var=${A[*]@E} +recho "$var" + +unset var +var=${@@E} +recho "$var" + +unset var +var=${A[@]@E} +recho "$var" + +unset novar +recho ${novar-${A[*]@E}} + +unset -v var novar +IFS=$' \t\n' + +set -- 1 2 +A=( 1 2 ) +IFS= + +a=$* +recho "$a" +b=${*@E} +recho "$b" + +unset a b +a=${A[*]} +recho "$a" +b=${A[*]@E} +recho "$b" + +set -- $'\t' +A=$1 + +IFS=$1 +[[ ${A[@]} ]] && echo ok 1 +[[ ${A[*]} ]] && echo ok 2 +[[ ${A[0]} ]] && echo ok 3 + +IFS=$' \t\n' +[[ ${A[@]} ]] && echo ok 4 +[[ ${A[*]} ]] && echo ok 5 +[[ ${A[0]} ]] && echo ok 6 + +IFS= +[[ ${A[@]} ]] && echo ok 7 +[[ ${A[*]} ]] && echo ok 8 +[[ ${A[0]} ]] && echo ok 9 diff --git a/tests/exp12.sub b/tests/exp12.sub new file mode 100644 index 000000000..0aaa2f441 --- /dev/null +++ b/tests/exp12.sub @@ -0,0 +1,38 @@ +# force single-byte versions of these functions + +export LANG=C + +# remove shortest trailing match +x=file.c +recho ${x%.c}.o + +# remove longest trailing match +x=posix/src/std +recho ${x%%/*} + +# remove shortest leading pattern +x=$HOME/src/cmd +recho ${x#$HOME} + +# remove longest leading pattern +x=/one/two/three +recho ${x##*/} + +# and no match thrown in for good measure +recho ${x#nomatch} + +foo=abcdefg + +# fail +echo ${foo%ab} +echo ${foo%def} + +echo ${foo#fg} +echo ${foo#def} + +# succeed +echo ${foo#ab} +echo ${foo#def} + +echo ${foo%fg} +echo ${foo%def} diff --git a/tests/exp5.sub b/tests/exp5.sub index 9346b5792..52dd4a15e 100644 --- a/tests/exp5.sub +++ b/tests/exp5.sub @@ -1,15 +1,14 @@ # expansions involving patterns - var='[hello' echo "${var//[/}" red='\[\e[0;31m\]' -echo "${red//\\[\\e/}" +printf "%s\n" "${red//\\[\\e/}" foo="${red//\\[\\e/}" # foo == [0;31m\] -echo "${foo//[0;31m\\/}" +printf "%s\n" "${foo//[0;31m\\/}" echo "${var//[]/}" echo "${red//[]/}" diff --git a/tests/exp8.sub b/tests/exp8.sub index 99340838b..ff44febcf 100644 --- a/tests/exp8.sub +++ b/tests/exp8.sub @@ -10,11 +10,11 @@ declare -p var | sed -n l recho ${var@Q} recho ${var@P} -echo ${var@A} +echo -E ${var@A} unset array array=( [$'x\001y\177z']=foo ) # should be error -echo ${array[@]@A} +echo -E ${array[@]@A} unset array declare -a array=([0]=$'x\001y\177z') @@ -23,9 +23,9 @@ declare -p array unset array array=( "$var" ) recho ${array[@]} -echo ${array[@]@A} +echo -E ${array[@]@A} unset array declare -A array array=( [$'x\001y\177z']=$'a\242b\002c' ) -echo ${array[@]@A} +echo -E ${array[@]@A} diff --git a/tests/extglob.right b/tests/extglob.right index efb7e5fbb..691f6879d 100644 --- a/tests/extglob.right +++ b/tests/extglob.right @@ -94,14 +94,23 @@ a ab a . .. . .. a.log +*(foo) +*(foo|bar) a.log ?(foo) a.log a.log . .. +. .. +a.log a.log .x .y .z a b c .x .y .z a b c a b c a b c +a b c +a b c +.x .y .z a b c +.x .y .z a b c +* diff --git a/tests/extglob.tests b/tests/extglob.tests index a51c4db15..32a6569fb 100644 --- a/tests/extglob.tests +++ b/tests/extglob.tests @@ -374,4 +374,6 @@ ${THIS_SH} ./extglob3.sub ${THIS_SH} ./extglob4.sub +${THIS_SH} ./extglob5.sub + exit 0 diff --git a/tests/extglob1a.sub b/tests/extglob1a.sub index e029ea491..686dab74b 100644 --- a/tests/extglob1a.sub +++ b/tests/extglob1a.sub @@ -12,5 +12,5 @@ echo a!(x) echo a*?(x) echo a?(x) -builtin cd / +builtin cd $OLDPWD rm -rf $TESTDIR diff --git a/tests/extglob3.sub b/tests/extglob3.sub index 94567ee99..3f51c40cd 100644 --- a/tests/extglob3.sub +++ b/tests/extglob3.sub @@ -1,5 +1,5 @@ shopt -s extglob -DIR=/tmp/extglob-$$ +DIR=$TMPDIR/extglob-$$ mkdir $DIR cd $DIR @@ -7,15 +7,18 @@ touch a.log echo *(.) echo *(.)* +echo *(foo) +echo *(foo|bar) echo ?(foo)* echo ?(foo) echo *(foo)* echo @(|foo)* echo *(foo).* +echo *(foo|bar).* echo !(foo)* +echo !(foo|bar)* cd $OLDPWD rm -rf $DIR - diff --git a/tests/extglob4.sub b/tests/extglob4.sub index 2ec8f3197..2b4c53c9f 100644 --- a/tests/extglob4.sub +++ b/tests/extglob4.sub @@ -19,7 +19,14 @@ echo @(*|.!(|.)) # wrong, adds . and .. echo @(*|@(f)) # ?? echo @(*|@(ff)) -cd / +echo !(f) +echo !(f)!(f) + +shopt -s dotglob +echo @(*|@(f)) +echo @(*|@(ff)) + +cd $OLDPWD rm -rf $GTDIR [[ a = a*?(/)b ]] && echo bad match 1 diff --git a/tests/extglob5.sub b/tests/extglob5.sub new file mode 100644 index 000000000..d400f8390 --- /dev/null +++ b/tests/extglob5.sub @@ -0,0 +1,18 @@ +# globignore extglob patterns containing colons -- problem until bash-4.2 + +: ${TMPDIR:=/tmp} +TESTDIR=$TMPDIR/bash-globignore-$$ +[ -d "$TESTDIR" ] || mkdir "$TESTDIR" + +cd "$TESTDIR" || exit 2 + +shopt -s extglob +GLOBIGNORE='+([^[:alnum:]]):@([-.,:; _]):[![:alnum:]]' + +touch ';' '++' +echo * + +rm ';' '++' + +cd $OLDPWD +rmdir $TESTDIR diff --git a/tests/getopts5.sub b/tests/getopts5.sub index 30614ef92..874b28107 100644 --- a/tests/getopts5.sub +++ b/tests/getopts5.sub @@ -2,7 +2,7 @@ getop () { - local OPTIND + local OPTIND=1 local OPTERR=1 echo getop: OPTERR=$OPTERR diff --git a/tests/glob.right b/tests/glob.right index 04a0fd5f0..83b7bc7a4 100644 --- a/tests/glob.right +++ b/tests/glob.right @@ -1,4 +1,61 @@ foo/bar foobar/bar +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +b +argv[1] = +argv[1] = +argv[1] = +argv[1] = +0000000 141 243 134 142 +0000004 +ok 6 +ok 7 +invalid bracket expression +== LANG=C == +[[:alpha:] +ok 1 +[a +[[:alpha:] +ok 2 +ok 3 +== LANG=en_US.UTF-8 == +[[:alpha:] +ok 1 +[a +[[:alpha:] +ok 2 +ok 3 +invalid character class +== LANG=C == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +== LANG=en_US.UTF-8 == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +invalid collating symbols +== LANG=C == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +== LANG=en_US.UTF-8 == +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 argv[1] = argv[2] = argv[3] = @@ -13,7 +70,7 @@ argv[2] = argv[3] = argv[4] = tmp/l1 tmp/l2 tmp/*4 tmp/l3 -./glob.tests: line 44: no match: tmp/*4 +./glob.tests: line 46: no match: tmp/*4 argv[1] = argv[1] = <*> argv[1] = diff --git a/tests/glob.tests b/tests/glob.tests index d32988bc4..7ae517237 100644 --- a/tests/glob.tests +++ b/tests/glob.tests @@ -9,10 +9,12 @@ expect() # First, a test that bash-2.01.1 fails ${THIS_SH} ./glob1.sub +${THIS_SH} ./glob2.sub +${THIS_SH} ./glob3.sub MYDIR=$PWD # save where we are -TESTDIR=/tmp/glob-test +TESTDIR=$TMPDIR/glob-test-$$ mkdir $TESTDIR builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } rm -rf * diff --git a/tests/glob1.sub b/tests/glob1.sub index 8745cd99a..6b3b8ad1a 100644 --- a/tests/glob1.sub +++ b/tests/glob1.sub @@ -1,7 +1,10 @@ # bash-2.01.1 failed this test -FN=/tmp/bash-glob.$$ +: ${TMPDIR:=/var/tmp} + +FN=$TMPDIR/bash-glob.$$ mkdir $FN cd $FN + mkdir foo mkdir foobar touch foo/bar @@ -10,5 +13,5 @@ chmod 311 foo foobar echo f*/bar chmod 777 foo foobar -cd / +cd $OLDPWD rm -rf $FN diff --git a/tests/glob2.sub b/tests/glob2.sub new file mode 100644 index 000000000..d33013b67 --- /dev/null +++ b/tests/glob2.sub @@ -0,0 +1,44 @@ +. ./test-glue-functions + +var='ab\' + +case $var in +ab\\) echo ok 1;; +*) echo bad 1;; +esac + +case $var in +$var) echo ok 2;; +*) echo bad 2;; +esac + +case $var in +'ab\') echo ok 3;; +*) echo bad 3;; +esac + +[[ $var = $var ]] && echo ok 4 +[[ $var = $'ab\134' ]] && echo ok 5 + +LC_ALL=zh_HK.big5hkscs + +read a b c <<< $'\u3b1 b c\n' +echo $b +unset a b c + +export alpha=$'\u3b1' + +printf -v v 'A%sB' "$alpha" +recho "$v" +IFS=$alpha read a b c <<<"$v" +recho "$a" +recho "$b" +unset a b v + +recho "a${alpha}b" +printf "%s" "a${alpha}b" | LC_ALL=C od -b | _intl_normalize_spaces + +a=$'\u3b1' +[[ $a = $a ]] && echo ok 6 + +LC_ALL=zh_HK.big5hkscs ${THIS_SH} -c $'[[ \u3b1 = \u3b1 ]]' && echo ok 7 diff --git a/tests/glob3.sub b/tests/glob3.sub new file mode 100644 index 000000000..378234dbc --- /dev/null +++ b/tests/glob3.sub @@ -0,0 +1,123 @@ +: ${TMPDIR:=/var/tmp} +cd $TMPDIR + +matchfunc() +{ + echo == LANG=$LANG == + + touch a p + echo [[:alpha:] + rm a p + + case l in + [[:alpha:]) echo bad 1;; + *) echo ok 1;; + esac + + touch '[a' '[x' + echo [[:alpha:] + rm '[a' + echo [[:alpha:] + rm '[x' + + case [a in + [[:alpha:]) echo ok 2;; + *) echo bad 2;; + esac + + case [x in + [[:alpha:]) echo bad 3;; + *) echo ok 3;; + esac +} + +echo invalid bracket expression +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc + +unset -f matchfunc + +matchfunc() +{ + echo == LANG=$LANG == + + case a] in + [[:aleph:]]) echo bad 1;; + *) echo ok 1;; + esac + + case a in + [[:aleph:]]) echo bad 2;; + *) echo ok 2;; + esac + + case a] in + [[:"alpha":]]) echo bad 3;; + *) echo ok 3;; + esac + + case a in + [[:"alpha":]]) echo bad 4;; + *) echo ok 4;; + esac + + case a in + [abc[:foo:]]) echo ok 5;; + *) echo bad 5 ;; + esac + + case a in + [[:foo:]abc]) echo ok 6;; + *) echo bad 6 ;; + esac +} + +echo invalid character class +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc + +unset -f matchfunc + +matchfunc() +{ + echo == LANG=$LANG == + + case h in + [[.hyphen.]) echo bad 1;; + *) echo ok 1;; + esac + + case - in + [[.hyphen.]]) echo ok 2;; + *) echo bad 2;; + esac + + case slash in + [[.slash.]]) echo bad 3;; + *) echo ok 3;; + esac + + case a in + [abc[.nonsense.]]) echo ok 4;; + *) echo bad 4 ;; + esac + + case a in + [[.nonsense.]abc]) echo ok 5;; + *) echo bad 5 ;; + esac +} + +echo invalid collating symbols + +export LANG=C +matchfunc + +export LANG=en_US.UTF-8 +matchfunc diff --git a/tests/globstar2.sub b/tests/globstar2.sub index f4bb1b1c4..4e1a02455 100644 --- a/tests/globstar2.sub +++ b/tests/globstar2.sub @@ -1,5 +1,6 @@ olddir=$PWD -EMPTY=/tmp/empty +: ${TMPDIR:=/var/tmp} +EMPTY=$TMPDIR/empty shopt -s globstar s() diff --git a/tests/heredoc.right b/tests/heredoc.right index 137a2956d..f6541dcaf 100644 --- a/tests/heredoc.right +++ b/tests/heredoc.right @@ -20,7 +20,7 @@ jkl mno fff is a function fff () { - ed /tmp/foo > /dev/null < /dev/null /^name/d w q @@ -31,7 +31,7 @@ ENDOFINPUT fff is a function fff () { - ed /tmp/foo > /dev/null < /dev/null /^name/d w q @@ -43,11 +43,11 @@ foo is a function foo () { echo; - cat <\END -./heredoc3.sub: line 78: warning: here-document at line 76 delimited by end-of-file (wanted `EOF') -./heredoc3.sub: line 79: syntax error: unexpected end of file +./heredoc3.sub: line 85: warning: here-document at line 83 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 86: syntax error: unexpected end of file +heredoc1 +EOF +Ok:0 +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = comsub here-string ./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF') hi diff --git a/tests/heredoc.tests b/tests/heredoc.tests index ebc770ac0..303949f48 100644 --- a/tests/heredoc.tests +++ b/tests/heredoc.tests @@ -59,22 +59,22 @@ cat <<- EOF EOF # check appending of text to file from here document -rm -f /tmp/bash-zzz -cat > /tmp/bash-zzz << EOF +rm -f ${TMPDIR}/bash-zzz +cat > ${TMPDIR}/bash-zzz << EOF abc EOF -cat >> /tmp/bash-zzz << EOF +cat >> ${TMPDIR}/bash-zzz << EOF def ghi jkl mno EOF -cat /tmp/bash-zzz -rm -f /tmp/bash-zzz +cat ${TMPDIR}/bash-zzz +rm -f ${TMPDIR}/bash-zzz # make sure command printing puts the here-document as the last redirection # on the line, and the function export code preserves syntactic correctness fff() { - ed /tmp/foo </dev/null + ed ${TMPDIR}/foo </dev/null /^name/d w q @@ -90,8 +90,8 @@ ${THIS_SH} ./heredoc1.sub # test heredocs in command substitutions ${THIS_SH} ./heredoc2.sub - ${THIS_SH} ./heredoc3.sub +${THIS_SH} ./heredoc4.sub echo $( cat <<< "comsub here-string" diff --git a/tests/heredoc3.sub b/tests/heredoc3.sub index baf91c140..a5a2fbc02 100644 --- a/tests/heredoc3.sub +++ b/tests/heredoc3.sub @@ -1,4 +1,5 @@ SAVEPWD=$PWD +: ${TMPDIR:=/tmp} cd $TMPDIR || echo "heredoc3.sub: cannot cd to $TMPDIR" >&2 text=$(cat <\END' +echo -E end 'hello\END' + +# gprof +if [ -n "$GMON_OUT_PREFIX" ]; then + mv ${GMON_OUT_PREFIX}.[0-9]* "$SAVEPWD" >/dev/null 2>&1 +fi +cd "$SAVEPWD" # this has to be last -- results in a syntax error # doesn't currently parse because EOF is not on a line by itself -- should it? diff --git a/tests/heredoc4.sub b/tests/heredoc4.sub new file mode 100644 index 000000000..381b64a97 --- /dev/null +++ b/tests/heredoc4.sub @@ -0,0 +1,12 @@ +cat < +argv[1] = <*> diff --git a/tests/ifs.tests b/tests/ifs.tests index 763e2a001..717690059 100644 --- a/tests/ifs.tests +++ b/tests/ifs.tests @@ -59,3 +59,5 @@ IFS=: export x echo $x IFS="$DEFIFS" + +${THIS_SH} ./ifs1.sub diff --git a/tests/ifs1.sub b/tests/ifs1.sub new file mode 100644 index 000000000..6ea489af6 --- /dev/null +++ b/tests/ifs1.sub @@ -0,0 +1,14 @@ +: ${TMPDIR:=/tmp} +dir=bashtest-$$ + +mkdir $TMPDIR/$dir || exit 1 +touch $TMPDIR/$dir/file || exit 2 +cd $TMPDIR/$dir || exit 3 + +IFS='?*[]' +recho * + +recho "*" + +cd $OLDPWD +rm -rf $TMPDIR/$dir diff --git a/tests/jobs.right b/tests/jobs.right index c3ee9443a..0e9d1d19e 100644 --- a/tests/jobs.right +++ b/tests/jobs.right @@ -16,31 +16,32 @@ Waiting for job 6 job 6 returns 0 Waiting for job 7 job 7 returns 0 -[1] Running sleep 5 & -[2] Running sleep 5 & -[3] Running sleep 5 & -[4]- Running sleep 5 & -[5]+ Running ( sleep 5; exit 4 ) & +[1] Running sleep 2 & +[2] Running sleep 2 & +[3] Running sleep 2 & +[4]- Running sleep 2 & +[5]+ Running ( sleep 2; exit 4 ) & 4 0 i killed it 12 [1]- Running sleep 20 & [3]+ Running sleep 20 & +child1 exit status 0 0 -./jobs.tests: line 22: wait: %1: no such job -./jobs.tests: line 27: fg: no job control +./jobs.tests: line 25: wait: %1: no such job +./jobs.tests: line 30: fg: no job control wait-for-pid wait-errors -./jobs.tests: line 40: wait: `1-1': not a pid or valid job spec -./jobs.tests: line 41: wait: `-4': not a pid or valid job spec +./jobs.tests: line 43: wait: `1-1': not a pid or valid job spec +./jobs.tests: line 44: wait: `-4': not a pid or valid job spec wait-for-background-pids async list wait-for-background-pids async list wait for child forked wait-when-no-children wait-for-job -./jobs.tests: line 63: wait: %2: no such job +./jobs.tests: line 66: wait: %2: no such job 127 async list wait-for-job forked @@ -53,19 +54,19 @@ sleep 5 fg-bg 4 sleep 5 fg-bg 5 -./jobs.tests: line 90: fg: %2: no such job -./jobs.tests: line 91: bg: job 1 already in background +./jobs.tests: line 93: fg: %2: no such job +./jobs.tests: line 94: bg: job 1 already in background fg-bg 6 -./jobs.tests: line 98: fg: -s: invalid option +./jobs.tests: line 101: fg: -s: invalid option fg: usage: fg [job_spec] -./jobs.tests: line 99: bg: -s: invalid option +./jobs.tests: line 102: bg: -s: invalid option bg: usage: bg [job_spec ...] -./jobs.tests: line 104: disown: -s: invalid option +./jobs.tests: line 107: disown: -s: invalid option disown: usage: disown [-h] [-ar] [jobspec ... | pid ...] -./jobs.tests: line 108: disown: %1: no such job -./jobs.tests: line 111: disown: %2: no such job +./jobs.tests: line 111: disown: %1: no such job +./jobs.tests: line 114: disown: %2: no such job wait-for-non-child -./jobs.tests: line 114: wait: pid 1 is not a child of this shell +./jobs.tests: line 117: wait: pid 1 is not a child of this shell 127 3 -- 1 2 3 -- 1 - 2 - 3 [1] Running sleep 300 & @@ -75,8 +76,8 @@ running jobs: [1] Running sleep 300 & [2]- Running sleep 350 & [3]+ Running sleep 400 & -./jobs.tests: line 131: kill: %4: no such job -./jobs.tests: line 133: jobs: %4: no such job +./jobs.tests: line 134: kill: %4: no such job +./jobs.tests: line 136: jobs: %4: no such job current job: [3]+ Running sleep 400 & previous job: diff --git a/tests/jobs.tests b/tests/jobs.tests index c99f4f712..3c2eef31a 100644 --- a/tests/jobs.tests +++ b/tests/jobs.tests @@ -15,6 +15,9 @@ ${THIS_SH} ./jobs4.sub # test out wait -n framework ${THIS_SH} ./jobs5.sub +# test out wait -f framework +${THIS_SH} ./jobs6.sub + jobs echo $? diff --git a/tests/jobs1.sub b/tests/jobs1.sub index aa9a37261..53f66cc61 100644 --- a/tests/jobs1.sub +++ b/tests/jobs1.sub @@ -2,7 +2,7 @@ set -m sleep 60 & -FN=/tmp/jobs-pid.$$ +FN=$TMPDIR/jobs-pid.$$ pid1=$! jobs -p %+ > $FN diff --git a/tests/jobs4.sub b/tests/jobs4.sub index 2eb4197a9..898b449b8 100644 --- a/tests/jobs4.sub +++ b/tests/jobs4.sub @@ -1,12 +1,12 @@ # test being able to use job control notation in jobs/kill/wait without # job control active, as the SUS requires -sleep 5 & +sleep 2 & -sleep 5 & -sleep 5 & -sleep 5 & -(sleep 5 ; exit 4) & +sleep 2 & +sleep 2 & +sleep 2 & +(sleep 2 ; exit 4) & jobs diff --git a/tests/jobs6.sub b/tests/jobs6.sub new file mode 100644 index 000000000..9ed59ee5b --- /dev/null +++ b/tests/jobs6.sub @@ -0,0 +1,14 @@ +# framework to test `wait -f' which forces wait until a job exits +set -o monitor +sleep 5 & +child1=$! + +( sleep 1; kill -STOP $child1 ; sleep 1 ; kill -CONT $child1 )& + +child2=$! + +wait -f %1 +echo child1 exit status $? + +wait $child2 +exit 0 diff --git a/tests/more-exp.tests b/tests/more-exp.tests index 4a3cb7f54..10b3a47ea 100644 --- a/tests/more-exp.tests +++ b/tests/more-exp.tests @@ -152,7 +152,7 @@ b1() b2() { recho $* - recho $# + recho ${#} } expect '<1>' @@ -414,7 +414,7 @@ recho ${#} expect '<5>' recho ${#?:-xyz} -shift $# +shift ${#} expect '<0>' recho ${#:-foo} diff --git a/tests/nameref.right b/tests/nameref.right index 530025952..2ab62b094 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -48,7 +48,7 @@ argv[1] = expect argv[1] = expect -argv[1] = +./nameref3.sub: line 16: foo: invalid indirect expansion ./nameref3.sub: line 21: unset: bar: cannot unset: readonly variable expect two @@ -226,6 +226,13 @@ declare -r RO="x" ./nameref11.sub: line 39: declare: RO_PID: not found ./nameref11.sub: line 41: RO2: readonly variable declare -r RO2="a" +2 +./nameref11.sub: line 52: typeset: `2': invalid variable name for name reference +2 +./nameref11.sub: line 57: typeset: `2': invalid variable name for name reference +2 +./nameref11.sub: line 62: foo[2]: invalid indirect expansion +./nameref11.sub: line 63: bar: invalid indirect expansion ./nameref12.sub: line 6: declare: `/': invalid variable name for name reference ./nameref12.sub: line 9: declare: `%': invalid variable name for name reference ./nameref12.sub: line 13: `^': not a valid identifier @@ -306,30 +313,38 @@ declare -a b=([0]="0") ./nameref15.sub: line 19: warning: ref: circular name reference ./nameref15.sub: line 20: warning: ref: circular name reference ./nameref15.sub: line 21: warning: ref: circular name reference -inside +inside X outside X -./nameref15.sub: line 29: typeset: ref: nameref variable self references not allowed -./nameref15.sub: line 31: ref: nameref variable self references not allowed +before: 7 +./nameref15.sub: line 32: typeset: warning: xxx: circular name reference +./nameref15.sub: line 32: warning: xxx: circular name reference +./nameref15.sub: line 33: warning: xxx: circular name reference +declare -n xxx="xxx" +./nameref15.sub: line 35: warning: xxx: circular name reference +xxx_func: inside: xxx = foo +after: foo +./nameref15.sub: line 46: typeset: ref: nameref variable self references not allowed +./nameref15.sub: line 48: ref: nameref variable self references not allowed declare -n ref="re" declare -n ref="re" declare -- re="4" 4 declare -n foo="var[@]" declare -n ref="var[@]" -./nameref15.sub: line 48: var[@]: bad array subscript +./nameref15.sub: line 65: var[@]: bad array subscript declare -n bar="var[@]" -./nameref15.sub: line 53: var[@]: bad array subscript +./nameref15.sub: line 70: var[@]: bad array subscript declare -n a="b" declare -n b="a[1]" -./nameref15.sub: line 61: warning: a: removing nameref attribute +./nameref15.sub: line 78: warning: a: removing nameref attribute declare -a a=([1]="foo") declare -n b="a[1]" -./nameref15.sub: line 66: warning: a: removing nameref attribute +./nameref15.sub: line 83: warning: a: removing nameref attribute declare -a a=([1]="foo") declare -n b="a[1]" declare -n n="v" declare -a v=([1]="1") -./nameref15.sub: line 82: typeset: n: not found +./nameref15.sub: line 99: typeset: n: not found declare -a v=([0]="0" [1]="1") declare -n n="v[1]" declare -a v=([0]="0") @@ -409,3 +424,19 @@ declare -a var=([123]="") declare -n ref="var[123]" ./nameref18.sub: line 54: declare: var[123]: not found declare -a var=([123]="X") +declare -n foo="bar" +declare -- foo="bar" +./nameref19.sub: line 9: declare: bar: not found +declare -n foo="bar" +declare -- foo="bar" +declare -i bar="11" +declare -inx foo6 +declare -ix foo6 +declare -n foo="bar" +declare -- bar="Hello World!" +declare -- foo="bar" +declare -- bar="Hello World!" +declare -n foo="bar" +declare -- bar +declare -- foo="bar" +declare -- bar diff --git a/tests/nameref11.sub b/tests/nameref11.sub index 85feedfa6..402e50158 100644 --- a/tests/nameref11.sub +++ b/tests/nameref11.sub @@ -39,3 +39,25 @@ unset -n ref ; unset ref declare -r RO RO_PID; coproc RO { :; }; declare -p RO_PID; wait; declare -p RO RO_PID declare -r RO2=a; declare -n ref_PID=RO2; coproc ref { :; }; wait; declare -p RO2 + +unset x y +set -- one two three + +y=2 +typeset -n x=y +echo ${x} + +unset -n x + +typeset -n y +echo $y + +unset -n y + +typeset -n y +y=2 +echo ${y} + +declare -n foo=bar +echo ${!foo[2]} +echo ${!bar} diff --git a/tests/nameref15.sub b/tests/nameref15.sub index 6c9ace5ef..9fbacd4ff 100644 --- a/tests/nameref15.sub +++ b/tests/nameref15.sub @@ -26,6 +26,23 @@ add_X_echo ref echo outside "$ref" unset ref +# same test, but assigning nameref variable circular reference directly +xxx_func() +{ + typeset -n xxx=xxx + xxx=foo + declare -p xxx + echo $FUNCNAME: inside: xxx = $xxx +} + +xxx=7 +echo before: $xxx +xxx_func +echo after: $xxx + +unset xxx +unset -f xxx_func + typeset -n ref=ref typeset -n ref=re ref+=f @@ -85,4 +102,3 @@ v=(0 1) declare -n n=v[1] unset n declare -p n v - diff --git a/tests/nameref19.sub b/tests/nameref19.sub new file mode 100644 index 000000000..d46c003f1 --- /dev/null +++ b/tests/nameref19.sub @@ -0,0 +1,51 @@ +# can we unset the nameref attribute on variables with values that reference +# unset variables? + +unset bar +declare -n foo="bar" +declare -p foo + +declare +n foo +declare -p foo bar + +declare -n foo +declare -p foo + +# let's try removing the nameref attribute -- other attributes and assignments +# apply to the nameref target + +declare +n -i foo=7+4 +declare -p foo bar + +unset foo bar + +# but if the nameref variable doesn't have a value, the attributes apply to +# the nameref variable itself. thanks ksh93 + +declare -n foo6 +declare -xi foo6 +declare -p foo6 + +# and when we remove the nameref attribute, the other attributes remain + +declare +n foo6 +declare -p foo6 + +unset foo6 + +# make sure these cases continue to work + +# nameref referencing an existing, set variable +declare -n foo=bar +bar='Hello World!' +declare -p foo bar +declare +n foo +declare -p foo bar +unset foo bar + +# nameref referencing an existing, unset variable +declare -n foo=bar +declare bar +declare -p foo bar +declare +n foo +declare -p foo bar diff --git a/tests/new-exp.right b/tests/new-exp.right index 9913fbd6f..12fc18ddc 100644 --- a/tests/new-exp.right +++ b/tests/new-exp.right @@ -169,11 +169,11 @@ lines. This-string-has-multiple-lines. this is a test of proc subst this is test 2 -./new-exp2.sub: line 31: /tmp/bashtmp.x*: No such file or directory -./new-exp2.sub: line 35: /tmp/redir-notthere: No such file or directory +a +./new-exp2.sub: line 42: /tmp/redir-notthere: No such file or directory 1 -./new-exp2.sub: line 42: 1111111111111111111111: command not found +./new-exp2.sub: line 49: 1111111111111111111111: command not found argv[1] = <6> ./new-exp.tests: line 285: ${#:}: bad substitution @@ -624,7 +624,7 @@ c Sub = 0 2 4 8 <'ab cd'> <'4'> <'ab cd'> <> -argv[1] = +argv[1] = < > <' \t\n'> @@ -643,6 +643,26 @@ ir a b c d e 5 a5b +abcxxxdef +abcÃ¥def +ḅć +Ã¥ +prependḅć +Ã¥append +prependÃ¥ +ḅćappend +Ã¥ +ḅć +ḅć +ḅć +Ã¥ +Ã¥ +Ã¥ +ḅć +Ã¥ +Ã¥ +ḅć +ḅć argv[1] = argv[1] = -./new-exp.tests: line 608: ABXD: parameter unset +./new-exp.tests: line 611: ABXD: parameter unset diff --git a/tests/new-exp.tests b/tests/new-exp.tests index c4aa9d167..31e15468e 100644 --- a/tests/new-exp.tests +++ b/tests/new-exp.tests @@ -340,7 +340,7 @@ recho "${foo:-$@}" expect ' ' recho "${foo:-"$@"}" -shift $# +shift ${#} expect nothing recho $xxx"$@" expect nothing @@ -498,7 +498,7 @@ recho ${*%?} recho ${@#?} recho ${*#?} -shift $# +shift ${#} set -u ( recho $9 ; echo after 1) ( recho ${9} ; echo after 2) @@ -597,6 +597,9 @@ ${THIS_SH} ./new-exp9.sub # new parameter transformation `@' expansion operator ${THIS_SH} ./new-exp10.sub +# parameter substring replacement and removal operators with multibyte chars +${THIS_SH} ./new-exp11.sub + # problems with stray CTLNUL in bash-4.0-alpha unset a a=/a diff --git a/tests/new-exp1.sub b/tests/new-exp1.sub index c015c2239..2b621fcaa 100644 --- a/tests/new-exp1.sub +++ b/tests/new-exp1.sub @@ -1,3 +1,4 @@ +FN=${TMPDIR}/bashtest-$$ expect() { echo expect "$@" @@ -5,7 +6,11 @@ expect() expect this is a test of proc subst cat <(echo this is a test of proc subst) -echo this is test 2 > /tmp/x +echo this is test 2 > $FN expect this is test 2 -cat <(cat /tmp/x) -rm -f /tmp/x +cat <(cat $FN) +rm -f $FN + +foo= +expect a +cat ${foo:-<(echo a)} diff --git a/tests/new-exp11.sub b/tests/new-exp11.sub new file mode 100644 index 000000000..da6b4e1f7 --- /dev/null +++ b/tests/new-exp11.sub @@ -0,0 +1,46 @@ +# pattern matching and replacement operators with multibyte characters + +LANG=en_US.UTF-8 + +s1='abcÃ¥def' +s2='Ã¥' +s3='ḅć' + +s23=${s2}${s3} + +echo ${s1/$s2/xxx} +echo ${s1/$s3/xxx} + +echo ${s23/#$s2/} +echo ${s23/%$s3/} + +echo ${s23/#$s2/prepend} +echo ${s23/%$s3/append} + +echo ${s2/#/prepend} +echo ${s3/%/append} + +echo ${s2/#/} +echo ${s3/%/} + +recho ${s2/$s2/} +recho ${s3/$s3/} + +# posix pattern replacements + +echo ${s23##$s2} +echo ${s23#$s2} + +echo ${s23%%$s3} +echo ${s23%$s3} + +# fail + +echo ${s2/#ab/xx} +echo ${s3/%ab/xx} + +echo ${s2#ab} +echo ${s2##ab} + +echo ${s3%ab} +echo ${s3%%ab} diff --git a/tests/new-exp2.sub b/tests/new-exp2.sub index e83777993..ea52b3ce4 100644 --- a/tests/new-exp2.sub +++ b/tests/new-exp2.sub @@ -4,7 +4,7 @@ export LANG=C # test out the new $(< filename) code # it should be exactly equivalent to $(cat filename) -FILENAME=/tmp/bashtmp.x$$ +FILENAME=$TMPDIR/bashtmp.x$$ trap 'rm -f $FILENAME' 0 @@ -21,17 +21,24 @@ if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) failed' fi -LINES2=$(< /tmp/bashtmp.x*) +LINES2=$(< $TMPDIR/bashtmp.x*) if [[ $LINES1 != $LINES2 ]]; then echo 'whoops: $(< filename) with glob expansion failed' fi # but the glob expansion in the redirection should fail in posix mode set -o posix -LINES2=$(< /tmp/bashtmp.x*) +exec 3>&2 +exec 2>/dev/null +LINES2=$(< $TMPDIR/bashtmp.x*) +exec 2>&3 +if [[ $LINES2 -gt 0 ]]; then + echo "whoops: redirection glob expansion should be disabled in posix mode" >&2 +fi set +o posix # now see what happens when we try it with a non-existant file +rm -f /tmp/redir-notthere LINES3=$(< /tmp/redir-notthere) echo $? diff --git a/tests/parser.right b/tests/parser.right index 43d5a8ed6..cecbb2223 100644 --- a/tests/parser.right +++ b/tests/parser.right @@ -1 +1,16 @@ AAA +bash5: `invalid-name': not a valid identifier +in +in +in +in +bash5: -c: line 0: syntax error near unexpected token `)' +bash5: -c: line 0: `case x in esac) echo done; esac' +in +bash5: -c: line 0: syntax error near unexpected token `do' +bash5: -c: line 0: `case in do do) echo in; esac' +bash5: -c: line 0: syntax error near unexpected token `(' +bash5: -c: line 0: `for()' +in +done +ok 1 diff --git a/tests/parser.tests b/tests/parser.tests index 12ff88c29..6e020a4ba 100644 --- a/tests/parser.tests +++ b/tests/parser.tests @@ -2,3 +2,5 @@ # this has to be in a separate file to get desired EOF behavior ${THIS_SH} ./parser1.sub + +${THIS_SH} ./posix2syntax.sub diff --git a/tests/posix2syntax.sub b/tests/posix2syntax.sub new file mode 100644 index 000000000..e7dda58f7 --- /dev/null +++ b/tests/posix2syntax.sub @@ -0,0 +1,53 @@ +: ${THIS_SH:=./bash} +bashname=bash${BASH_VERSION%%.*} + +# tests for Posix grammar special cases + +# Posix grammar rule 5 +${THIS_SH} -c 'for invalid-name in a b c; do echo error; done' $bashname + +# Posix grammar rule 6: third word in FOR or SELECT +for i; do echo; done; echo in +for i; do echo in; done +for i do echo in; done + +select i; do echo; done; echo in +select i; do echo in; done; echo in +select i do echo in; done; echo in + +# Posix grammar rule 4: when PATTERN == ESAC, return ESAC +${THIS_SH} -c 'case x in esac) echo done; esac' $bashname + +# Posix grammar rule 6: third word in CASE +${THIS_SH} -c 'case in in in) echo in; esac;' $bashname +${THIS_SH} -c 'case in do do) echo in; esac' $bashname + +# Posix grammar rule 8: function NAME +${THIS_SH} -o posix -c 'for() +{ +echo function for; +}' $bashname + +for for in for; do echo in; echo done; done + +${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) do : ; done' $bashname +${THIS_SH} -c 'for (( i = 0; i < 5; i++ )) { : ; }' $bashname + +# bug report: IN turning on unwanted alias expansion +${THIS_SH} -o posix -c ' +alias foo='two words' +foo_word='foo' +case "$foo_word" +in + foo) echo "bad 1";; +esac' $bashname + +${THIS_SH} -o posix -c ' +alias foo='oneword' +foo_word='foo' +case "$foo_word" +in + foo) echo "ok 1";; +esac' $bashname + + diff --git a/tests/posixexp.right b/tests/posixexp.right index 0ba6555aa..1e81eadb8 100644 --- a/tests/posixexp.right +++ b/tests/posixexp.right @@ -37,5 +37,243 @@ argv[1] = <'bar> argv[1] = argv[1] = <}z> argv[1] = <''z}> -./posixexp.tests: line 77: unexpected EOF while looking for matching `}' -./posixexp.tests: line 78: syntax error: unexpected end of file +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1 2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <1> +argv[2] = <2> +argv[1] = <12> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <12> +argv[1] = <1 2> +argv[1] = <1 2> +argv[1] = <12> +argv[1] = <12> +normal IFS +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +null IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc> +argv[2] = +argv[3] = +non-standard IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc def ghi jkl > +unset IFS +argv[1] = < abc> +argv[2] = +argv[3] = +argv[1] = < abc def ghi jkl > +argv[1] = < abc def ghi jkl > + +001: IFS = (unset): unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +002: IFS = (unset): unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +003: IFS = (unset): unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +004: IFS = (unset): foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +005: IFS = (unset): foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +006: IFS = (unset): foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +007: IFS = (unset): unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +008: IFS = (unset): unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +009: IFS = (unset): unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +010: IFS = (unset): foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +011: IFS = (unset): foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +012: IFS = (unset): foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +013: IFS = (null): unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +014: IFS = (null): unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +015: IFS = (null): unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +016: IFS = (null): foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +017: IFS = (null): foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +018: IFS = (null): foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +019: IFS = (null): unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +020: IFS = (null): unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +021: IFS = (null): unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +022: IFS = (null): foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +023: IFS = (null): foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +024: IFS = (null): foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +025: IFS = x: unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +026: IFS = x: unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +027: IFS = x: unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +028: IFS = x: foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +029: IFS = x: foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +030: IFS = x: foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +031: IFS = x: unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +032: IFS = x: unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +033: IFS = x: unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +034: IFS = x: foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +035: IFS = x: foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +036: IFS = x: foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del + +037: IFS = sp ht nl: unset -v foo; set -- ${foo=$*} +soh stx etx del / soh stx etx del + +038: IFS = sp ht nl: unset -v foo; set -- ${foo="$*"} +soh stx etx del / soh stx etx del + +039: IFS = sp ht nl: unset -v foo; set -- "${foo=$*}" +soh stx etx del / soh stx etx del + +040: IFS = sp ht nl: foo=; set -- ${foo:=$*} +soh stx etx del / soh stx etx del + +041: IFS = sp ht nl: foo=; set -- ${foo:="$*"} +soh stx etx del / soh stx etx del + +042: IFS = sp ht nl: foo=; set -- "${foo:=$*}" +soh stx etx del / soh stx etx del + +043: IFS = sp ht nl: unset -v foo; set -- ${foo=$@} +soh stx etx del / soh stx etx del + +044: IFS = sp ht nl: unset -v foo; set -- ${foo="$@"} +soh stx etx del / soh stx etx del + +045: IFS = sp ht nl: unset -v foo; set -- "${foo=$@}" +soh stx etx del / soh stx etx del + +046: IFS = sp ht nl: foo=; set -- ${foo:=$@} +soh stx etx del / soh stx etx del + +047: IFS = sp ht nl: foo=; set -- ${foo:="$@"} +soh stx etx del / soh stx etx del + +048: IFS = sp ht nl: foo=; set -- "${foo:=$@}" +soh stx etx del / soh stx etx del +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = <^A^B^C^?> +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +[ abc def ghi jkl / abc def ghi jkl ] +[ abc def ghi jkl ] +[ abc def ghi jkl / abc def ghi jkl / abc def ghi jkl ] +./posixexp.tests: line 82: unexpected EOF while looking for matching `}' +./posixexp.tests: line 83: syntax error: unexpected end of file diff --git a/tests/posixexp.tests b/tests/posixexp.tests index 60be1c741..76dfede9a 100644 --- a/tests/posixexp.tests +++ b/tests/posixexp.tests @@ -72,6 +72,11 @@ ${THIS_SH} ./posixexp1.sub || echo "bash posixexp1.sub: test $? failed" THIS_SH=$TMPDIR/sh ${THIS_SH} ./posixexp2.sub || echo "sh posixexp2.sub: test $? failed" rm -f $TMPDIR/sh +${THIS_SH} ./posixexp3.sub +${THIS_SH} ./posixexp4.sub +${THIS_SH} ./posixexp5.sub +${THIS_SH} ./posixexp6.sub + # this will be an error foo=bar echo "${foo:-"a}" diff --git a/tests/posixexp2.sub b/tests/posixexp2.sub index f48d0887b..397769da0 100644 --- a/tests/posixexp2.sub +++ b/tests/posixexp2.sub @@ -18,4 +18,7 @@ ${THIS_SH} -c 'echo ${1?}' 2>/dev/null && exit 11 ${THIS_SH} -c 'echo ${1?}' ${THIS_SH} x >/dev/null || exit 12 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x 2>/dev/null && exit 13 ${THIS_SH} -c 'echo ${2?}' ${THIS_SH} x y >/dev/null || exit 14 + +${THIS_SH} -c $'echo $(( x+ )) \n exit 0' ${THIS_SH} 2>/dev/null && exit 15 + exit 0 diff --git a/tests/posixexp2.tests b/tests/posixexp2.tests index 57dd767d1..2bec58e03 100644 --- a/tests/posixexp2.tests +++ b/tests/posixexp2.tests @@ -1,6 +1,6 @@ # From mksh -set -o posix +set -o posix ; shopt -u xpg_echo (echo 1 ${IFS+'}'z}) 2>&- || echo failed in 1 (echo 2 "${IFS+'}'z}") 2>&- || echo failed in 2 diff --git a/tests/posixexp3.sub b/tests/posixexp3.sub new file mode 100644 index 000000000..c40afa947 --- /dev/null +++ b/tests/posixexp3.sub @@ -0,0 +1,52 @@ +set -- 1 2 + +unset var +recho ${var-$@} +recho ${var-"$@"} +recho ${var-$*} +recho ${var-"$*"} + +unset -v a b c d +recho ${a=$@} +recho "$a" +recho ${b="$@"} +recho "$b" +recho ${c=$*} +recho "$c" +recho ${d="$*"} +recho "$d" + +IFS= +unset var +recho ${var-$@} +recho ${var-"$@"} +recho ${var-$*} +recho ${var-"$*"} + +unset -v a b c d +# Posix interp 221 +# there should never be any word splitting because IFS is null +recho ${a=$@} +recho "$a" +recho $a +recho ${b="$@"} +recho "$b" +recho $b +recho ${c=$*} +recho "$c" +recho $c +recho ${d="$*"} +recho "$d" +recho $d + +unset -v a b c d +a=$@ +recho $a +b="$@" +recho $b +c=$* +recho $c +d="$*" +recho $d + +unset -v parameter a b c d diff --git a/tests/posixexp4.sub b/tests/posixexp4.sub new file mode 100644 index 000000000..22bfeca89 --- /dev/null +++ b/tests/posixexp4.sub @@ -0,0 +1,31 @@ +set -- ' abc' 'def ghi' 'jkl ' + +echo normal IFS +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} + +echo null IFS +IFS= +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} + +echo non-standard IFS +IFS=: +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} # this is inconsistent + +echo unset IFS +recho $@ +: ${var=$@} +recho $var +unset -v var +recho ${var-$@} diff --git a/tests/posixexp5.sub b/tests/posixexp5.sub new file mode 100644 index 000000000..cceeb00c4 --- /dev/null +++ b/tests/posixexp5.sub @@ -0,0 +1,51 @@ +# test suite contribution from Martijn Dekker + +defaultIFS=$IFS +set -o errexit -o noglob +(set -o pipefail) 2>/dev/null && set -o pipefail +teststring=$(printf '\1\2\3\177') +n=0 + +trim_od() { + od -a | sed -n '1 { s/^0*[[:blank:]]*//; s/[[:blank:]]*$//; p; }' +} + +doTest() { + set -- "$teststring" + eval "$testcmd" + case ${IFS+s}${IFS:+n} in + ( sn ) i=$(printf %s "$IFS" | trim_od) ;; + ( s ) i='(null)' ;; + ( '' ) i='(unset)' ;; + ( * ) echo 'internal error!' >&2; exit 125 ;; + esac + printf '\n%03d: IFS = %s: %s\n' "$((n+=1))" "$i" "$testcmd" + printf %s "$*${foo+/}${foo-}" | trim_od +} + +doAllTests() { + for testcmd in \ + 'unset -v foo; set -- ${foo=$*}' \ + 'unset -v foo; set -- ${foo="$*"}' \ + 'unset -v foo; set -- "${foo=$*}"' \ + \ + 'foo=; set -- ${foo:=$*}' \ + 'foo=; set -- ${foo:="$*"}' \ + 'foo=; set -- "${foo:=$*}"' \ + \ + 'unset -v foo; set -- ${foo=$@}' \ + 'unset -v foo; set -- ${foo="$@"}' \ + 'unset -v foo; set -- "${foo=$@}"' \ + \ + 'foo=; set -- ${foo:=$@}' \ + 'foo=; set -- ${foo:="$@"}' \ + 'foo=; set -- "${foo:=$@}"' + do + doTest "$testcmd" + done +} + +unset -v IFS; doAllTests +IFS=''; doAllTests +IFS='x'; doAllTests +IFS=$defaultIFS; doAllTests diff --git a/tests/posixexp6.sub b/tests/posixexp6.sub new file mode 100644 index 000000000..ed38d535a --- /dev/null +++ b/tests/posixexp6.sub @@ -0,0 +1,57 @@ +var=$'\01\02\03\177' + +bar=${unset:-$var} +recho "$bar" +unset -v bar +bar=${unset:-"$var"} +recho "$bar" + +foo=${parameter:=$var} + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +foo=${parameter:="$var"} + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +foo="${parameter:=$var}" + +recho "$foo" +recho "$parameter" + +unset -v foo parameter + +recho ${parameter:=a\ b} +unset -v parameter + +recho ${parameter:="a b"} +unset -v parameter + +v='a b' + +recho ${parameter:=$v} +unset -v parameter + +recho ${parameter:="$v"} +unset -v parameter + +# unsetting IFS here + +set " abc " " def ghi " "jkl " +unset -v IFS var +var=${var-$*}/${var-$*} +printf '[%s]\n' "$var" + +unset -v var +: ${var=$*} +printf '[%s]\n' "$var" + +unset -v var +: ${var:=$*/$*/${var-$*}} +printf '[%s]\n' "$var" diff --git a/tests/posixpat.tests b/tests/posixpat.tests index 91fac3b87..65c557a37 100644 --- a/tests/posixpat.tests +++ b/tests/posixpat.tests @@ -20,13 +20,15 @@ case 9 in [![:alpha:]]) echo ok 4;; esac -# invalid character class expressions are just characters to be matched case a in [:al:]) echo ok 5;; esac +# invalid character class expressions are no longer just characters to be +# matched case a in -[[:al:]) echo ok 6;; +[[:al:]) echo bad 6;; +*) echo ok 6;; esac case '!' in @@ -230,4 +232,3 @@ case a in [[=b=]) echo oops;; # an incomplete equiv class is just a string *) echo ok 3;; esac - diff --git a/tests/printf.right b/tests/printf.right index ae34a8909..593f084b2 100644 --- a/tests/printf.right +++ b/tests/printf.right @@ -148,6 +148,7 @@ b xx xx +< >< > one one\ctwo 4\.2 diff --git a/tests/printf.tests b/tests/printf.tests index e72f5c8bb..9dbac6f0b 100644 --- a/tests/printf.tests +++ b/tests/printf.tests @@ -308,6 +308,9 @@ shopt -s nullglob extglob echo "x$(printf "%b" @(hugo))x" printf -v var "%b" @(hugo); echo "x${var}x" +# make sure that missing arguments are always handled like the empty string +printf "<%3s><%3b>\n" + # tests variable assignment with -v ${THIS_SH} ./printf1.sub @@ -316,4 +319,3 @@ ${THIS_SH} ./printf2.sub ${THIS_SH} ./printf3.sub ${THIS_SH} ./printf4.sub - diff --git a/tests/printf3.sub b/tests/printf3.sub index ec14fa34d..d45e101cb 100644 --- a/tests/printf3.sub +++ b/tests/printf3.sub @@ -6,7 +6,7 @@ SECS=1275250155 export TZ=EST5EDT case $SHELLSTART in -*s*) SHELLSTART=$(perl -e 'print time') ; DATESECS=false ;; # take a shot +*s*) SHELLSTART=$EPOCHSECONDS ; DATESECS=false ;; # take a shot *) DATESECS=true ;; esac @@ -15,7 +15,7 @@ printf "%(abde)Z\n" -1 printf "%(%e-%b-%Y %T)T\n" $SECS -printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || perl -e 'print time') +printf -v v1 "%(%e-%b-%Y %T)T\n" $( $DATESECS && date +%s || echo $EPOCHSECONDS ) printf -v v2 "%(%e-%b-%Y %T)T\n" -1 case $v1 in diff --git a/tests/procsub.right b/tests/procsub.right new file mode 100644 index 000000000..cf1dbb104 --- /dev/null +++ b/tests/procsub.right @@ -0,0 +1,29 @@ +test1 +foo +test2 +test3 +test4 +8 +test5 +test6 +test7 +test8 +test8a +test9 +hi +bye +l8r +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +intern +1 +0 +0 +0 +0 +extern +1 +0 +0 +0 +0 +123 diff --git a/tests/procsub.tests b/tests/procsub.tests new file mode 100644 index 000000000..4678ac695 --- /dev/null +++ b/tests/procsub.tests @@ -0,0 +1,99 @@ +# process substitution constructs that have caused problems in the past +. ./test-glue-functions + +eval cat <(echo test1) +eval "echo foo;cat" <(echo test2) + +unset f +f=<(echo test3); cat "$f" + +unset f +eval f=<(echo test4) "; cat \$f" + +unset f + +FN=$TMPDIR/bashtest-procsub-$$ +cat >"$FN" </dev/null +} +f2(){ + date >/dev/null + cat $1 +} +cat <(echo hi) +f1 <(echo bye) +f2 <(echo l8r) + +unset -f f1 f2 + +# set up conditions for test +ulimit -n 256 + +bug() +{ +c=$(ulimit -n) +let c+=100 +while let c-- +do + while read -ru3 x + do + echo -n : + done 3< <(echo x) +done +echo +} + +bug +unset -f bug + +count_lines() +{ + wc -l < $1 + wc -l < $1 + wc -l < $1 + true | wc -l < $1 + wc -l < $1 +} + +echo intern +count_lines <(date) | _cut_leading_spaces +unset -f count_lines + +echo extern +FN=$TMPDIR/bashtest-$$ +cat >$FN </dev/null; ls -l "$1" >/dev/null; }; moo >(true) +moo() { ls -al "$1" >/dev/null; (true); ls -al "$1" >/dev/null; }; moo >(true) + +unset -f moo + +${THIS_SH} ./procsub1.sub diff --git a/tests/redir12.sub b/tests/procsub1.sub similarity index 100% rename from tests/redir12.sub rename to tests/procsub1.sub diff --git a/tests/quote.right b/tests/quote.right index 00b55c623..e4c25741b 100644 --- a/tests/quote.right +++ b/tests/quote.right @@ -66,6 +66,12 @@ argv[2] = ${ argv[1] = <(")> argv[1] = <(")> +string \ +string \ +string \ +string \ +string \ +string \} 'weferfds'\''dsfsdf' 'weferfdsdsfsdf' 'weferfds'\''dsfsdf' diff --git a/tests/quote.tests b/tests/quote.tests index 0c55293bb..57ee7e58f 100644 --- a/tests/quote.tests +++ b/tests/quote.tests @@ -109,4 +109,15 @@ recho `echo "(\\")"` # ultimate workaround recho `echo "(\")"` +# various strings ending in backslashes + +echo 'string \' +echo "string \\" + +echo string\ \\ + +echo ${foo:-'string \'} +echo "${foo:-string \\}" +echo ${foo:-string \\\}} + ${THIS_SH} ./quote1.sub diff --git a/tests/quote1.sub b/tests/quote1.sub index c83e64ac3..a9a1ef155 100644 --- a/tests/quote1.sub +++ b/tests/quote1.sub @@ -14,7 +14,7 @@ echo "'${test//"'"/}'" echo "'${test//"'"/"'\\''"}'" -echo "'${test//"'"/\'\\'\'}'" +printf "%s\n" "'${test//"'"/\'\\'\'}'" #echo "'${test//'/}'" # hangs waiting for ' #echo "'${test//"'"/'\\''}'" # hangs waiting for ' diff --git a/tests/read.tests b/tests/read.tests index fe27dae3e..f67cd00e7 100644 --- a/tests/read.tests +++ b/tests/read.tests @@ -25,43 +25,43 @@ echo $'\177' | ( read ; recho "$REPLY" ) # the input stream echo $'ab\\\ncd' | ( read ; recho "$REPLY" ) -echo "A B " > /tmp/IN +echo "A B " > $TMPDIR/IN unset x y z -read x y z < /tmp/IN +read x y z < $TMPDIR/IN echo 1: "x[$x] y[$y] z[$z]" echo 1a: ${z-z not set} -read x < /tmp/IN +read x < $TMPDIR/IN echo 2: "x[$x]" -rm /tmp/IN +rm $TMPDIR/IN # this is where the bash `read' behavior with respect to $REPLY differs # from ksh93 -echo "A B " > /tmp/IN +echo "A B " > $TMPDIR/IN -read < /tmp/IN +read < $TMPDIR/IN echo "[$REPLY]" -rm /tmp/IN +rm $TMPDIR/IN -echo " A B " > /tmp/IN +echo " A B " > $TMPDIR/IN -read < /tmp/IN +read < $TMPDIR/IN echo "[$REPLY]" -rm /tmp/IN +rm $TMPDIR/IN # make sure that read with more variables than words sets the extra # variables to the empty string bvar=bvar cvar=cvar -echo aa > /tmp/IN -read avar bvar cvar < /tmp/IN +echo aa > $TMPDIR/IN +read avar bvar cvar < $TMPDIR/IN echo =="$avar"== echo =="$bvar"== echo =="$cvar"== -rm /tmp/IN +rm $TMPDIR/IN # test behavior of read with various settings of IFS diff --git a/tests/redir.right b/tests/redir.right index c158e2518..ab737d494 100644 --- a/tests/redir.right +++ b/tests/redir.right @@ -26,10 +26,10 @@ from stdin: aa to stdout ./redir4.sub: line 32: $fd: ambiguous redirect ./redir4.sub: line 33: $fd: ambiguous redirect -/tmp/err-and-out: +err-and-out: to stdout to stderr -/tmp/err-and-out: +err-and-out: to stdout to stderr 0 -- 3 0 @@ -157,4 +157,3 @@ a+=3 foo foo ./redir11.sub: line 53: $(echo $a): Bad file descriptor -123 diff --git a/tests/redir.tests b/tests/redir.tests index 24e3cd1a5..7b74ac53d 100644 --- a/tests/redir.tests +++ b/tests/redir.tests @@ -191,4 +191,3 @@ ${THIS_SH} ./redir9.sub ${THIS_SH} ./redir10.sub ${THIS_SH} ./redir11.sub -${THIS_SH} ./redir12.sub diff --git a/tests/redir4.sub b/tests/redir4.sub index 47344554e..14406d011 100644 --- a/tests/redir4.sub +++ b/tests/redir4.sub @@ -34,23 +34,23 @@ exec 4>&$fd exec 3>&1 4>&2 -exec >&/tmp/err-and-out +exec >&${TMPDIR}/err-and-out echo to stdout echo to stderr >&2 exec 1>&3 2>&4 -echo /tmp/err-and-out: -cat /tmp/err-and-out +echo err-and-out: +cat ${TMPDIR}/err-and-out -rm /tmp/err-and-out +rm ${TMPDIR}/err-and-out -fd=/tmp/err-and-out +fd=${TMPDIR}/err-and-out exec >&$fd echo to stdout echo to stderr >&2 exec 1>&3 2>&4 -echo /tmp/err-and-out: -cat /tmp/err-and-out +echo err-and-out: +cat ${TMPDIR}/err-and-out -rm /tmp/err-and-out +rm ${TMPDIR}/err-and-out diff --git a/tests/redir6.sub b/tests/redir6.sub index 60cc68b0a..c735e5233 100644 --- a/tests/redir6.sub +++ b/tests/redir6.sub @@ -6,3 +6,5 @@ pwd echo $? echo $? echo $? + +cd $OLDPWD diff --git a/tests/redir8.sub b/tests/redir8.sub index 5f972a14d..88753f2f2 100644 --- a/tests/redir8.sub +++ b/tests/redir8.sub @@ -56,4 +56,6 @@ exec 0<&7 exec 7<&- rm -f infile + +cd $OLDPWD exit 0 diff --git a/tests/rsh.right b/tests/rsh.right index 022b2ca1f..a728f1379 100644 --- a/tests/rsh.right +++ b/tests/rsh.right @@ -1,13 +1,19 @@ -./rsh.tests: line 9: cd: restricted -./rsh.tests: line 10: PATH: readonly variable -./rsh.tests: line 11: SHELL: readonly variable -./rsh.tests: line 12: /bin/sh: restricted: cannot specify `/' in command names -./rsh.tests: line 14: .: ./source.sub3: restricted -./rsh.tests: line 17: /tmp/restricted: restricted: cannot redirect output -./rsh.tests: line 21: /tmp/restricted: restricted: cannot redirect output -./rsh.tests: line 26: command: -p: restricted -./rsh.tests: line 28: set: +r: invalid option +./rsh1.sub: line 9: /bin/sh: restricted +./rsh1.sub: line 11: sh: not found +./rsh1.sub: line 12: a: command not found +./rsh2.sub: line 10: hash: /bin/sh: restricted +./rsh2.sub: line 12: hash: sh: not found +./rsh2.sub: line 13: a: command not found +./rsh.tests: line 12: cd: restricted +./rsh.tests: line 13: PATH: readonly variable +./rsh.tests: line 14: SHELL: readonly variable +./rsh.tests: line 15: /bin/sh: restricted: cannot specify `/' in command names +./rsh.tests: line 17: .: ./source.sub3: restricted +./rsh.tests: line 20: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 24: /tmp/restricted: restricted: cannot redirect output +./rsh.tests: line 29: command: -p: restricted +./rsh.tests: line 31: set: +r: invalid option set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] -./rsh.tests: line 29: set: restricted: invalid option name -./rsh.tests: line 31: exec: restricted +./rsh.tests: line 32: set: restricted: invalid option name +./rsh.tests: line 34: exec: restricted ./rsh.tests: after exec diff --git a/tests/rsh.tests b/tests/rsh.tests index ffdf6e553..d1d777846 100644 --- a/tests/rsh.tests +++ b/tests/rsh.tests @@ -4,6 +4,9 @@ # adding builtins dynamically with enable -f # importing function definitions from environment +${THIS_SH} ./rsh1.sub +${THIS_SH} ./rsh2.sub + set -r cd / diff --git a/tests/rsh1.sub b/tests/rsh1.sub new file mode 100644 index 000000000..fdd4ddd96 --- /dev/null +++ b/tests/rsh1.sub @@ -0,0 +1,16 @@ +cd ${TMPDIR:-/tmp} +cp /bin/sh . + +PATH=/rbin:/usr/local/rbin +hash -p /bin/rm rm + +set -r + +BASH_CMDS[x]=/bin/sh + +BASH_CMDS[a]="sh" +a -c 'echo hello' + +rm -f sh a + +exit 0 diff --git a/tests/rsh2.sub b/tests/rsh2.sub new file mode 100644 index 000000000..8c82c68bb --- /dev/null +++ b/tests/rsh2.sub @@ -0,0 +1,17 @@ +cd ${TMPDIR:-/tmp} +cp /bin/sh . +ln sh a + +PATH=/rbin:/usr/local/rbin +hash -p /bin/rm rm + +set -r + +hash -p /bin/sh sh + +hash -p sh a +a -c 'echo hello' + +rm -f sh a + +exit 0 diff --git a/tests/run-all b/tests/run-all index 2882fe079..34d3e4c8e 100644 --- a/tests/run-all +++ b/tests/run-all @@ -9,15 +9,21 @@ SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now export BASH_TSTOUT -trap 'rm -f $BASH_TSTOUT' 0 +trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15 PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' export PATH # unset BASH_ENV only if it is set [ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV -# ditto for SHELLOPTS -#[ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS +# can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash +if [ "${BASH_VERSION+set}" = "set" ]; then + export -n SHELLOPTS # just make sure its not exported + set +o posix + typeset -p SHELLOPTS +else + [ "${SHELLOPTS+set}" = "set" ] && unset SHELLOPTS 2>/dev/null +fi : ${THIS_SH:=../bash} export THIS_SH diff --git a/tests/run-dynvar b/tests/run-dynvar new file mode 100644 index 000000000..26c5434b1 --- /dev/null +++ b/tests/run-dynvar @@ -0,0 +1,2 @@ +${THIS_SH} ./dynvar.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} dynvar.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-minimal b/tests/run-minimal index c7fba73e6..bbb9da189 100644 --- a/tests/run-minimal +++ b/tests/run-minimal @@ -41,6 +41,8 @@ do run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;; run-ifs-posix|run-posix2|run-posixpat|run-posixpipe) echo $x ; sh $x ;; run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;; + run-dynvar) echo $x ; sh $x ;; + ;; *) ;; esac rm -f "$BASH_TSTOUT" diff --git a/tests/run-procsub b/tests/run-procsub new file mode 100644 index 000000000..796faaa8f --- /dev/null +++ b/tests/run-procsub @@ -0,0 +1,7 @@ +echo "warning: all of these tests will fail if process substitution has not" >&2 +echo "warning: been compiled into the shell or if the OS does not provide" >&2 +echo "warning: FIFOs or /dev/fd. Some tests may fail if the OS does not" >&2 +echo "warning: provide FIFOs." >&2 + +${THIS_SH} ./procsub.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} procsub.right && rm -f ${BASH_TSTOUT} diff --git a/tests/set-x.right b/tests/set-x.right index a41a382a3..259602e5e 100644 --- a/tests/set-x.right +++ b/tests/set-x.right @@ -26,6 +26,10 @@ + x=i + case x in + x=i ++ foo=one ++ foo+=two ++ echo onetwo +onetwo + set +x 1 2 diff --git a/tests/set-x.tests b/tests/set-x.tests index 648f0a9eb..531c53f6a 100755 --- a/tests/set-x.tests +++ b/tests/set-x.tests @@ -14,6 +14,11 @@ case x in 0) x=i ;; *) x=i ;; esac + +foo=one +foo+=two +echo $foo + set +x # test BASH_XTRACEFD diff --git a/tests/shopt.right b/tests/shopt.right index 86d9ed6b3..bb0ac6961 100644 --- a/tests/shopt.right +++ b/tests/shopt.right @@ -2,6 +2,7 @@ shopt: usage: shopt [-pqsu] [-o] [optname ...] -- shopt -u autocd +shopt -u assoc_expand_once shopt -u cdable_vars shopt -s cdspell shopt -u checkhash @@ -14,6 +15,7 @@ shopt -u compat40 shopt -u compat41 shopt -u compat42 shopt -u compat43 +shopt -u compat44 shopt -s complete_fullquote shopt -u direxpand shopt -u dirspell @@ -37,6 +39,7 @@ shopt -u inherit_errexit shopt -s interactive_comments shopt -u lastpipe shopt -u lithist +shopt -u localvar_inherit shopt -u login_shell shopt -u mailwarn shopt -u no_empty_cmd_completion @@ -67,6 +70,7 @@ shopt -s promptvars shopt -s sourcepath -- shopt -u autocd +shopt -u assoc_expand_once shopt -u cdable_vars shopt -u checkhash shopt -u checkjobs @@ -77,6 +81,7 @@ shopt -u compat40 shopt -u compat41 shopt -u compat42 shopt -u compat43 +shopt -u compat44 shopt -u direxpand shopt -u dirspell shopt -u dotglob @@ -94,6 +99,7 @@ shopt -u huponexit shopt -u inherit_errexit shopt -u lastpipe shopt -u lithist +shopt -u localvar_inherit shopt -u login_shell shopt -u mailwarn shopt -u no_empty_cmd_completion @@ -105,6 +111,7 @@ shopt -u shift_verbose shopt -u xpg_echo -- autocd off +assoc_expand_once off cdable_vars off checkhash off checkjobs off @@ -115,6 +122,7 @@ compat40 off compat41 off compat42 off compat43 off +compat44 off direxpand off dirspell off dotglob off @@ -132,6 +140,7 @@ huponexit off inherit_errexit off lastpipe off lithist off +localvar_inherit off login_shell off mailwarn off no_empty_cmd_completion off diff --git a/tests/test-glue-functions b/tests/test-glue-functions index 2b2f61d0b..b958ab71c 100644 --- a/tests/test-glue-functions +++ b/tests/test-glue-functions @@ -6,4 +6,8 @@ _intl_normalize_spaces() sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/[[:space:]]*$//' } - +# avoid whitespace differences in wc implementations +_cut_leading_spaces() +{ + sed -e 's/^[[:space:]]*//g' +} diff --git a/tests/test.right b/tests/test.right index 7fcd99640..9832bd6d3 100644 --- a/tests/test.right +++ b/tests/test.right @@ -289,3 +289,7 @@ t -t /dev/tty4 t -t /dev/tty4444444... 1 1 +t -p /dev/fd/6 +1 +t -p /dev/fd/6 +0 diff --git a/tests/test.tests b/tests/test.tests index 47eef3546..07a87a0b2 100644 --- a/tests/test.tests +++ b/tests/test.tests @@ -436,3 +436,5 @@ t -t /dev/tty4444444... # fixed in bash-4.0-beta t -t ' ' + +${THIS_SH} ./test1.sub diff --git a/tests/test1.sub b/tests/test1.sub new file mode 100644 index 000000000..a1c58170c --- /dev/null +++ b/tests/test1.sub @@ -0,0 +1,21 @@ +# some systems, like old SunOS, have stat on /dev/fd/N and fstat(N, ...) +# return different results +: ${TMPDIR:=/tmp} + +trap 'rm -f ${TMPDIR}/pipe' 0 1 2 3 6 15 + +exec 6>&- +echo "t -p /dev/fd/6" +test -p /dev/fd/6 +echo $? + +rm -f ${TMPDIR}/pipe 2>/dev/null +mkfifo ${TMPDIR}/pipe +cat < ${TMPDIR}/pipe & +exec 6>&- +exec 6>${TMPDIR}/pipe +echo "t -p /dev/fd/6" +test -p /dev/fd/6 +echo $? +exec 2>/dev/null # disable process termination message +kill $! 2>/dev/null diff --git a/tests/tilde.tests b/tests/tilde.tests index 50f19e98a..8a9f13691 100644 --- a/tests/tilde.tests +++ b/tests/tilde.tests @@ -1,3 +1,4 @@ +wdir=$PWD # this is needed because posix mode restricts tilde expansion to assignment # statements preceding a command, instead of the default of expanding all # assignment statements on the line (e.g., after `export'). Without this, @@ -69,3 +70,6 @@ esac USER=root # should exist just about everywhere echo ~$USER + +cd "$wdir" +exit 0 diff --git a/tests/trap.right b/tests/trap.right index 1f68d3318..416582931 100644 --- a/tests/trap.right +++ b/tests/trap.right @@ -64,6 +64,14 @@ after while before false in trap2a.sub after false in trap2a.sub command substitution +ERRTRAP +ERRTRAP +bar +ERRTRAP +ERRTRAP +ERRTRAP +ERRTRAP +ERRTRAP +[6] echo 1 1 +[7] echo 2 @@ -93,6 +101,10 @@ sleep 2 wait $! exit in trap EXIT +fn +after 1 +fn +after 2 caught a child death caught a child death caught a child death diff --git a/tests/trap.tests b/tests/trap.tests index 4176df085..637bfd282 100644 --- a/tests/trap.tests +++ b/tests/trap.tests @@ -74,6 +74,9 @@ ${THIS_SH} ./trap4.sub # This doesn't work right on all Unix versions #${THIS_SH} ./trap5.sub +# Return trap issues +${THIS_SH} ./trap6.sub + # # show that setting a trap on SIGCHLD is not disastrous. # diff --git a/tests/trap2.sub b/tests/trap2.sub index 73357df2a..0f1f2d962 100755 --- a/tests/trap2.sub +++ b/tests/trap2.sub @@ -23,3 +23,27 @@ echo after while ./trap2a.sub echo $(false ; echo command substitution) + +# test behavior of failed commands following `command' builtin +command false + +(command false) +command false | echo bar + +(false) + +exit 42 | command false + +command command command false + +unset FALSE +if [ -x /bin/false ]; then + FALSE=/bin/false +elif [ -x /usr/bin/false ]; then + FALSE=/usr/bin/false +else + FALSE='command false' +fi + +command $FALSE +command command command $FALSE diff --git a/tests/trap6.sub b/tests/trap6.sub new file mode 100644 index 000000000..332a17737 --- /dev/null +++ b/tests/trap6.sub @@ -0,0 +1,15 @@ +set -o functrace +fn() { return; } + +trap "echo fn ; fn" RETURN + +fn +echo after 1 + +unset -f fn + +fn() { eval return; } +fn +echo after 2 + +unset -f fn diff --git a/tests/type.right b/tests/type.right index 3f7d26e2d..7ec6bfba5 100644 --- a/tests/type.right +++ b/tests/type.right @@ -65,11 +65,11 @@ foo is a function foo () { echo; - cat <> ${f} <<-EOF + cat <<-EOF >> ${f} file EOF @@ -99,7 +99,7 @@ c:file bb is a function bb () { - ( cat < 0 if any of the "real" signals (not fake signals like EXIT) are + trapped. */ int any_signals_trapped () { @@ -940,8 +934,8 @@ _run_trap_internal (sig, tag) char *tag; { char *trap_command, *old_trap; - int trap_exit_value, *token_state; - volatile int save_return_catch_flag, function_code, top_level_code, old_int; + int trap_exit_value; + volatile int save_return_catch_flag, function_code, old_int; int flags; procenv_t save_return_catch; WORD_LIST *save_subst_varlist; @@ -1060,7 +1054,7 @@ _run_trap_internal (sig, tag) int run_debug_trap () { - int trap_exit_value; + int trap_exit_value, old_verbose; pid_t save_pgrp; int save_pipe[2]; @@ -1078,8 +1072,15 @@ run_debug_trap () stop_making_children (); #endif + old_verbose = echo_input_at_read; +#if 0 /* not yet */ + echo_input_at_read = 0; +#endif + trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap"); + echo_input_at_read = old_verbose; + #if defined (JOB_CONTROL) pipeline_pgrp = save_pgrp; restore_pipeline (1); @@ -1087,8 +1088,9 @@ run_debug_trap () close_pgrp_pipe (); restore_pgrp_pipe (save_pipe); # endif - if (pipeline_pgrp > 0) + if (pipeline_pgrp > 0 && ((subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)) give_terminal_to (pipeline_pgrp, 1); + notify_and_cleanup (); #endif diff --git a/trap.h b/trap.h index 41f185f7d..91cec2d86 100644 --- a/trap.h +++ b/trap.h @@ -60,6 +60,11 @@ extern char *trap_list[]; +extern int trapped_signal_received; +extern int wait_signal_received; +extern int running_trap; +extern int trap_saved_exit_value; + /* Externally-visible functions declared in trap.c. */ extern void initialize_traps __P((void)); @@ -112,6 +117,7 @@ extern int signal_in_progress __P((int)); extern int first_pending_trap __P((void)); extern int any_signals_trapped __P((void)); +extern void check_signals __P((void)); extern void check_signals_and_traps __P((void)); #endif /* _TRAP_H_ */ diff --git a/variables.c b/variables.c index be2446e03..79a900716 100644 --- a/variables.c +++ b/variables.c @@ -1,6 +1,6 @@ /* variables.c -- Functions for hacking shell variables. */ -/* Copyright (C) 1987-2016 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -47,6 +47,7 @@ #define NEED_XTRACE_SET_DECL #include "shell.h" +#include "parser.h" #include "flags.h" #include "execute_cmd.h" #include "findcmd.h" @@ -96,30 +97,7 @@ extern char **environ; /* Variables used here and defined in other files. */ -extern int posixly_correct; -extern int line_number, line_number_base; -extern int subshell_environment, indirection_level, subshell_level; -extern int build_version, patch_level; -extern int expanding_redir; -extern int last_command_exit_value; -extern char *dist_version, *release_status; -extern char *shell_name; -extern char *primary_prompt, *secondary_prompt; -extern char *current_host_name; -extern sh_builtin_func_t *this_shell_builtin; -extern SHELL_VAR *this_shell_function; -extern char *the_printed_command_except_trap; -extern char *this_command_name; -extern char *command_execution_string; extern time_t shell_start_time; -extern int assigning_in_environment; -extern int executing_builtin; -extern int funcnest_max; - -#if defined (READLINE) -extern int no_line_editing; -extern int perform_hostname_completion; -#endif /* The list of shell variables that the user has created at the global scope, or that came from the environment. */ @@ -142,6 +120,15 @@ HASH_TABLE *shell_function_defs = (HASH_TABLE *)NULL; executing functions we are. */ int variable_context = 0; +/* If non-zero, local variables inherit values and attributes from a variable + with the same name at a previous scope. */ +int localvar_inherit = 0; + +/* If non-zero, calling `unset' on local variables in previous scopes marks + them as invisible so lookups find them unset. This is the same behavior + as local variables in the current local scope. */ +int localvar_unset = 0; + /* The set of shell assignments which are made only in the environment for a single command. */ HASH_TABLE *temporary_env = (HASH_TABLE *)NULL; @@ -221,6 +208,9 @@ static SHELL_VAR *get_lineno __P((SHELL_VAR *)); static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *)); static SHELL_VAR *get_subshell __P((SHELL_VAR *)); +static SHELL_VAR *get_epochseconds __P((SHELL_VAR *)); +static SHELL_VAR *get_epochrealtime __P((SHELL_VAR *)); + static SHELL_VAR *get_bashpid __P((SHELL_VAR *)); #if defined (HISTORY) @@ -290,6 +280,7 @@ static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **)); static SHELL_VAR *bind_tempenv_variable __P((const char *, char *)); +static void push_posix_temp_var __P((PTR_T)); static void push_temp_var __P((PTR_T)); static void propagate_temp_var __P((PTR_T)); static void dispose_temporary_env __P((sh_free_func_t *)); @@ -431,7 +422,10 @@ initialize_shell_variables (env, privmode) #endif { ro = 0; - if (posixly_correct && STREQ (name, "SHELLOPTS")) + /* If we processed a command-line option that caused SHELLOPTS to be + set, it may already be set (and read-only) by the time we process + the shell's environment. */ + if (/* posixly_correct &&*/ STREQ (name, "SHELLOPTS")) { temp_var = find_variable ("SHELLOPTS"); ro = temp_var && readonly_p (temp_var); @@ -471,14 +465,7 @@ initialize_shell_variables (env, privmode) /* Now make our own defaults in case the vars that we think are important are missing. */ temp_var = set_if_not ("PATH", DEFAULT_PATH_VALUE); -#if 0 - set_auto_export (temp_var); /* XXX */ -#endif - temp_var = set_if_not ("TERM", "dumb"); -#if 0 - set_auto_export (temp_var); /* XXX */ -#endif #if defined (__QNX__) /* set node id -- don't import it from the environment */ @@ -611,8 +598,9 @@ initialize_shell_variables (env, privmode) #endif /* HISTORY */ #if defined (READLINE) && defined (STRICT_POSIX) - /* POSIXLY_CORRECT will only be 1 here if the shell was compiled - -DSTRICT_POSIX */ + /* POSIXLY_CORRECT will be 1 here if the shell was compiled + -DSTRICT_POSIX or if POSIXLY_CORRECT was supplied in the shell's + environment */ if (interactive_shell && posixly_correct && no_line_editing == 0) rl_prefer_env_winsize = 1; #endif /* READLINE && STRICT_POSIX */ @@ -872,8 +860,13 @@ set_pwd () current_dir = sh_canonpath (temp_string, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); if (current_dir == 0) current_dir = get_working_directory ("shell_init"); - else + else set_working_directory (current_dir); + if (posixly_correct && current_dir) + { + temp_var = bind_variable ("PWD", current_dir, 0); + set_auto_export (temp_var); + } free (current_dir); } else if (home_string && interactive_shell && login_shell && @@ -899,7 +892,11 @@ set_pwd () don't find OLDPWD in the environment, or it doesn't name a directory, make a dummy invisible variable for OLDPWD, and mark it as exported. */ temp_var = find_variable ("OLDPWD"); +#if defined (OLDPWD_CHECK_DIRECTORY) if (temp_var == 0 || value_cell (temp_var) == 0 || file_isdir (value_cell (temp_var)) == 0) +#else + if (temp_var == 0 || value_cell (temp_var) == 0) +#endif { temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); VSETATTR (temp_var, (att_exported | att_invisible)); @@ -1451,6 +1448,40 @@ get_subshell (var) return (var); } +static SHELL_VAR * +get_epochseconds (var) + SHELL_VAR *var; +{ + intmax_t now; + char *p; + + now = NOW; + p = itos (now); + + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + +static SHELL_VAR * +get_epochrealtime (var) + SHELL_VAR *var; +{ + char buf[32]; + char *p; + struct timeval tv; + + gettimeofday (&tv, NULL); + snprintf (buf, sizeof (buf), "%u%c%06u", (unsigned)tv.tv_sec, + locale_decpoint (), + (unsigned)tv.tv_usec); + + p = savestring (buf); + FREE (value_cell (var)); + var_setvalue (var, p); + return (var); +} + static SHELL_VAR * get_bashpid (var) SHELL_VAR *var; @@ -1462,11 +1493,49 @@ get_bashpid (var) p = itos (pid); FREE (value_cell (var)); - VSETATTR (var, att_integer|att_readonly); + VSETATTR (var, att_integer); /* XXX - was also att_readonly */ var_setvalue (var, p); return (var); } +static SHELL_VAR * +get_bash_argv0 (var) + SHELL_VAR *var; +{ + char *p; + + p = savestring (dollar_vars[0]); + FREE (value_cell (var)); + var_setvalue (var, p); + return var; +} + +static char *static_shell_name = 0; + +static SHELL_VAR * +assign_bash_argv0 (var, value, unused, key) + SHELL_VAR *var; + char *value; + arrayind_t unused; + char *key; +{ + size_t vlen; + + if (value == 0) + return var; + + FREE (dollar_vars[0]); + dollar_vars[0] = savestring (value); + + /* Need these gyrations because shell_name isn't dynamically allocated */ + vlen = STRLEN (value); + static_shell_name = xrealloc (static_shell_name, vlen + 1); + strcpy (static_shell_name, value); + + shell_name = static_shell_name; + return var; +} + static SHELL_VAR * get_bash_command (var) SHELL_VAR *var; @@ -1633,10 +1702,25 @@ assign_hashcmd (self, value, ind, key) char *key; { #if defined (RESTRICTED_SHELL) - if (restricted && strchr (value, '/')) + char *full_path; + + if (restricted) { - sh_restricted (value); - return (SHELL_VAR *)NULL; + if (strchr (value, '/')) + { + sh_restricted (value); + return (SHELL_VAR *)NULL; + } + /* If we are changing the hash table in a restricted shell, make sure the + target pathname can be found using a $PATH search. */ + full_path = find_user_command (value); + if (full_path == 0 || *full_path == 0 || executable_file (full_path) == 0) + { + sh_notfound (value); + free (full_path); + return ((SHELL_VAR *)NULL); + } + free (full_path); } #endif phash_insert (key, value, 0, 0); @@ -1758,16 +1842,23 @@ initialize_dynamic_variables () v = init_seconds_var (); + INIT_DYNAMIC_VAR ("BASH_ARGV0", (char *)NULL, get_bash_argv0, assign_bash_argv0); + INIT_DYNAMIC_VAR ("BASH_COMMAND", (char *)NULL, get_bash_command, (sh_var_assign_func_t *)NULL); INIT_DYNAMIC_VAR ("BASH_SUBSHELL", (char *)NULL, get_subshell, assign_subshell); INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random); VSETATTR (v, att_integer); INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno); - VSETATTR (v, att_integer); + VSETATTR (v, att_integer|att_regenerate); INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign); - VSETATTR (v, att_integer|att_readonly); + VSETATTR (v, att_integer); + + INIT_DYNAMIC_VAR ("EPOCHSECONDS", (char *)NULL, get_epochseconds, null_assign); + VSETATTR (v, att_regenerate); + INIT_DYNAMIC_VAR ("EPOCHREALTIME", (char *)NULL, get_epochrealtime, null_assign); + VSETATTR (v, att_regenerate); #if defined (HISTORY) INIT_DYNAMIC_VAR ("HISTCMD", (char *)NULL, get_histcmd, (sh_var_assign_func_t *)NULL); @@ -1904,7 +1995,7 @@ find_variable_nameref (v) SHELL_VAR *v; { int level, flags; - char *newname, *t; + char *newname; SHELL_VAR *orig, *oldv; level = 0; @@ -1926,6 +2017,13 @@ find_variable_nameref (v) if (v == orig || v == oldv) { internal_warning (_("%s: circular name reference"), orig->name); +#if 1 + /* XXX - provisional change - bash-5.0 - circular refs go to + global scope for resolution, without namerefs. */ + if (variable_context && v->context) + return (find_global_variable_noref (v->name)); + else +#endif return ((SHELL_VAR *)0); } } @@ -1995,7 +2093,6 @@ find_nameref_at_context (v, vc) VAR_CONTEXT *vc; { SHELL_VAR *nv, *nv2; - VAR_CONTEXT *nvc; char *newname; int level; @@ -2359,13 +2456,14 @@ set_if_not (name, value) /* Create a local variable referenced by NAME. */ SHELL_VAR * -make_local_variable (name) +make_local_variable (name, flags) const char *name; + int flags; { SHELL_VAR *new_var, *old_var, *old_ref; VAR_CONTEXT *vc; int was_tmpvar; - char *tmp_value; + char *old_value; /* We don't want to follow the nameref chain when making local variables; we just want to create them. */ @@ -2401,8 +2499,10 @@ make_local_variable (name) VUNSETATTR (old_var, att_invisible); /* XXX */ return (old_var); } - if (was_tmpvar) - tmp_value = value_cell (old_var); + + /* If we want to change to "inherit the old variable's value" semantics, + here is where to save the old value. */ + old_value = was_tmpvar ? value_cell (old_var) : (char *)NULL; for (vc = shell_variables; vc; vc = vc->down) if (vc_isfuncenv (vc) && vc->scope == variable_context) @@ -2448,10 +2548,40 @@ make_local_variable (name) things like `x=4 local x'. XXX - see above for temporary env variables with the same context level as variable_context */ /* XXX - we should only do this if the variable is not an array. */ + /* If we want to change the local variable semantics to "inherit + the old variable's value" here is where to set it. And we would + need to use copy_variable (currently unused) to do it for all + possible variable values. */ if (was_tmpvar) - var_setvalue (new_var, savestring (tmp_value)); + var_setvalue (new_var, savestring (old_value)); + else if (localvar_inherit || (flags & MKLOC_INHERIT)) + { + /* This may not make sense for nameref variables that are shadowing + variables with the same name, but we don't know that yet. */ +#if defined (ARRAY_VARS) + if (assoc_p (old_var)) + var_setassoc (new_var, assoc_copy (assoc_cell (old_var))); + else if (array_p (old_var)) + var_setarray (new_var, array_copy (array_cell (old_var))); + else if (value_cell (old_var)) +#else + if (value_cell (old_var)) +#endif + var_setvalue (new_var, savestring (value_cell (old_var))); + else + var_setvalue (new_var, (char *)NULL); + } - new_var->attributes = exported_p (old_var) ? att_exported : 0; + if (localvar_inherit || (flags & MKLOC_INHERIT)) + { + /* It doesn't make sense to inherit the nameref attribute */ + new_var->attributes = old_var->attributes & ~att_nameref; + new_var->dynamic_value = old_var->dynamic_value; + new_var->assign_func = old_var->assign_func; + } + else + /* We inherit the export attribute, but no others. */ + new_var->attributes = exported_p (old_var) ? att_exported : 0; } vc->flags |= VC_HASLOCAL; @@ -2462,7 +2592,9 @@ make_local_variable (name) if (ifsname (name)) setifs (new_var); - if (was_tmpvar == 0 && no_invisible_vars == 0) + /* value_cell will be 0 if localvar_inherit == 0 or there was no old variable + with the same name or the old variable was invisible */ + if (was_tmpvar == 0 && no_invisible_vars == 0 && value_cell (new_var) == 0) VSETATTR (new_var, att_invisible); /* XXX */ return (new_var); } @@ -2539,7 +2671,7 @@ make_local_array_variable (name, assoc_ok) SHELL_VAR *var; ARRAY *array; - var = make_local_variable (name); + var = make_local_variable (name, 0); /* XXX for now */ if (var == 0 || array_p (var) || (assoc_ok && assoc_p (var))) return var; @@ -2573,7 +2705,7 @@ make_local_assoc_variable (name) SHELL_VAR *var; HASH_TABLE *hash; - var = make_local_variable (name); + var = make_local_variable (name, 0); /* XXX for now */ if (var == 0 || assoc_p (var)) return var; @@ -2600,24 +2732,37 @@ make_variable_value (var, value, flags) then do expression evaluation on it and store the result. The functions in expr.c (evalexp()) and bind_int_variable() are responsible for turning off the integer flag if they don't want further - evaluation done. */ - if (integer_p (var)) + evaluation done. Callers that find it inconvenient to do this can set + the ASS_NOEVAL flag. For the special case of arithmetic expression + evaluation, the caller can set ASS_NOLONGJMP to avoid jumping out to + top_level. */ + if ((flags & ASS_NOEVAL) == 0 && integer_p (var)) { if (flags & ASS_APPEND) { oval = value_cell (var); - lval = evalexp (oval, &expok); /* ksh93 seems to do this */ + lval = evalexp (oval, 0, &expok); /* ksh93 seems to do this */ if (expok == 0) { - top_level_cleanup (); - jump_to_top_level (DISCARD); + if (flags & ASS_NOLONGJMP) + goto make_value; + else + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } } } - rval = evalexp (value, &expok); + rval = evalexp (value, 0, &expok); if (expok == 0) { - top_level_cleanup (); - jump_to_top_level (DISCARD); + if (flags & ASS_NOLONGJMP) + goto make_value; + else + { + top_level_cleanup (); + jump_to_top_level (DISCARD); + } } /* This can be fooled if the variable's value changes while evaluating `rval'. We can change it if we move the evaluation of lval to here. */ @@ -2626,7 +2771,7 @@ make_variable_value (var, value, flags) retval = itos (rval); } #if defined (CASEMOD_ATTRS) - else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var)) + else if ((flags & ASS_NOEVAL) == 0 && (capcase_p (var) || uppercase_p (var) || lowercase_p (var))) { if (flags & ASS_APPEND) { @@ -2655,6 +2800,7 @@ make_variable_value (var, value, flags) #endif /* CASEMOD_ATTRS */ else if (value) { +make_value: if (flags & ASS_APPEND) { oval = get_variable_value (var); @@ -2680,8 +2826,55 @@ make_variable_value (var, value, flags) return retval; } +/* If we can optimize appending to string variables, say so */ +static int +can_optimize_assignment (entry, value, aflags) + SHELL_VAR *entry; + char *value; + int aflags; +{ + if ((aflags & ASS_APPEND) == 0) + return 0; +#if defined (ARRAY_VARS) + if (array_p (entry) || assoc_p (entry)) + return 0; +#endif + if (integer_p (entry) || uppercase_p (entry) || lowercase_p (entry) || capcase_p (entry)) + return 0; + if (readonly_p (entry) || noassign_p (entry)) + return 0; + return 1; +} + +/* right now we optimize appends to string variables */ +static SHELL_VAR * +optimized_assignment (entry, value, aflags) + SHELL_VAR *entry; + char *value; + int aflags; +{ + size_t len, vlen; + char *v, *new; + + v = value_cell (entry); + len = STRLEN (v); + vlen = STRLEN (value); + + new = (char *)xrealloc (v, len + vlen + 8); /* for now */ + if (vlen == 1) + { + new[len] = *value; + new[len+1] = '\0'; + } + else + strcpy (new + len, value); + var_setvalue (entry, new); + return entry; +} + /* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the - temporary environment (but usually is not). */ + temporary environment (but usually is not). HFLAGS controls how NAME + is looked up in TABLE; AFLAGS controls how VALUE is assigned */ static SHELL_VAR * bind_variable_internal (name, value, table, hflags, aflags) const char *name; @@ -2723,7 +2916,7 @@ bind_variable_internal (name, value, table, hflags, aflags) /* declare -n foo=x[2] ; foo=bar */ if (valid_array_reference (newval, 0)) { - tname = array_variable_name (newval, (char **)0, (int *)0); + tname = array_variable_name (newval, 0, (char **)0, (int *)0); if (tname && (tentry = find_variable_noref (tname)) && nameref_p (tentry)) { /* nameref variables can't be arrays */ @@ -2734,21 +2927,21 @@ bind_variable_internal (name, value, table, hflags, aflags) } free (tname); /* XXX - should it be aflags? */ - entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags|ASS_NAMEREF); + entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF); if (entry == 0) return entry; } else #endif - { - entry = make_new_variable (newval, table); - var_setvalue (entry, make_variable_value (entry, value, 0)); - } + { + entry = make_new_variable (newval, table); + var_setvalue (entry, make_variable_value (entry, value, aflags)); + } } else if (entry == 0) { entry = make_new_variable (name, table); - var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */ + var_setvalue (entry, make_variable_value (entry, value, aflags)); /* XXX */ } else if (entry->assign_func) /* array vars have assign functions now */ { @@ -2777,12 +2970,27 @@ assign_value: /* Variables which are bound are visible. */ VUNSETATTR (entry, att_invisible); + /* If we can optimize the assignment, do so and return. Right now, we + optimize appends to string variables. */ + if (can_optimize_assignment (entry, value, aflags)) + { + INVALIDATE_EXPORTSTR (entry); + optimized_assignment (entry, value, aflags); + + if (mark_modified_vars) + VSETATTR (entry, att_exported); + + if (exported_p (entry)) + array_needs_making = 1; + + return (entry); + } + #if defined (ARRAY_VARS) if (assoc_p (entry) || array_p (entry)) newval = make_array_variable_value (entry, 0, "0", value, aflags); else #endif - newval = make_variable_value (entry, value, aflags); /* XXX */ /* Invalidate any cached export string */ @@ -2832,7 +3040,6 @@ bind_variable (name, value, flags) { SHELL_VAR *v, *nv; VAR_CONTEXT *vc, *nvc; - int level; if (shell_variables == 0) create_variable_tables (); @@ -2910,10 +3117,6 @@ bind_global_variable (name, value, flags) char *value; int flags; { - SHELL_VAR *v, *nv; - VAR_CONTEXT *vc, *nvc; - int level; - if (shell_variables == 0) create_variable_tables (); @@ -2996,18 +3199,19 @@ bind_variable_value (var, value, aflags) variable we set here, then turn it back on after binding as necessary. */ SHELL_VAR * -bind_int_variable (lhs, rhs) +bind_int_variable (lhs, rhs, flags) char *lhs, *rhs; + int flags; { register SHELL_VAR *v; int isint, isarr, implicitarray; isint = isarr = implicitarray = 0; #if defined (ARRAY_VARS) - if (valid_array_reference (lhs, 0)) + if (valid_array_reference (lhs, (flags & ASS_NOEXPAND) != 0)) { isarr = 1; - v = array_variable_part (lhs, (char **)0, (int *)0); + v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0); } else #endif @@ -3025,12 +3229,12 @@ bind_int_variable (lhs, rhs) #if defined (ARRAY_VARS) if (isarr) - v = assign_array_element (lhs, rhs, 0); + v = assign_array_element (lhs, rhs, flags); else if (implicitarray) - v = bind_array_variable (lhs, 0, rhs, 0); + v = bind_array_variable (lhs, 0, rhs, 0); /* XXX - check on flags */ else #endif - v = bind_variable (lhs, rhs, 0); + v = bind_variable (lhs, rhs, 0); /* why not use bind_variable_value? */ if (v) { @@ -3053,7 +3257,7 @@ bind_var_to_int (var, val) char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p; p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0); - return (bind_int_variable (var, p)); + return (bind_int_variable (var, p, 0)); } /* Do a function binding to a variable. You pass the name and @@ -3104,22 +3308,27 @@ bind_function (name, value) #if defined (DEBUGGER) /* Bind a function definition, which includes source file and line number - information in addition to the command, into the FUNCTION_DEF hash table.*/ + information in addition to the command, into the FUNCTION_DEF hash table. + If (FLAGS & 1), overwrite any existing definition. If FLAGS == 0, leave + any existing definition alone. */ void -bind_function_def (name, value) +bind_function_def (name, value, flags) const char *name; FUNCTION_DEF *value; + int flags; { FUNCTION_DEF *entry; BUCKET_CONTENTS *elt; COMMAND *cmd; entry = find_function_def (name); - if (entry) + if (entry && (flags & 1)) { dispose_function_def_contents (entry); entry = copy_function_def_contents (value, entry); } + else if (entry) + return; else { cmd = value->command; @@ -3503,7 +3712,8 @@ makunbound (name, vc) must be done so that if the variable is subsequently assigned a new value inside the function, the `local' attribute is still present. We also need to add it back into the correct hash table. */ - if (old_var && local_p (old_var) && variable_context == old_var->context) + if (old_var && local_p (old_var) && + (old_var->context == variable_context || (localvar_unset && old_var->context < variable_context))) { if (nofree_p (old_var)) var_setvalue (old_var, (char *)NULL); @@ -3960,7 +4170,7 @@ static int visible_array_vars (var) SHELL_VAR *var; { - return (invisible_p (var) == 0 && array_p (var)); + return (invisible_p (var) == 0 && (array_p (var) || assoc_p (var))); } SHELL_VAR ** @@ -4034,8 +4244,46 @@ find_tempenv_variable (name) char **tempvar_list; int tvlist_ind; +/* Take a variable from an assignment statement preceding a posix special + builtin (including `return') and create a global variable from it. This + is called from merge_temporary_env, which is only called when in posix + mode. */ +static void +push_posix_temp_var (data) + PTR_T data; +{ + SHELL_VAR *var, *v; + HASH_TABLE *binding_table; + + var = (SHELL_VAR *)data; + + binding_table = global_variables->table; + if (binding_table == 0) + binding_table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS); + + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); + + /* global variables are no longer temporary and don't need propagating. */ + var->attributes &= ~(att_tempvar|att_propagate); + if (v) + v->attributes |= var->attributes; + + if (find_special_var (var->name) >= 0) + tempvar_list[tvlist_ind++] = savestring (var->name); + + dispose_variable (var); +} + /* Push the variable described by (SHELL_VAR *)DATA down to the next - variable context from the temporary environment. */ + variable context from the temporary environment. This can be called + from one context: + 1. propagate_temp_var: which is called to propagate variables in + assignments like `var=value declare -x var' to the surrounding + scope. + + In this case, the variable should have the att_propagate flag set and + we can create variables in the current scope. +*/ static void push_temp_var (data) PTR_T data; @@ -4055,10 +4303,13 @@ push_temp_var (data) binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS); } - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE); + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP); /* XXX - should we set the context here? It shouldn't matter because of how - assign_in_env works, but might want to check. */ + assign_in_env works, but we do it anyway. */ + if (v) + v->context = shell_variables->scope; + if (binding_table == global_variables->table) /* XXX */ var->attributes &= ~(att_tempvar|att_propagate); else @@ -4076,6 +4327,10 @@ push_temp_var (data) dispose_variable (var); } +/* Take a variable described by DATA and push it to the surrounding scope if + the PROPAGATE attribute is set. That gets set by push_temp_var if we are + taking a variable like `var=value declare -x var' and propagating it to + the enclosing scope. */ static void propagate_temp_var (data) PTR_T data; @@ -4139,12 +4394,15 @@ dispose_used_env_vars () } /* Take all of the shell variables in the temporary environment HASH_TABLE - and make shell variables from them at the current variable context. */ + and make shell variables from them at the current variable context. + Right now, this is only called in Posix mode to implement the historical + accident of creating global variables from assignment statements preceding + special builtins, but we check in case this acquires another caller later. */ void merge_temporary_env () { if (temporary_env) - dispose_temporary_env (push_temp_var); + dispose_temporary_env (posixly_correct ? push_posix_temp_var : push_temp_var); } void @@ -4170,7 +4428,7 @@ mk_env_string (name, value, isfunc) int isfunc; { size_t name_len, value_len; - char *p, *q; + char *p, *q, *t; name_len = strlen (name); value_len = STRLEN (value); @@ -4197,7 +4455,17 @@ mk_env_string (name, value, isfunc) q[0] = '='; if (value && *value) - memcpy (q + 1, value, value_len + 1); + { + if (isfunc) + { + t = dequote_escapes (value); + value_len = STRLEN (t); + memcpy (q + 1, t, value_len + 1); + free (t); + } + else + memcpy (q + 1, value, value_len + 1); + } else q[1] = '\0'; @@ -4260,6 +4528,14 @@ make_env_array_from_var_list (vars) /* We don't use the exportstr stuff on Cygwin at all. */ INVALIDATE_EXPORTSTR (var); #endif + + /* If the value is generated dynamically, generate it here. */ + if (regen_p (var) && var->dynamic_value) + { + var = (*(var->dynamic_value)) (var); + INVALIDATE_EXPORTSTR (var); + } + if (var->exportstr) value = var->exportstr; else if (function_p (var)) @@ -4613,11 +4889,21 @@ push_var_context (name, flags, tempvars) HASH_TABLE *tempvars; { VAR_CONTEXT *vc; + int posix_func_behavior; + + /* As of IEEE Std 1003.1-2017, assignment statements preceding shell + functions no longer behave like assignment statements preceding + special builtins, and do not persist in the current shell environment. */ + posix_func_behavior = posixly_correct; /* placeholder for later */ vc = new_var_context (name, flags); - vc->table = tempvars; - if (tempvars) + /* Posix interp 1009, temporary assignments preceding function calls modify + the current environment *before* the command is executed. */ + if (posix_func_behavior && tempvars == temporary_env) + merge_temporary_env (); + else if (tempvars) { + vc->table = tempvars; /* Have to do this because the temp environment was created before variable_context was incremented. */ flatten (tempvars, set_context, (VARLIST *)NULL, 0); @@ -4629,27 +4915,44 @@ push_var_context (name, flags, tempvars) return (shell_variables = vc); } +/* This can be called from one of two code paths: + 1. pop_scope, which implements the posix rules for propagating variable + assignments preceding special builtins to the surrounding scope. + 2. pop_var_context, which is called from pop_context and implements the + posix rules for propagating variable assignments preceding function + calls to the surrounding scope. + + It takes variables out of a temporary environment hash table. We take the + variable in data +*/ static void push_func_var (data) PTR_T data; { SHELL_VAR *var, *v; + int posix_func_behavior; var = (SHELL_VAR *)data; + /* As of IEEE Std 1003.1-2017, assignment statements preceding shell + functions no longer behave like assignment statements preceding + special builtins, and do not persist in the current shell environment. */ + posix_func_behavior = posixly_correct; /* placeholder for later */ if (local_p (var) && STREQ (var->name, "-")) set_current_options (value_cell (var)); - else if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) + else if (tempvar_p (var) && (posix_func_behavior || (var->attributes & att_propagate))) { /* Make sure we have a hash table to store the variable in while it is being propagated down to the global variables table. Create one if we have to */ if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0) shell_variables->table = hash_create (VARIABLES_HASH_BUCKETS); - /* XXX - should we set v->context here? */ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); + /* XXX - should we set v->context here? */ + if (v) + v->context = shell_variables->scope; #if defined (ARRAY_VARS) - if (array_p (var) || assoc_p (var)) + if (v && (array_p (var) || assoc_p (var))) { FREE (value_cell (v)); if (array_p (var)) @@ -4741,18 +5044,17 @@ push_exported_var (data) propagated, bind it in the previous scope before disposing it. */ /* XXX - This isn't exactly right, because all tempenv variables have the export attribute set. */ -#if 0 - if (exported_p (var) || (var->attributes & att_propagate)) -#else if (tempvar_p (var) && exported_p (var) && (var->attributes & att_propagate)) -#endif { var->attributes &= ~att_tempvar; /* XXX */ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); if (shell_variables == global_variables) var->attributes &= ~att_propagate; if (v) - v->attributes |= var->attributes; + { + v->attributes |= var->attributes; + v->context = shell_variables->scope; + } } else stupidly_hack_special_variables (var->name); /* XXX */ @@ -4760,11 +5062,17 @@ push_exported_var (data) dispose_variable (var); } +/* This is called to propagate variables in the temporary environment of a + special builtin (if IS_SPECIAL != 0) or exported variables that are the + result of a builtin like `source' or `command' that can operate on the + variables in its temporary environment. In the first case, we call + push_func_var, which does the right thing (for now) */ void pop_scope (is_special) int is_special; { VAR_CONTEXT *vcxt, *ret; + int is_bltinenv; vcxt = shell_variables; if (vc_istempscope (vcxt) == 0) @@ -4772,6 +5080,7 @@ pop_scope (is_special) internal_error (_("pop_scope: head of shell_variables not a temporary environment scope")); return; } + is_bltinenv = vc_isbltnenv (vcxt); /* XXX - for later */ ret = vcxt->down; if (ret) @@ -4867,6 +5176,28 @@ dispose_saved_dollar_vars () dollar_arg_stack[dollar_arg_stack_index] = (WORD_LIST *)NULL; } +/* Initialize BASH_ARGV and BASH_ARGC after turning on extdebug after the + shell is initialized */ +void +init_bash_argv () +{ + if (bash_argv_initialized == 0) + { + save_bash_argv (); + bash_argv_initialized = 1; + } +} + +void +save_bash_argv () +{ + WORD_LIST *list; + + list = list_rest_of_args (); + push_args (list); + dispose_words (list); +} + /* Manipulate the special BASH_ARGV and BASH_ARGC variables. */ void @@ -4924,11 +5255,6 @@ pop_args () *************************************************/ /* Extern declarations for variables this code has to manage. */ -extern int eof_encountered, eof_encountered_limit, ignoreeof; - -#if defined (READLINE) -extern int hostname_list_initialized; -#endif /* An alist of name.function for each special variable. Most of the functions don't do much, and in fact, this would be faster with a @@ -5512,7 +5838,7 @@ set_pipestatus_array (ps, nproc) { ae = element_forw (a->head); free (element_value (ae)); - ae->value = itos (ps[0]); + set_element_value (ae, itos (ps[0])); } else if (array_num_elements (a) <= nproc) { @@ -5522,7 +5848,7 @@ set_pipestatus_array (ps, nproc) { ae = element_forw (ae); free (element_value (ae)); - ae->value = itos (ps[i]); + set_element_value (ae, itos (ps[i])); } /* add any more */ for ( ; i < nproc; i++) @@ -5547,16 +5873,15 @@ ARRAY * save_pipestatus_array () { SHELL_VAR *v; - ARRAY *a, *a2; + ARRAY *a; v = find_variable ("PIPESTATUS"); if (v == 0 || array_p (v) == 0 || array_cell (v) == 0) return ((ARRAY *)NULL); - a = array_cell (v); - a2 = array_copy (array_cell (v)); + a = array_copy (array_cell (v)); - return a2; + return a; } void diff --git a/variables.h b/variables.h index 25c9ae072..bc1546d16 100644 --- a/variables.h +++ b/variables.h @@ -1,6 +1,6 @@ /* variables.h -- data structures for shell variables. */ -/* Copyright (C) 1987-2015 Free Software Foundation, Inc. +/* Copyright (C) 1987-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -125,6 +125,7 @@ typedef struct _vlist { #define att_imported 0x0008000 /* came from environment */ #define att_special 0x0010000 /* requires special handling */ #define att_nofree 0x0020000 /* do not free value on unset */ +#define att_regenerate 0x0040000 /* regenerate when exported */ #define attmask_int 0x00ff000 @@ -153,8 +154,10 @@ typedef struct _vlist { #define imported_p(var) ((((var)->attributes) & (att_imported))) #define specialvar_p(var) ((((var)->attributes) & (att_special))) #define nofree_p(var) ((((var)->attributes) & (att_nofree))) +#define regen_p(var) ((((var)->attributes) & (att_regenerate))) #define tempvar_p(var) ((((var)->attributes) & (att_tempvar))) +#define propagate_p(var) ((((var)->attributes) & (att_propagate))) /* Variable names: lvalues */ #define name_cell(var) ((var)->name) @@ -218,6 +221,9 @@ typedef struct _vlist { #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') +/* Flag values for make_local_variable */ +#define MKLOC_INHERIT 0x01 + /* Special value for nameref with invalid value for creation or assignment */ extern SHELL_VAR nameref_invalid_value; #define INVALID_NAMEREF_VALUE (void *)&nameref_invalid_value @@ -236,6 +242,14 @@ extern int variable_context; extern char *dollar_vars[]; extern char **export_env; +extern int tempenv_assign_error; +extern int array_needs_making; +extern int shell_level; + +/* XXX */ +extern WORD_LIST *rest_of_args; +extern pid_t dollar_dollar_pid; + extern void initialize_shell_variables __P((char **, int)); extern SHELL_VAR *set_if_not __P((char *, char *)); @@ -265,12 +279,12 @@ extern SHELL_VAR *find_tempenv_variable __P((const char *)); extern SHELL_VAR *find_variable_no_invisible __P((const char *)); extern SHELL_VAR *find_variable_for_assignment __P((const char *)); extern SHELL_VAR *copy_variable __P((SHELL_VAR *)); -extern SHELL_VAR *make_local_variable __P((const char *)); +extern SHELL_VAR *make_local_variable __P((const char *, int)); extern SHELL_VAR *bind_variable __P((const char *, char *, int)); extern SHELL_VAR *bind_global_variable __P((const char *, char *, int)); extern SHELL_VAR *bind_function __P((const char *, COMMAND *)); -extern void bind_function_def __P((const char *, FUNCTION_DEF *)); +extern void bind_function_def __P((const char *, FUNCTION_DEF *, int)); extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *)); SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *)); @@ -296,7 +310,7 @@ extern char *sh_get_env_value __P((const char *)); extern char *make_variable_value __P((SHELL_VAR *, char *, int)); extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int)); -extern SHELL_VAR *bind_int_variable __P((char *, char *)); +extern SHELL_VAR *bind_int_variable __P((char *, char *, int)); extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t)); extern int assign_in_env __P((WORD_DESC *, int)); @@ -326,6 +340,8 @@ extern void push_dollar_vars __P((void)); extern void pop_dollar_vars __P((void)); extern void dispose_saved_dollar_vars __P((void)); +extern void init_bash_argv __P((void)); +extern void save_bash_argv __P((void)); extern void push_args __P((WORD_LIST *)); extern void pop_args __P((void)); diff --git a/version.c b/version.c index f241c5c78..922c8d69c 100644 --- a/version.c +++ b/version.c @@ -1,6 +1,6 @@ /* version.c -- distribution and version numbers. */ -/* Copyright (C) 1989-2016 Free Software Foundation, Inc. +/* Copyright (C) 1989-2018 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,7 +43,7 @@ const char * const release_status = (char *)0; #endif const char * const sccs_version = SCCSVERSION; -const char * const bash_copyright = N_("Copyright (C) 2016 Free Software Foundation, Inc."); +const char * const bash_copyright = N_("Copyright (C) 2018 Free Software Foundation, Inc."); const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later \n"); /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ diff --git a/xmalloc.c b/xmalloc.c index b32c0685f..ca297dcf0 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -51,9 +51,11 @@ extern char *sbrk(); #endif +#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC) static PTR_T lbreak; static int brkfound; static size_t allocated; +#endif /* **************************************************************** */ /* */ diff --git a/y.tab.c b/y.tab.c index e9a57fcc8..d894bf604 100644 --- a/y.tab.c +++ b/y.tab.c @@ -90,6 +90,7 @@ #define NEED_STRFTIME_DECL /* used in externs.h */ #include "shell.h" +#include "execute_cmd.h" #include "typemax.h" /* SIZE_MAX if needed */ #include "trap.h" #include "flags.h" @@ -139,6 +140,8 @@ typedef void *alias_t; #define RE_READ_TOKEN -99 #define NO_EXPANSION -100 +#define END_ALIAS -2 + #ifdef DEBUG # define YYDEBUG 1 #else @@ -160,24 +163,12 @@ typedef void *alias_t; extern int extended_glob; #endif -extern int eof_encountered; -extern int no_line_editing, running_under_emacs; -extern int current_command_number; -extern int sourcelevel, parse_and_execute_level; -extern int posixly_correct; -extern int last_command_exit_value; -extern pid_t last_command_subst_pid; -extern char *shell_name, *current_host_name; -extern char *dist_version; -extern int patch_level; extern int dump_translatable_strings, dump_po_strings; -extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; -extern int here_doc_first_line; -#if defined (BUFFERED_INPUT) -extern int bash_input_fd_changed; -#endif +#if !defined (errno) extern int errno; +#endif + /* **************************************************************** */ /* */ /* "Forward" declarations */ @@ -263,6 +254,7 @@ static void print_prompt __P((void)); #if defined (HANDLE_MULTIBYTE) static void set_line_mbstate __P((void)); static char *shell_input_line_property = NULL; +static size_t shell_input_line_propsize = 0; #else # define set_line_mbstate() #endif @@ -374,7 +366,10 @@ static WORD_DESC *word_desc_to_read; static REDIRECTEE source; static REDIRECTEE redir; -#line 378 "y.tab.c" /* yacc.c:339 */ +static FILE *yyoutstream; +static FILE *yyerrstream; + +#line 373 "y.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -512,7 +507,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ @@ -522,7 +517,7 @@ union YYSTYPE ELEMENT element; PATTERN_LIST *pattern; -#line 526 "y.tab.c" /* yacc.c:355 */ +#line 521 "y.tab.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -539,7 +534,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 543 "y.tab.c" /* yacc.c:358 */ +#line 538 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -779,18 +774,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 116 +#define YYFINAL 117 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 638 +#define YYLAST 609 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 61 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 38 /* YYNRULES -- Number of rules. */ -#define YYNRULES 167 +#define YYNRULES 168 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 334 +#define YYNSTATES 335 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -841,23 +836,23 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 386, 386, 397, 406, 421, 431, 433, 437, 443, - 449, 455, 461, 467, 473, 479, 485, 491, 497, 503, - 509, 515, 521, 527, 534, 541, 548, 555, 562, 569, - 575, 581, 587, 593, 599, 605, 611, 617, 623, 629, - 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, - 695, 701, 709, 711, 713, 717, 721, 732, 734, 738, - 740, 742, 758, 760, 764, 766, 768, 770, 772, 774, - 776, 778, 780, 782, 784, 788, 793, 798, 803, 808, - 813, 818, 823, 830, 835, 840, 845, 852, 857, 862, - 867, 872, 877, 884, 889, 894, 901, 904, 907, 911, - 913, 944, 951, 956, 973, 978, 995, 1002, 1004, 1006, - 1011, 1015, 1019, 1023, 1025, 1027, 1031, 1032, 1036, 1038, - 1040, 1042, 1046, 1048, 1050, 1052, 1054, 1056, 1060, 1062, - 1071, 1079, 1080, 1086, 1087, 1094, 1098, 1100, 1102, 1109, - 1111, 1113, 1117, 1118, 1121, 1123, 1125, 1129, 1130, 1139, - 1152, 1168, 1183, 1185, 1187, 1194, 1197, 1201, 1203, 1209, - 1215, 1234, 1256, 1258, 1281, 1285, 1287, 1289 + 0, 381, 381, 392, 401, 416, 432, 442, 444, 448, + 454, 460, 466, 472, 478, 484, 490, 496, 502, 508, + 514, 520, 526, 532, 538, 545, 552, 559, 566, 573, + 580, 586, 592, 598, 604, 610, 616, 622, 628, 634, + 640, 646, 652, 658, 664, 670, 676, 682, 688, 694, + 700, 706, 712, 720, 722, 724, 728, 732, 743, 745, + 749, 751, 753, 769, 771, 775, 777, 779, 781, 783, + 785, 787, 789, 791, 793, 795, 799, 804, 809, 814, + 819, 824, 829, 834, 841, 847, 853, 859, 867, 872, + 877, 882, 887, 892, 899, 904, 909, 916, 919, 922, + 926, 928, 959, 966, 971, 988, 993, 1010, 1017, 1019, + 1021, 1026, 1030, 1034, 1038, 1040, 1042, 1046, 1047, 1051, + 1053, 1055, 1057, 1061, 1063, 1065, 1067, 1069, 1071, 1075, + 1077, 1086, 1094, 1095, 1101, 1102, 1109, 1113, 1115, 1117, + 1124, 1126, 1128, 1132, 1133, 1136, 1138, 1140, 1144, 1145, + 1154, 1167, 1183, 1198, 1200, 1202, 1209, 1212, 1216, 1218, + 1224, 1230, 1250, 1273, 1275, 1298, 1302, 1304, 1306 }; #endif @@ -904,10 +899,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -205 +#define YYPACT_NINF -203 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-205))) + (!!((Yystate) == (-203))) #define YYTABLE_NINF -1 @@ -918,40 +913,40 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 308, -28, -205, 6, -1, 37, -205, -205, 57, 558, - 18, 358, 54, 45, -205, 251, 583, -205, 102, 104, - 35, 107, 80, 112, 127, 140, 146, 147, -205, -205, - 153, 154, -205, -205, 188, -205, -205, 196, -205, 219, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, 17, 23, -205, -19, 358, -205, -205, 185, 408, - -205, 144, 51, 166, 189, 207, 133, 28, 196, 219, - 211, -205, -205, -205, -205, -205, 201, 184, 220, 226, - 81, 227, 126, 233, 234, 241, 242, 245, 246, 249, - 142, 255, 148, 256, 257, 259, 266, 267, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, 243, 240, -205, -205, -205, -205, - 219, -205, -205, -205, -205, -205, 458, 458, -205, -205, - -205, -205, -205, -205, -205, 299, -205, 68, -205, 61, - -205, -205, -205, -205, 72, -205, -205, 244, 41, 219, - 219, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, 408, 408, 63, 63, 508, - 508, 179, -205, -205, -205, -205, -205, -205, 60, -205, - 155, -205, 287, 252, 74, 108, -205, 286, -205, 300, - 302, -205, 219, -205, 219, 41, -205, -205, -19, -19, - -205, -205, -205, 307, 408, 408, 408, 408, 408, 313, - 159, -205, -4, -205, -205, 312, -205, 161, -205, 265, - -205, -205, -205, -205, -205, -205, 314, 408, 161, 270, - -205, -205, 41, 219, -205, 332, 336, -205, -205, -205, - 87, 87, 87, -205, -205, -205, -205, 178, 11, -205, - -205, 315, -43, 327, 298, -205, -205, -205, 110, -205, - 342, 306, 343, 319, -205, 299, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -32, 346, -205, -205, -205, - 113, -205, -205, -205, -205, -205, -205, 118, 137, -205, - -205, -205, 408, -205, -205, 363, 321, -205, -205, -205, - -205, -205, 408, 367, 325, -205, -205, 374, 333, -205, - -205, -205, -205, -205 + 309, -2, -203, -20, 2, 3, -203, -203, 5, 509, + 31, 359, 45, 33, -203, 252, 554, -203, 76, 102, + -8, 105, 131, 108, 128, 152, 157, 162, -203, -203, + 169, 174, -203, -203, 107, -203, -203, 229, -203, 541, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, 61, 244, -203, -28, 359, -203, -203, -203, 200, + 29, -203, 163, 48, 167, 193, 218, 181, 223, 229, + 541, 233, -203, -203, -203, -203, -203, 217, 203, 243, + 253, 145, 255, 146, 277, 279, 285, 287, 292, 297, + 298, 164, 302, 198, 303, 304, 307, 308, 314, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, 228, 281, -203, -203, -203, + -203, 541, -203, -203, -203, -203, -203, 409, 409, -203, + -203, -203, -203, -203, -203, -203, 210, -203, -13, -203, + 87, -203, -203, -203, -203, 148, -203, -203, 282, 155, + 541, 541, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, 29, 29, 20, 20, + 459, 459, 104, -203, -203, -203, -203, -203, -203, 46, + -203, 68, -203, 328, 291, 75, 119, -203, 324, -203, + 336, 342, -203, 541, -203, 541, 155, -203, -203, -28, + -28, -203, -203, -203, 351, 29, 29, 29, 29, 29, + 350, 81, -203, 78, -203, -203, 358, -203, 197, -203, + 316, -203, -203, -203, -203, -203, -203, 363, 29, 197, + 321, -203, -203, 155, 541, -203, 373, 361, -203, -203, + -203, 91, 91, 91, -203, -203, -203, -203, 260, 130, + -203, -203, 357, -38, 369, 332, -203, -203, -203, 129, + -203, 376, 334, 378, 341, -203, 210, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -30, 374, -203, -203, + -203, 168, -203, -203, -203, -203, -203, -203, 194, 216, + -203, -203, -203, 29, -203, -203, 386, 349, -203, -203, + -203, -203, -203, 29, 393, 365, -203, -203, 400, 366, + -203, -203, -203, -203, -203 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -959,58 +954,58 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 147, 0, 0, 0, 147, 147, 0, 0, - 0, 0, 165, 52, 53, 0, 0, 111, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, - 0, 0, 147, 147, 0, 54, 57, 59, 164, 60, - 64, 74, 68, 65, 62, 70, 63, 69, 71, 72, - 73, 0, 149, 156, 157, 0, 4, 131, 0, 0, - 147, 147, 0, 147, 0, 0, 147, 52, 106, 102, - 0, 145, 144, 146, 161, 158, 166, 0, 0, 0, + 0, 0, 148, 0, 0, 0, 148, 148, 0, 0, + 0, 0, 166, 53, 54, 0, 0, 112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, + 0, 0, 148, 148, 0, 55, 58, 60, 165, 61, + 65, 75, 69, 66, 63, 71, 64, 70, 72, 73, + 74, 0, 150, 157, 158, 0, 4, 5, 132, 0, + 0, 148, 148, 0, 148, 0, 0, 148, 53, 107, + 103, 0, 146, 145, 147, 162, 159, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, - 38, 32, 47, 29, 41, 35, 44, 26, 50, 51, - 20, 17, 8, 9, 0, 0, 1, 52, 58, 55, - 61, 142, 143, 2, 147, 147, 150, 151, 147, 147, - 160, 159, 147, 148, 130, 132, 141, 0, 147, 0, - 147, 147, 147, 147, 0, 147, 147, 0, 0, 104, - 103, 112, 167, 147, 16, 25, 40, 34, 49, 31, - 43, 37, 46, 28, 22, 19, 12, 13, 15, 24, - 39, 33, 48, 30, 42, 36, 45, 27, 21, 18, - 10, 11, 110, 101, 56, 0, 0, 154, 155, 0, - 0, 0, 147, 147, 147, 147, 147, 147, 0, 147, - 0, 147, 0, 0, 0, 0, 147, 0, 147, 0, - 0, 147, 99, 98, 105, 0, 152, 153, 163, 162, - 147, 147, 107, 0, 0, 0, 134, 135, 133, 0, - 116, 147, 0, 147, 147, 0, 6, 0, 147, 0, - 85, 86, 147, 147, 147, 147, 0, 0, 0, 0, - 66, 67, 0, 100, 96, 0, 0, 109, 136, 137, - 138, 139, 140, 95, 122, 124, 126, 117, 0, 93, - 128, 0, 0, 0, 0, 75, 7, 147, 0, 76, - 0, 0, 0, 0, 87, 0, 147, 88, 97, 108, - 147, 123, 125, 127, 94, 0, 0, 147, 77, 78, - 0, 147, 147, 83, 84, 89, 90, 0, 113, 147, - 129, 118, 119, 147, 147, 0, 0, 147, 147, 147, - 115, 120, 121, 0, 0, 81, 82, 0, 0, 114, - 79, 80, 91, 92 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 24, 39, 33, 48, 30, 42, 36, 45, 27, 51, + 52, 21, 18, 9, 10, 0, 0, 1, 53, 59, + 56, 62, 143, 144, 2, 148, 148, 151, 152, 148, + 148, 161, 160, 148, 149, 131, 133, 142, 0, 148, + 0, 148, 148, 148, 148, 0, 148, 148, 0, 0, + 105, 104, 113, 168, 148, 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, 111, 102, 57, 0, 0, 155, 156, + 0, 0, 0, 148, 148, 148, 148, 148, 148, 0, + 148, 0, 148, 0, 0, 0, 0, 148, 0, 148, + 0, 0, 148, 100, 99, 106, 0, 153, 154, 164, + 163, 148, 148, 108, 0, 0, 0, 135, 136, 134, + 0, 117, 148, 0, 148, 148, 0, 7, 0, 148, + 0, 86, 87, 148, 148, 148, 148, 0, 0, 0, + 0, 67, 68, 0, 101, 97, 0, 0, 110, 137, + 138, 139, 140, 141, 96, 123, 125, 127, 118, 0, + 94, 129, 0, 0, 0, 0, 76, 8, 148, 0, + 77, 0, 0, 0, 0, 88, 0, 148, 89, 98, + 109, 148, 124, 126, 128, 95, 0, 0, 148, 78, + 79, 0, 148, 148, 84, 85, 90, 91, 0, 114, + 148, 130, 119, 120, 148, 148, 0, 0, 148, 148, + 148, 116, 121, 122, 0, 0, 82, 83, 0, 0, + 115, 80, 81, 92, 93 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -205, -205, 183, -36, -23, -50, 364, -205, -7, -205, - -205, -205, -205, -205, -204, -205, -205, -205, -205, -205, - -205, 84, -205, 167, -205, 128, -202, -6, -205, 52, - -205, -46, -48, -205, -119, 24, -33, -205 + -203, -203, 220, -36, -33, -60, 420, -203, -7, -203, + -203, -203, -203, -203, -123, -203, -203, -203, -203, -203, + -203, 121, -203, 201, -203, 170, -202, -6, -203, 232, + -203, -46, -48, -203, -116, 24, 125, -203 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 34, 237, 35, 36, 120, 37, 38, 39, 40, - 41, 42, 43, 44, 213, 45, 46, 47, 48, 49, - 50, 223, 229, 230, 231, 272, 57, 58, 134, 135, - 123, 74, 59, 51, 52, 136, 54, 55 + -1, 34, 238, 35, 36, 121, 37, 38, 39, 40, + 41, 42, 43, 44, 214, 45, 46, 47, 48, 49, + 50, 224, 230, 231, 232, 273, 58, 59, 135, 136, + 124, 75, 60, 51, 52, 137, 54, 55 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1018,138 +1013,132 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 64, 65, 69, 119, 246, 269, 249, 187, 188, 130, - 296, 254, 137, 139, 118, 144, 142, 297, 148, 150, - 294, 296, 270, 56, 53, 61, 114, 115, 309, 128, - 62, 2, 60, 119, 129, 75, 3, 270, 4, 5, - 6, 7, 282, 283, 2, 118, 10, 133, 288, 3, - 70, 4, 5, 6, 7, 271, 124, 125, 17, 10, - 149, 100, 133, 63, 101, 140, 216, 217, 121, 122, - 271, 17, 126, 127, 233, 199, 185, 186, 76, 131, - 189, 190, 200, 66, 184, 32, 206, 33, 242, 197, - 198, 102, 133, 207, 204, 205, 124, 125, 32, 214, - 33, 71, 72, 73, 77, 215, 104, 156, 141, 105, - 157, 133, 133, 119, 184, 327, 328, 234, 201, 133, - 192, 193, 244, 133, 301, 133, 191, 313, 98, 208, - 99, 243, 317, 103, 202, 203, 106, 158, 107, 209, - 210, 212, 319, 221, 224, 225, 226, 227, 228, 232, - 53, 53, 160, 108, 238, 161, 218, 219, 247, 133, - 247, 133, 253, 252, 133, 245, 109, 302, 170, 133, - 314, 171, 110, 111, 174, 318, 119, 175, 184, 112, - 113, 236, 162, 268, 220, 221, 222, 276, 116, 132, - 278, 277, 147, 235, 138, 239, 247, 247, 172, 264, - 265, 266, 286, 145, 176, 71, 72, 73, 212, 53, - 53, 71, 72, 73, 255, 256, 143, 184, 291, 292, - 293, 146, 117, 14, 15, 16, 152, 273, 274, 300, - 151, 18, 19, 20, 21, 22, 280, 281, 307, 23, - 24, 25, 26, 27, 153, 212, 154, 15, 16, 312, - 30, 31, 155, 159, 18, 19, 20, 21, 22, 163, - 164, 322, 23, 24, 25, 26, 27, 165, 166, 247, - 247, 167, 168, 30, 31, 169, 258, 259, 260, 261, - 262, 173, 177, 178, 308, 179, 78, 79, 80, 81, - 82, 311, 180, 181, 83, 315, 316, 84, 85, 285, - 183, 182, 240, 321, 211, 86, 87, 323, 324, 1, - 241, 2, 236, 329, 257, 250, 3, 251, 4, 5, - 6, 7, 263, 279, 8, 9, 10, 275, 287, 284, - 11, 12, 192, 193, 13, 14, 15, 16, 17, 289, - 290, 270, 298, 18, 19, 20, 21, 22, 194, 195, - 196, 23, 24, 25, 26, 27, 299, 303, 305, 28, - 29, 2, 30, 31, 304, 32, 3, 33, 4, 5, - 6, 7, 310, 68, 8, 9, 10, 306, 325, 326, - 11, 12, 330, 331, 13, 14, 15, 16, 17, 332, - 248, 333, 320, 18, 19, 20, 21, 22, 267, 295, - 0, 23, 24, 25, 26, 27, 0, 0, 71, 72, - 73, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, - 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, - 6, 7, 0, 0, 0, 0, 10, 0, 0, 0, - 0, 0, 0, 0, 67, 14, 15, 16, 17, 0, - 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, - 0, 0, 30, 31, 0, 32, 0, 33, 88, 89, - 90, 91, 92, 0, 0, 0, 93, 0, 0, 94, - 95, 0, 0, 0, 0, 0, 0, 96, 97 + 65, 66, 70, 120, 119, 247, 61, 250, 198, 131, + 151, 188, 189, 138, 140, 297, 145, 143, 101, 149, + 129, 102, 298, 297, 53, 130, 115, 116, 62, 64, + 310, 67, 2, 63, 120, 76, 119, 3, 134, 4, + 5, 6, 7, 283, 284, 8, 9, 10, 103, 56, + 57, 11, 12, 125, 126, 13, 14, 15, 16, 17, + 234, 150, 141, 71, 18, 19, 20, 21, 22, 77, + 217, 218, 23, 24, 25, 26, 27, 186, 187, 132, + 134, 190, 191, 30, 31, 185, 32, 270, 33, 243, + 215, 199, 78, 255, 237, 205, 206, 134, 72, 73, + 74, 200, 99, 235, 271, 142, 216, 117, 201, 221, + 222, 223, 122, 123, 120, 185, 328, 329, 72, 73, + 74, 265, 266, 267, 193, 194, 134, 192, 100, 134, + 289, 104, 244, 245, 108, 203, 204, 272, 134, 295, + 210, 211, 213, 302, 202, 225, 226, 227, 228, 229, + 233, 53, 53, 254, 109, 239, 271, 105, 2, 248, + 106, 248, 207, 3, 253, 4, 5, 6, 7, 208, + 134, 157, 161, 10, 158, 162, 246, 120, 110, 185, + 134, 134, 314, 111, 269, 17, 303, 107, 112, 272, + 171, 279, 278, 172, 236, 113, 240, 248, 248, 134, + 114, 159, 163, 287, 133, 209, 134, 146, 318, 213, + 53, 53, 32, 139, 33, 256, 257, 144, 185, 134, + 173, 320, 222, 277, 175, 315, 2, 176, 274, 275, + 301, 3, 147, 4, 5, 6, 7, 281, 282, 308, + 148, 10, 153, 193, 194, 134, 213, 72, 73, 74, + 313, 319, 152, 17, 177, 118, 14, 15, 16, 195, + 196, 197, 323, 154, 18, 19, 20, 21, 22, 155, + 248, 248, 23, 24, 25, 26, 27, 125, 126, 156, + 32, 160, 33, 30, 31, 309, 183, 79, 80, 81, + 82, 83, 312, 127, 128, 84, 316, 317, 85, 86, + 292, 293, 294, 164, 322, 165, 87, 88, 324, 325, + 1, 166, 2, 167, 330, 219, 220, 3, 168, 4, + 5, 6, 7, 169, 170, 8, 9, 10, 174, 178, + 179, 11, 12, 180, 181, 13, 14, 15, 16, 17, + 182, 184, 212, 241, 18, 19, 20, 21, 22, 242, + 237, 251, 23, 24, 25, 26, 27, 252, 258, 264, + 28, 29, 2, 30, 31, 291, 32, 3, 33, 4, + 5, 6, 7, 276, 280, 8, 9, 10, 285, 288, + 290, 11, 12, 271, 299, 13, 14, 15, 16, 17, + 300, 304, 305, 306, 18, 19, 20, 21, 22, 307, + 311, 326, 23, 24, 25, 26, 27, 327, 331, 72, + 73, 74, 2, 30, 31, 333, 32, 3, 33, 4, + 5, 6, 7, 332, 334, 8, 9, 10, 249, 69, + 321, 11, 12, 268, 0, 13, 14, 15, 16, 17, + 0, 0, 296, 0, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 27, 259, 260, 261, + 262, 263, 2, 30, 31, 0, 32, 3, 33, 4, + 5, 6, 7, 0, 0, 8, 9, 10, 0, 0, + 286, 0, 0, 0, 0, 13, 14, 15, 16, 17, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 27, 0, 0, 0, + 134, 0, 2, 30, 31, 0, 32, 3, 33, 4, + 5, 6, 7, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 68, 14, 15, 16, 17, + 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, + 0, 0, 23, 24, 25, 26, 27, 0, 0, 0, + 0, 0, 0, 30, 31, 0, 32, 0, 33, 15, + 16, 0, 0, 0, 0, 0, 18, 19, 20, 21, + 22, 0, 0, 0, 23, 24, 25, 26, 27, 89, + 90, 91, 92, 93, 0, 30, 31, 94, 0, 0, + 95, 96, 0, 0, 0, 0, 0, 0, 97, 98 }; static const yytype_int16 yycheck[] = { - 6, 7, 9, 39, 206, 9, 208, 126, 127, 55, - 53, 215, 60, 61, 37, 63, 62, 60, 66, 69, - 9, 53, 26, 51, 0, 26, 32, 33, 60, 48, - 31, 3, 26, 69, 53, 11, 8, 26, 10, 11, - 12, 13, 244, 245, 3, 68, 18, 51, 252, 8, - 32, 10, 11, 12, 13, 59, 33, 34, 30, 18, - 67, 26, 51, 26, 29, 14, 185, 186, 51, 52, - 59, 30, 49, 50, 14, 14, 124, 125, 24, 55, - 128, 129, 21, 26, 120, 57, 14, 59, 14, 21, - 138, 56, 51, 21, 142, 143, 33, 34, 57, 149, - 59, 50, 51, 52, 59, 153, 26, 26, 57, 29, - 29, 51, 51, 149, 150, 317, 318, 57, 57, 51, - 33, 34, 14, 51, 14, 51, 132, 14, 26, 57, - 26, 57, 14, 26, 140, 141, 56, 56, 26, 145, - 146, 148, 5, 6, 192, 193, 194, 195, 196, 197, - 126, 127, 26, 26, 200, 29, 189, 190, 206, 51, - 208, 51, 212, 211, 51, 57, 26, 57, 26, 51, - 57, 29, 26, 26, 26, 57, 212, 29, 214, 26, - 26, 26, 56, 231, 5, 6, 7, 26, 0, 4, - 238, 237, 59, 199, 50, 201, 244, 245, 56, 40, - 41, 42, 248, 14, 56, 50, 51, 52, 215, 185, - 186, 50, 51, 52, 220, 221, 50, 253, 40, 41, - 42, 14, 26, 27, 28, 29, 25, 233, 234, 277, - 19, 35, 36, 37, 38, 39, 242, 243, 286, 43, - 44, 45, 46, 47, 60, 252, 26, 28, 29, 297, - 54, 55, 26, 26, 35, 36, 37, 38, 39, 26, - 26, 309, 43, 44, 45, 46, 47, 26, 26, 317, - 318, 26, 26, 54, 55, 26, 224, 225, 226, 227, - 228, 26, 26, 26, 290, 26, 35, 36, 37, 38, - 39, 297, 26, 26, 43, 301, 302, 46, 47, 247, - 60, 58, 15, 309, 60, 54, 55, 313, 314, 1, - 58, 3, 26, 319, 7, 15, 8, 15, 10, 11, - 12, 13, 9, 58, 16, 17, 18, 15, 58, 15, - 22, 23, 33, 34, 26, 27, 28, 29, 30, 7, - 4, 26, 15, 35, 36, 37, 38, 39, 49, 50, - 51, 43, 44, 45, 46, 47, 58, 15, 15, 51, - 52, 3, 54, 55, 58, 57, 8, 59, 10, 11, - 12, 13, 26, 9, 16, 17, 18, 58, 15, 58, - 22, 23, 15, 58, 26, 27, 28, 29, 30, 15, - 207, 58, 308, 35, 36, 37, 38, 39, 231, 271, - -1, 43, 44, 45, 46, 47, -1, -1, 50, 51, - 52, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, - -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, - 12, 13, -1, -1, -1, -1, 18, -1, -1, -1, - -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, - -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, - -1, -1, 54, 55, -1, 57, -1, 59, 35, 36, - 37, 38, 39, -1, -1, -1, 43, -1, -1, 46, - 47, -1, -1, -1, -1, -1, -1, 54, 55 + 6, 7, 9, 39, 37, 207, 26, 209, 21, 55, + 70, 127, 128, 61, 62, 53, 64, 63, 26, 67, + 48, 29, 60, 53, 0, 53, 32, 33, 26, 26, + 60, 26, 3, 31, 70, 11, 69, 8, 51, 10, + 11, 12, 13, 245, 246, 16, 17, 18, 56, 51, + 52, 22, 23, 33, 34, 26, 27, 28, 29, 30, + 14, 68, 14, 32, 35, 36, 37, 38, 39, 24, + 186, 187, 43, 44, 45, 46, 47, 125, 126, 55, + 51, 129, 130, 54, 55, 121, 57, 9, 59, 14, + 150, 139, 59, 216, 26, 143, 144, 51, 50, 51, + 52, 14, 26, 57, 26, 57, 154, 0, 21, 5, + 6, 7, 51, 52, 150, 151, 318, 319, 50, 51, + 52, 40, 41, 42, 33, 34, 51, 133, 26, 51, + 253, 26, 57, 14, 26, 141, 142, 59, 51, 9, + 146, 147, 149, 14, 57, 193, 194, 195, 196, 197, + 198, 127, 128, 213, 26, 201, 26, 26, 3, 207, + 29, 209, 14, 8, 212, 10, 11, 12, 13, 21, + 51, 26, 26, 18, 29, 29, 57, 213, 26, 215, + 51, 51, 14, 26, 232, 30, 57, 56, 26, 59, + 26, 239, 238, 29, 200, 26, 202, 245, 246, 51, + 26, 56, 56, 249, 4, 57, 51, 14, 14, 216, + 186, 187, 57, 50, 59, 221, 222, 50, 254, 51, + 56, 5, 6, 26, 26, 57, 3, 29, 234, 235, + 278, 8, 14, 10, 11, 12, 13, 243, 244, 287, + 59, 18, 25, 33, 34, 51, 253, 50, 51, 52, + 298, 57, 19, 30, 56, 26, 27, 28, 29, 49, + 50, 51, 310, 60, 35, 36, 37, 38, 39, 26, + 318, 319, 43, 44, 45, 46, 47, 33, 34, 26, + 57, 26, 59, 54, 55, 291, 58, 35, 36, 37, + 38, 39, 298, 49, 50, 43, 302, 303, 46, 47, + 40, 41, 42, 26, 310, 26, 54, 55, 314, 315, + 1, 26, 3, 26, 320, 190, 191, 8, 26, 10, + 11, 12, 13, 26, 26, 16, 17, 18, 26, 26, + 26, 22, 23, 26, 26, 26, 27, 28, 29, 30, + 26, 60, 60, 15, 35, 36, 37, 38, 39, 58, + 26, 15, 43, 44, 45, 46, 47, 15, 7, 9, + 51, 52, 3, 54, 55, 4, 57, 8, 59, 10, + 11, 12, 13, 15, 58, 16, 17, 18, 15, 58, + 7, 22, 23, 26, 15, 26, 27, 28, 29, 30, + 58, 15, 58, 15, 35, 36, 37, 38, 39, 58, + 26, 15, 43, 44, 45, 46, 47, 58, 15, 50, + 51, 52, 3, 54, 55, 15, 57, 8, 59, 10, + 11, 12, 13, 58, 58, 16, 17, 18, 208, 9, + 309, 22, 23, 232, -1, 26, 27, 28, 29, 30, + -1, -1, 272, -1, 35, 36, 37, 38, 39, -1, + -1, -1, 43, 44, 45, 46, 47, 225, 226, 227, + 228, 229, 3, 54, 55, -1, 57, 8, 59, 10, + 11, 12, 13, -1, -1, 16, 17, 18, -1, -1, + 248, -1, -1, -1, -1, 26, 27, 28, 29, 30, + -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, + -1, -1, 43, 44, 45, 46, 47, -1, -1, -1, + 51, -1, 3, 54, 55, -1, 57, 8, 59, 10, + 11, 12, 13, -1, -1, -1, -1, 18, -1, -1, + -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, + -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, + -1, -1, 43, 44, 45, 46, 47, -1, -1, -1, + -1, -1, -1, 54, 55, -1, 57, -1, 59, 28, + 29, -1, -1, -1, -1, -1, 35, 36, 37, 38, + 39, -1, -1, -1, 43, 44, 45, 46, 47, 35, + 36, 37, 38, 39, -1, 54, 55, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, 54, 55 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1161,79 +1150,79 @@ static const yytype_uint8 yystos[] = 37, 38, 39, 43, 44, 45, 46, 47, 51, 52, 54, 55, 57, 59, 62, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, - 81, 94, 95, 96, 97, 98, 51, 87, 88, 93, - 26, 26, 31, 26, 88, 88, 26, 26, 67, 69, - 32, 50, 51, 52, 92, 96, 24, 59, 35, 36, - 37, 38, 39, 43, 46, 47, 54, 55, 35, 36, - 37, 38, 39, 43, 46, 47, 54, 55, 26, 26, - 26, 29, 56, 26, 26, 29, 56, 26, 26, 26, - 26, 26, 26, 26, 88, 88, 0, 26, 65, 64, - 66, 51, 52, 91, 33, 34, 49, 50, 48, 53, - 92, 96, 4, 51, 89, 90, 96, 93, 50, 93, - 14, 57, 92, 50, 93, 14, 14, 59, 93, 69, - 66, 19, 25, 60, 26, 26, 26, 29, 56, 26, - 26, 29, 56, 26, 26, 26, 26, 26, 26, 26, - 26, 29, 56, 26, 26, 29, 56, 26, 26, 26, - 26, 26, 58, 60, 64, 93, 93, 95, 95, 93, - 93, 88, 33, 34, 49, 50, 51, 21, 93, 14, - 21, 57, 88, 88, 93, 93, 14, 21, 57, 88, - 88, 60, 69, 75, 66, 93, 95, 95, 97, 97, - 5, 6, 7, 82, 93, 93, 93, 93, 93, 83, - 84, 85, 93, 14, 57, 88, 26, 63, 92, 88, - 15, 58, 14, 57, 14, 57, 87, 93, 63, 87, - 15, 15, 93, 66, 75, 88, 88, 7, 90, 90, - 90, 90, 90, 9, 40, 41, 42, 84, 93, 9, - 26, 59, 86, 88, 88, 15, 26, 92, 93, 58, - 88, 88, 87, 87, 15, 90, 92, 58, 75, 7, - 4, 40, 41, 42, 9, 86, 53, 60, 15, 58, - 93, 14, 57, 15, 58, 15, 58, 93, 88, 60, - 26, 88, 93, 14, 57, 88, 88, 14, 57, 5, - 82, 88, 93, 88, 88, 15, 58, 87, 87, 88, - 15, 58, 15, 58 + 81, 94, 95, 96, 97, 98, 51, 52, 87, 88, + 93, 26, 26, 31, 26, 88, 88, 26, 26, 67, + 69, 32, 50, 51, 52, 92, 96, 24, 59, 35, + 36, 37, 38, 39, 43, 46, 47, 54, 55, 35, + 36, 37, 38, 39, 43, 46, 47, 54, 55, 26, + 26, 26, 29, 56, 26, 26, 29, 56, 26, 26, + 26, 26, 26, 26, 26, 88, 88, 0, 26, 65, + 64, 66, 51, 52, 91, 33, 34, 49, 50, 48, + 53, 92, 96, 4, 51, 89, 90, 96, 93, 50, + 93, 14, 57, 92, 50, 93, 14, 14, 59, 93, + 69, 66, 19, 25, 60, 26, 26, 26, 29, 56, + 26, 26, 29, 56, 26, 26, 26, 26, 26, 26, + 26, 26, 29, 56, 26, 26, 29, 56, 26, 26, + 26, 26, 26, 58, 60, 64, 93, 93, 95, 95, + 93, 93, 88, 33, 34, 49, 50, 51, 21, 93, + 14, 21, 57, 88, 88, 93, 93, 14, 21, 57, + 88, 88, 60, 69, 75, 66, 93, 95, 95, 97, + 97, 5, 6, 7, 82, 93, 93, 93, 93, 93, + 83, 84, 85, 93, 14, 57, 88, 26, 63, 92, + 88, 15, 58, 14, 57, 14, 57, 87, 93, 63, + 87, 15, 15, 93, 66, 75, 88, 88, 7, 90, + 90, 90, 90, 90, 9, 40, 41, 42, 84, 93, + 9, 26, 59, 86, 88, 88, 15, 26, 92, 93, + 58, 88, 88, 87, 87, 15, 90, 92, 58, 75, + 7, 4, 40, 41, 42, 9, 86, 53, 60, 15, + 58, 93, 14, 57, 15, 58, 15, 58, 93, 88, + 60, 26, 88, 93, 14, 57, 88, 88, 14, 57, + 5, 82, 88, 93, 88, 88, 15, 58, 87, 87, + 88, 15, 58, 15, 58 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 61, 62, 62, 62, 62, 63, 63, 64, 64, + 0, 61, 62, 62, 62, 62, 62, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 65, 65, 65, 66, 66, 67, 67, 68, - 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, - 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, - 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, - 75, 76, 77, 77, 77, 77, 77, 78, 78, 78, - 79, 80, 81, 82, 82, 82, 83, 83, 84, 84, - 84, 84, 85, 85, 85, 85, 85, 85, 86, 86, - 87, 88, 88, 89, 89, 89, 90, 90, 90, 90, - 90, 90, 91, 91, 92, 92, 92, 93, 93, 94, - 94, 94, 95, 95, 95, 95, 95, 96, 96, 96, - 96, 96, 97, 97, 97, 98, 98, 98 + 64, 64, 64, 65, 65, 65, 66, 66, 67, 67, + 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, + 70, 70, 70, 70, 71, 71, 71, 71, 72, 72, + 72, 72, 72, 72, 73, 73, 73, 74, 74, 74, + 75, 75, 76, 77, 77, 77, 77, 77, 78, 78, + 78, 79, 80, 81, 82, 82, 82, 83, 83, 84, + 84, 84, 84, 85, 85, 85, 85, 85, 85, 86, + 86, 87, 88, 88, 89, 89, 89, 90, 90, 90, + 90, 90, 90, 91, 91, 92, 92, 92, 93, 93, + 94, 94, 94, 95, 95, 95, 95, 95, 96, 96, + 96, 96, 96, 97, 97, 97, 98, 98, 98 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 2, 1, 2, 1, 1, 2, 2, 2, - 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, + 0, 2, 2, 1, 2, 2, 1, 1, 2, 2, + 2, 3, 3, 3, 3, 2, 3, 3, 2, 3, + 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, - 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, - 2, 2, 1, 1, 1, 1, 2, 1, 2, 1, - 1, 2, 1, 1, 1, 1, 5, 5, 1, 1, - 1, 1, 1, 1, 1, 6, 6, 7, 7, 10, - 10, 9, 9, 7, 7, 5, 5, 6, 6, 7, - 7, 10, 10, 6, 7, 6, 5, 6, 4, 1, - 2, 3, 2, 3, 3, 4, 2, 5, 7, 6, - 3, 1, 3, 4, 6, 5, 1, 2, 4, 4, - 5, 5, 2, 3, 2, 3, 2, 3, 1, 3, - 2, 1, 2, 3, 3, 3, 4, 4, 4, 4, - 4, 1, 1, 1, 1, 1, 1, 0, 2, 1, - 2, 2, 4, 4, 3, 3, 1, 1, 2, 2, - 2, 2, 4, 4, 1, 1, 2, 3 + 3, 2, 2, 1, 1, 1, 1, 2, 1, 2, + 1, 1, 2, 1, 1, 1, 1, 5, 5, 1, + 1, 1, 1, 1, 1, 1, 6, 6, 7, 7, + 10, 10, 9, 9, 7, 7, 5, 5, 6, 6, + 7, 7, 10, 10, 6, 7, 6, 5, 6, 4, + 1, 2, 3, 2, 3, 3, 4, 2, 5, 7, + 6, 3, 1, 3, 4, 6, 5, 1, 2, 4, + 4, 5, 5, 2, 3, 2, 3, 2, 3, 1, + 3, 2, 1, 2, 3, 3, 3, 4, 4, 4, + 4, 4, 1, 1, 1, 1, 1, 1, 0, 2, + 1, 2, 2, 4, 4, 3, 3, 1, 1, 2, + 2, 2, 2, 4, 4, 1, 1, 2, 3 }; @@ -1910,7 +1899,7 @@ yyreduce: switch (yyn) { case 2: -#line 387 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 382 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of regular command. Discard the error safety net,and return the command just parsed. */ @@ -1921,11 +1910,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1925 "y.tab.c" /* yacc.c:1646 */ +#line 1914 "y.tab.c" /* yacc.c:1646 */ break; case 3: -#line 398 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 393 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of regular command, but not a very interesting one. Return a NULL command. */ @@ -1934,11 +1923,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } -#line 1938 "y.tab.c" /* yacc.c:1646 */ +#line 1927 "y.tab.c" /* yacc.c:1646 */ break; case 4: -#line 407 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 402 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Error during parsing. Return NULL command. */ global_command = (COMMAND *)NULL; @@ -1953,11 +1942,31 @@ yyreduce: YYABORT; } } -#line 1957 "y.tab.c" /* yacc.c:1646 */ +#line 1946 "y.tab.c" /* yacc.c:1646 */ break; case 5: -#line 422 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 417 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { + /* EOF after an error. Do ignoreeof or not. Really + only interesting in non-interactive shells */ + global_command = (COMMAND *)NULL; + last_command_exit_value = 1; + handle_eof_input_unit (); + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } +#line 1966 "y.tab.c" /* yacc.c:1646 */ + break; + + case 6: +#line 433 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of EOF seen by itself. Do ignoreeof or not. */ @@ -1965,495 +1974,495 @@ yyreduce: handle_eof_input_unit (); YYACCEPT; } -#line 1969 "y.tab.c" /* yacc.c:1646 */ +#line 1978 "y.tab.c" /* yacc.c:1646 */ break; - case 6: -#line 432 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 7: +#line 443 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 1975 "y.tab.c" /* yacc.c:1646 */ +#line 1984 "y.tab.c" /* yacc.c:1646 */ break; - case 7: -#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 8: +#line 445 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } -#line 1981 "y.tab.c" /* yacc.c:1646 */ +#line 1990 "y.tab.c" /* yacc.c:1646 */ break; - case 8: -#line 438 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 9: +#line 449 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 1991 "y.tab.c" /* yacc.c:1646 */ +#line 2000 "y.tab.c" /* yacc.c:1646 */ break; - case 9: -#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 10: +#line 455 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2001 "y.tab.c" /* yacc.c:1646 */ +#line 2010 "y.tab.c" /* yacc.c:1646 */ break; - case 10: -#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 11: +#line 461 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } -#line 2011 "y.tab.c" /* yacc.c:1646 */ +#line 2020 "y.tab.c" /* yacc.c:1646 */ break; - case 11: -#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 12: +#line 467 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } -#line 2021 "y.tab.c" /* yacc.c:1646 */ +#line 2030 "y.tab.c" /* yacc.c:1646 */ break; - case 12: -#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 13: +#line 473 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); } -#line 2031 "y.tab.c" /* yacc.c:1646 */ +#line 2040 "y.tab.c" /* yacc.c:1646 */ break; - case 13: -#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 14: +#line 479 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); } -#line 2041 "y.tab.c" /* yacc.c:1646 */ +#line 2050 "y.tab.c" /* yacc.c:1646 */ break; - case 14: -#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 15: +#line 485 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2051 "y.tab.c" /* yacc.c:1646 */ +#line 2060 "y.tab.c" /* yacc.c:1646 */ break; - case 15: -#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 16: +#line 491 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } -#line 2061 "y.tab.c" /* yacc.c:1646 */ +#line 2070 "y.tab.c" /* yacc.c:1646 */ break; - case 16: -#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 17: +#line 497 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); } -#line 2071 "y.tab.c" /* yacc.c:1646 */ +#line 2080 "y.tab.c" /* yacc.c:1646 */ break; - case 17: -#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 18: +#line 503 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2081 "y.tab.c" /* yacc.c:1646 */ +#line 2090 "y.tab.c" /* yacc.c:1646 */ break; - case 18: -#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 19: +#line 509 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } -#line 2091 "y.tab.c" /* yacc.c:1646 */ +#line 2100 "y.tab.c" /* yacc.c:1646 */ break; - case 19: -#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 20: +#line 515 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); } -#line 2101 "y.tab.c" /* yacc.c:1646 */ +#line 2110 "y.tab.c" /* yacc.c:1646 */ break; - case 20: -#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 21: +#line 521 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2111 "y.tab.c" /* yacc.c:1646 */ +#line 2120 "y.tab.c" /* yacc.c:1646 */ break; - case 21: -#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 22: +#line 527 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } -#line 2121 "y.tab.c" /* yacc.c:1646 */ +#line 2130 "y.tab.c" /* yacc.c:1646 */ break; - case 22: -#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 23: +#line 533 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); } -#line 2131 "y.tab.c" /* yacc.c:1646 */ +#line 2140 "y.tab.c" /* yacc.c:1646 */ break; - case 23: -#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 24: +#line 539 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2142 "y.tab.c" /* yacc.c:1646 */ +#line 2151 "y.tab.c" /* yacc.c:1646 */ break; - case 24: -#line 535 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 25: +#line 546 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2153 "y.tab.c" /* yacc.c:1646 */ +#line 2162 "y.tab.c" /* yacc.c:1646 */ break; - case 25: -#line 542 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 26: +#line 553 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2164 "y.tab.c" /* yacc.c:1646 */ +#line 2173 "y.tab.c" /* yacc.c:1646 */ break; - case 26: -#line 549 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 27: +#line 560 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2175 "y.tab.c" /* yacc.c:1646 */ +#line 2184 "y.tab.c" /* yacc.c:1646 */ break; - case 27: -#line 556 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 28: +#line 567 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } -#line 2186 "y.tab.c" /* yacc.c:1646 */ +#line 2195 "y.tab.c" /* yacc.c:1646 */ break; - case 28: -#line 563 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 29: +#line 574 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } -#line 2197 "y.tab.c" /* yacc.c:1646 */ +#line 2206 "y.tab.c" /* yacc.c:1646 */ break; - case 29: -#line 570 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 30: +#line 581 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2207 "y.tab.c" /* yacc.c:1646 */ +#line 2216 "y.tab.c" /* yacc.c:1646 */ break; - case 30: -#line 576 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 31: +#line 587 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } -#line 2217 "y.tab.c" /* yacc.c:1646 */ +#line 2226 "y.tab.c" /* yacc.c:1646 */ break; - case 31: -#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 32: +#line 593 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); } -#line 2227 "y.tab.c" /* yacc.c:1646 */ +#line 2236 "y.tab.c" /* yacc.c:1646 */ break; - case 32: -#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 33: +#line 599 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2237 "y.tab.c" /* yacc.c:1646 */ +#line 2246 "y.tab.c" /* yacc.c:1646 */ break; - case 33: -#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 34: +#line 605 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } -#line 2247 "y.tab.c" /* yacc.c:1646 */ +#line 2256 "y.tab.c" /* yacc.c:1646 */ break; - case 34: -#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 35: +#line 611 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); } -#line 2257 "y.tab.c" /* yacc.c:1646 */ +#line 2266 "y.tab.c" /* yacc.c:1646 */ break; - case 35: -#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 36: +#line 617 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2267 "y.tab.c" /* yacc.c:1646 */ +#line 2276 "y.tab.c" /* yacc.c:1646 */ break; - case 36: -#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 37: +#line 623 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } -#line 2277 "y.tab.c" /* yacc.c:1646 */ +#line 2286 "y.tab.c" /* yacc.c:1646 */ break; - case 37: -#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 38: +#line 629 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); } -#line 2287 "y.tab.c" /* yacc.c:1646 */ +#line 2296 "y.tab.c" /* yacc.c:1646 */ break; - case 38: -#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 39: +#line 635 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2297 "y.tab.c" /* yacc.c:1646 */ +#line 2306 "y.tab.c" /* yacc.c:1646 */ break; - case 39: -#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 40: +#line 641 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } -#line 2307 "y.tab.c" /* yacc.c:1646 */ +#line 2316 "y.tab.c" /* yacc.c:1646 */ break; - case 40: -#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 41: +#line 647 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); } -#line 2317 "y.tab.c" /* yacc.c:1646 */ +#line 2326 "y.tab.c" /* yacc.c:1646 */ break; - case 41: -#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 42: +#line 653 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2327 "y.tab.c" /* yacc.c:1646 */ +#line 2336 "y.tab.c" /* yacc.c:1646 */ break; - case 42: -#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 43: +#line 659 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } -#line 2337 "y.tab.c" /* yacc.c:1646 */ +#line 2346 "y.tab.c" /* yacc.c:1646 */ break; - case 43: -#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 44: +#line 665 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); } -#line 2347 "y.tab.c" /* yacc.c:1646 */ +#line 2356 "y.tab.c" /* yacc.c:1646 */ break; - case 44: -#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 45: +#line 671 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2357 "y.tab.c" /* yacc.c:1646 */ +#line 2366 "y.tab.c" /* yacc.c:1646 */ break; - case 45: -#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 46: +#line 677 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2367 "y.tab.c" /* yacc.c:1646 */ +#line 2376 "y.tab.c" /* yacc.c:1646 */ break; - case 46: -#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 47: +#line 683 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2377 "y.tab.c" /* yacc.c:1646 */ +#line 2386 "y.tab.c" /* yacc.c:1646 */ break; - case 47: -#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 48: +#line 689 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2387 "y.tab.c" /* yacc.c:1646 */ +#line 2396 "y.tab.c" /* yacc.c:1646 */ break; - case 48: -#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 49: +#line 695 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } -#line 2397 "y.tab.c" /* yacc.c:1646 */ +#line 2406 "y.tab.c" /* yacc.c:1646 */ break; - case 49: -#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 50: +#line 701 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } -#line 2407 "y.tab.c" /* yacc.c:1646 */ +#line 2416 "y.tab.c" /* yacc.c:1646 */ break; - case 50: -#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 51: +#line 707 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); } -#line 2417 "y.tab.c" /* yacc.c:1646 */ +#line 2426 "y.tab.c" /* yacc.c:1646 */ break; - case 51: -#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 52: +#line 713 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); } -#line 2427 "y.tab.c" /* yacc.c:1646 */ +#line 2436 "y.tab.c" /* yacc.c:1646 */ break; - case 52: -#line 710 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 53: +#line 721 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2433 "y.tab.c" /* yacc.c:1646 */ +#line 2442 "y.tab.c" /* yacc.c:1646 */ break; - case 53: -#line 712 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 54: +#line 723 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } -#line 2439 "y.tab.c" /* yacc.c:1646 */ +#line 2448 "y.tab.c" /* yacc.c:1646 */ break; - case 54: -#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 55: +#line 725 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } -#line 2445 "y.tab.c" /* yacc.c:1646 */ +#line 2454 "y.tab.c" /* yacc.c:1646 */ break; - case 55: -#line 718 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 56: +#line 729 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.redirect) = (yyvsp[0].redirect); } -#line 2453 "y.tab.c" /* yacc.c:1646 */ +#line 2462 "y.tab.c" /* yacc.c:1646 */ break; - case 56: -#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 57: +#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { register REDIRECT *t; @@ -2462,142 +2471,133 @@ yyreduce: t->next = (yyvsp[0].redirect); (yyval.redirect) = (yyvsp[-1].redirect); } -#line 2466 "y.tab.c" /* yacc.c:1646 */ +#line 2475 "y.tab.c" /* yacc.c:1646 */ break; - case 57: -#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 58: +#line 744 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } -#line 2472 "y.tab.c" /* yacc.c:1646 */ +#line 2481 "y.tab.c" /* yacc.c:1646 */ break; - case 58: -#line 735 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 59: +#line 746 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } -#line 2478 "y.tab.c" /* yacc.c:1646 */ +#line 2487 "y.tab.c" /* yacc.c:1646 */ break; - case 59: -#line 739 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 60: +#line 750 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } -#line 2484 "y.tab.c" /* yacc.c:1646 */ +#line 2493 "y.tab.c" /* yacc.c:1646 */ break; - case 60: -#line 741 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 61: +#line 752 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2490 "y.tab.c" /* yacc.c:1646 */ +#line 2499 "y.tab.c" /* yacc.c:1646 */ break; - case 61: -#line 743 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 62: +#line 754 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2510 "y.tab.c" /* yacc.c:1646 */ - break; - - case 62: -#line 759 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2516 "y.tab.c" /* yacc.c:1646 */ +#line 2519 "y.tab.c" /* yacc.c:1646 */ break; case 63: -#line 761 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 770 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2522 "y.tab.c" /* yacc.c:1646 */ +#line 2525 "y.tab.c" /* yacc.c:1646 */ break; case 64: -#line 765 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 772 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2528 "y.tab.c" /* yacc.c:1646 */ +#line 2531 "y.tab.c" /* yacc.c:1646 */ break; case 65: -#line 767 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 776 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2534 "y.tab.c" /* yacc.c:1646 */ +#line 2537 "y.tab.c" /* yacc.c:1646 */ break; case 66: -#line 769 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2540 "y.tab.c" /* yacc.c:1646 */ +#line 778 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2543 "y.tab.c" /* yacc.c:1646 */ break; case 67: -#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2546 "y.tab.c" /* yacc.c:1646 */ +#line 780 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2549 "y.tab.c" /* yacc.c:1646 */ break; case 68: -#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2552 "y.tab.c" /* yacc.c:1646 */ +#line 782 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2555 "y.tab.c" /* yacc.c:1646 */ break; case 69: -#line 775 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 784 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2558 "y.tab.c" /* yacc.c:1646 */ +#line 2561 "y.tab.c" /* yacc.c:1646 */ break; case 70: -#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 786 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2564 "y.tab.c" /* yacc.c:1646 */ +#line 2567 "y.tab.c" /* yacc.c:1646 */ break; case 71: -#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 788 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2570 "y.tab.c" /* yacc.c:1646 */ +#line 2573 "y.tab.c" /* yacc.c:1646 */ break; case 72: -#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 790 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2576 "y.tab.c" /* yacc.c:1646 */ +#line 2579 "y.tab.c" /* yacc.c:1646 */ break; case 73: -#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 792 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2582 "y.tab.c" /* yacc.c:1646 */ +#line 2585 "y.tab.c" /* yacc.c:1646 */ break; case 74: -#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 2588 "y.tab.c" /* yacc.c:1646 */ +#line 2591 "y.tab.c" /* yacc.c:1646 */ break; case 75: -#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { - (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); - if (word_top > 0) word_top--; - } +#line 796 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } #line 2597 "y.tab.c" /* yacc.c:1646 */ break; case 76: -#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 800 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; @@ -2606,16 +2606,16 @@ yyreduce: break; case 77: -#line 799 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 805 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } #line 2615 "y.tab.c" /* yacc.c:1646 */ break; case 78: -#line 804 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 810 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (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--; @@ -2624,16 +2624,16 @@ yyreduce: break; case 79: -#line 809 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 815 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } #line 2633 "y.tab.c" /* yacc.c:1646 */ break; case 80: -#line 814 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 820 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (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--; @@ -2642,16 +2642,16 @@ yyreduce: break; case 81: -#line 819 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 825 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } #line 2651 "y.tab.c" /* yacc.c:1646 */ break; case 82: -#line 824 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 830 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; @@ -2660,148 +2660,161 @@ yyreduce: break; case 83: -#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 835 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); - if (word_top > 0) word_top--; - } + (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 2669 "y.tab.c" /* yacc.c:1646 */ break; case 84: -#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 842 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2678 "y.tab.c" /* yacc.c:1646 */ +#line 2679 "y.tab.c" /* yacc.c:1646 */ break; case 85: -#line 841 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 848 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2687 "y.tab.c" /* yacc.c:1646 */ +#line 2689 "y.tab.c" /* yacc.c:1646 */ break; case 86: -#line 846 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 854 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; if (word_top > 0) word_top--; } -#line 2696 "y.tab.c" /* yacc.c:1646 */ +#line 2699 "y.tab.c" /* yacc.c:1646 */ break; case 87: -#line 853 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 860 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); - if (word_top > 0) word_top--; - } -#line 2705 "y.tab.c" /* yacc.c:1646 */ + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); + if ((yyval.command) == 0) YYERROR; + if (word_top > 0) word_top--; + } +#line 2709 "y.tab.c" /* yacc.c:1646 */ break; case 88: -#line 858 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2714 "y.tab.c" /* yacc.c:1646 */ +#line 2718 "y.tab.c" /* yacc.c:1646 */ break; case 89: -#line 863 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2723 "y.tab.c" /* yacc.c:1646 */ +#line 2727 "y.tab.c" /* yacc.c:1646 */ break; case 90: -#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2732 "y.tab.c" /* yacc.c:1646 */ +#line 2736 "y.tab.c" /* yacc.c:1646 */ break; case 91: -#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 883 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2741 "y.tab.c" /* yacc.c:1646 */ +#line 2745 "y.tab.c" /* yacc.c:1646 */ break; case 92: -#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 888 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2750 "y.tab.c" /* yacc.c:1646 */ +#line 2754 "y.tab.c" /* yacc.c:1646 */ break; case 93: -#line 885 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 893 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2759 "y.tab.c" /* yacc.c:1646 */ +#line 2763 "y.tab.c" /* yacc.c:1646 */ break; case 94: -#line 890 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 900 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); + (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2768 "y.tab.c" /* yacc.c:1646 */ +#line 2772 "y.tab.c" /* yacc.c:1646 */ break; case 95: -#line 895 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); if (word_top > 0) word_top--; } -#line 2777 "y.tab.c" /* yacc.c:1646 */ +#line 2781 "y.tab.c" /* yacc.c:1646 */ break; case 96: -#line 902 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2783 "y.tab.c" /* yacc.c:1646 */ +#line 910 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { + (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } +#line 2790 "y.tab.c" /* yacc.c:1646 */ break; case 97: -#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 917 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2789 "y.tab.c" /* yacc.c:1646 */ +#line 2796 "y.tab.c" /* yacc.c:1646 */ break; case 98: -#line 908 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); } -#line 2795 "y.tab.c" /* yacc.c:1646 */ +#line 920 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2802 "y.tab.c" /* yacc.c:1646 */ break; case 99: -#line 912 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ - { (yyval.command) = (yyvsp[0].command); } -#line 2801 "y.tab.c" /* yacc.c:1646 */ +#line 923 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2808 "y.tab.c" /* yacc.c:1646 */ break; case 100: -#line 914 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ +#line 927 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2814 "y.tab.c" /* yacc.c:1646 */ + break; + + case 101: +#line 929 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; @@ -2819,320 +2832,320 @@ yyreduce: redirection. The two are semantically equivalent, though -- the only difference is in how the command printing code displays the redirections. */ - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = (yyvsp[-1].command); } -#line 2834 "y.tab.c" /* yacc.c:1646 */ +#line 2847 "y.tab.c" /* yacc.c:1646 */ break; - case 101: -#line 945 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 102: +#line 960 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_subshell_command ((yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL; } -#line 2843 "y.tab.c" /* yacc.c:1646 */ +#line 2856 "y.tab.c" /* yacc.c:1646 */ break; - case 102: -#line 952 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 103: +#line 967 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2852 "y.tab.c" /* yacc.c:1646 */ +#line 2865 "y.tab.c" /* yacc.c:1646 */ break; - case 103: -#line 957 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 104: +#line 972 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2873 "y.tab.c" /* yacc.c:1646 */ +#line 2886 "y.tab.c" /* yacc.c:1646 */ break; - case 104: -#line 974 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 105: +#line 989 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2882 "y.tab.c" /* yacc.c:1646 */ +#line 2895 "y.tab.c" /* yacc.c:1646 */ break; - case 105: -#line 979 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 106: +#line 994 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; tc = (yyvsp[-1].command); - if (tc->redirects) + if (tc && tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; t->next = (yyvsp[0].redirect); } - else + else if (tc) tc->redirects = (yyvsp[0].redirect); (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2903 "y.tab.c" /* yacc.c:1646 */ +#line 2916 "y.tab.c" /* yacc.c:1646 */ break; - case 106: -#line 996 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 107: +#line 1011 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } -#line 2912 "y.tab.c" /* yacc.c:1646 */ +#line 2925 "y.tab.c" /* yacc.c:1646 */ break; - case 107: -#line 1003 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 108: +#line 1018 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } -#line 2918 "y.tab.c" /* yacc.c:1646 */ +#line 2931 "y.tab.c" /* yacc.c:1646 */ break; - case 108: -#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 109: +#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } -#line 2924 "y.tab.c" /* yacc.c:1646 */ +#line 2937 "y.tab.c" /* yacc.c:1646 */ break; - case 109: -#line 1007 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 110: +#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } -#line 2930 "y.tab.c" /* yacc.c:1646 */ +#line 2943 "y.tab.c" /* yacc.c:1646 */ break; - case 110: -#line 1012 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 111: +#line 1027 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_group_command ((yyvsp[-1].command)); } -#line 2936 "y.tab.c" /* yacc.c:1646 */ +#line 2949 "y.tab.c" /* yacc.c:1646 */ break; - case 111: -#line 1016 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 112: +#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } -#line 2942 "y.tab.c" /* yacc.c:1646 */ +#line 2955 "y.tab.c" /* yacc.c:1646 */ break; - case 112: -#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 113: +#line 1035 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[-1].command); } -#line 2948 "y.tab.c" /* yacc.c:1646 */ +#line 2961 "y.tab.c" /* yacc.c:1646 */ break; - case 113: -#line 1024 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 114: +#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } -#line 2954 "y.tab.c" /* yacc.c:1646 */ +#line 2967 "y.tab.c" /* yacc.c:1646 */ break; - case 114: -#line 1026 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 115: +#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } -#line 2960 "y.tab.c" /* yacc.c:1646 */ +#line 2973 "y.tab.c" /* yacc.c:1646 */ break; - case 115: -#line 1028 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 116: +#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } -#line 2966 "y.tab.c" /* yacc.c:1646 */ +#line 2979 "y.tab.c" /* yacc.c:1646 */ break; - case 117: -#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 118: +#line 1048 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } -#line 2972 "y.tab.c" /* yacc.c:1646 */ +#line 2985 "y.tab.c" /* yacc.c:1646 */ break; - case 118: -#line 1037 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 119: +#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 2978 "y.tab.c" /* yacc.c:1646 */ +#line 2991 "y.tab.c" /* yacc.c:1646 */ break; - case 119: -#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 120: +#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 2984 "y.tab.c" /* yacc.c:1646 */ +#line 2997 "y.tab.c" /* yacc.c:1646 */ break; - case 120: -#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 121: +#line 1056 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } -#line 2990 "y.tab.c" /* yacc.c:1646 */ +#line 3003 "y.tab.c" /* yacc.c:1646 */ break; - case 121: -#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 122: +#line 1058 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } -#line 2996 "y.tab.c" /* yacc.c:1646 */ +#line 3009 "y.tab.c" /* yacc.c:1646 */ break; - case 122: -#line 1047 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 123: +#line 1062 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3002 "y.tab.c" /* yacc.c:1646 */ +#line 3015 "y.tab.c" /* yacc.c:1646 */ break; - case 123: -#line 1049 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 124: +#line 1064 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3008 "y.tab.c" /* yacc.c:1646 */ +#line 3021 "y.tab.c" /* yacc.c:1646 */ break; - case 124: -#line 1051 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 125: +#line 1066 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3014 "y.tab.c" /* yacc.c:1646 */ +#line 3027 "y.tab.c" /* yacc.c:1646 */ break; - case 125: -#line 1053 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 126: +#line 1068 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3020 "y.tab.c" /* yacc.c:1646 */ +#line 3033 "y.tab.c" /* yacc.c:1646 */ break; - case 126: -#line 1055 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 127: +#line 1070 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3026 "y.tab.c" /* yacc.c:1646 */ +#line 3039 "y.tab.c" /* yacc.c:1646 */ break; - case 127: -#line 1057 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 128: +#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } -#line 3032 "y.tab.c" /* yacc.c:1646 */ +#line 3045 "y.tab.c" /* yacc.c:1646 */ break; - case 128: -#line 1061 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 129: +#line 1076 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } -#line 3038 "y.tab.c" /* yacc.c:1646 */ +#line 3051 "y.tab.c" /* yacc.c:1646 */ break; - case 129: -#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 130: +#line 1078 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } -#line 3044 "y.tab.c" /* yacc.c:1646 */ +#line 3057 "y.tab.c" /* yacc.c:1646 */ break; - case 130: -#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 131: +#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); if (need_here_doc) gather_here_documents (); } -#line 3054 "y.tab.c" /* yacc.c:1646 */ +#line 3067 "y.tab.c" /* yacc.c:1646 */ break; - case 132: -#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 133: +#line 1096 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 3062 "y.tab.c" /* yacc.c:1646 */ +#line 3075 "y.tab.c" /* yacc.c:1646 */ break; - case 134: -#line 1088 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 135: +#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); } -#line 3073 "y.tab.c" /* yacc.c:1646 */ +#line 3086 "y.tab.c" /* yacc.c:1646 */ break; - case 136: -#line 1099 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 137: +#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3079 "y.tab.c" /* yacc.c:1646 */ +#line 3092 "y.tab.c" /* yacc.c:1646 */ break; - case 137: -#line 1101 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 138: +#line 1116 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3085 "y.tab.c" /* yacc.c:1646 */ +#line 3098 "y.tab.c" /* yacc.c:1646 */ break; - case 138: -#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 139: +#line 1118 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[-3].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); } -#line 3096 "y.tab.c" /* yacc.c:1646 */ +#line 3109 "y.tab.c" /* yacc.c:1646 */ break; - case 139: -#line 1110 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 140: +#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3102 "y.tab.c" /* yacc.c:1646 */ +#line 3115 "y.tab.c" /* yacc.c:1646 */ break; - case 140: -#line 1112 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 141: +#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } -#line 3108 "y.tab.c" /* yacc.c:1646 */ +#line 3121 "y.tab.c" /* yacc.c:1646 */ break; - case 141: -#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 142: +#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 3114 "y.tab.c" /* yacc.c:1646 */ +#line 3127 "y.tab.c" /* yacc.c:1646 */ break; - case 144: -#line 1122 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 145: +#line 1137 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = '\n'; } -#line 3120 "y.tab.c" /* yacc.c:1646 */ +#line 3133 "y.tab.c" /* yacc.c:1646 */ break; - case 145: -#line 1124 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 146: +#line 1139 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = ';'; } -#line 3126 "y.tab.c" /* yacc.c:1646 */ +#line 3139 "y.tab.c" /* yacc.c:1646 */ break; - case 146: -#line 1126 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 147: +#line 1141 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = yacc_EOF; } -#line 3132 "y.tab.c" /* yacc.c:1646 */ +#line 3145 "y.tab.c" /* yacc.c:1646 */ break; - case 149: -#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 150: +#line 1155 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); if (need_here_doc) @@ -3145,11 +3158,11 @@ yyreduce: YYACCEPT; } } -#line 3149 "y.tab.c" /* yacc.c:1646 */ +#line 3162 "y.tab.c" /* yacc.c:1646 */ break; - case 150: -#line 1153 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 151: +#line 1168 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[-1].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&'); @@ -3165,11 +3178,11 @@ yyreduce: YYACCEPT; } } -#line 3169 "y.tab.c" /* yacc.c:1646 */ +#line 3182 "y.tab.c" /* yacc.c:1646 */ break; - case 151: -#line 1169 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 152: +#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[-1].command); if (need_here_doc) @@ -3182,72 +3195,72 @@ yyreduce: YYACCEPT; } } -#line 3186 "y.tab.c" /* yacc.c:1646 */ +#line 3199 "y.tab.c" /* yacc.c:1646 */ break; - case 152: -#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 153: +#line 1199 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } -#line 3192 "y.tab.c" /* yacc.c:1646 */ +#line 3205 "y.tab.c" /* yacc.c:1646 */ break; - case 153: -#line 1186 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 154: +#line 1201 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } -#line 3198 "y.tab.c" /* yacc.c:1646 */ +#line 3211 "y.tab.c" /* yacc.c:1646 */ break; - case 154: -#line 1188 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 155: +#line 1203 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[-2].command)->type == cm_connection) (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&'); else (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); } -#line 3209 "y.tab.c" /* yacc.c:1646 */ +#line 3222 "y.tab.c" /* yacc.c:1646 */ break; - case 155: -#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 156: +#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } -#line 3215 "y.tab.c" /* yacc.c:1646 */ +#line 3228 "y.tab.c" /* yacc.c:1646 */ break; - case 156: -#line 1198 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 157: +#line 1213 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 3221 "y.tab.c" /* yacc.c:1646 */ +#line 3234 "y.tab.c" /* yacc.c:1646 */ break; - case 157: -#line 1202 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 158: +#line 1217 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 3227 "y.tab.c" /* yacc.c:1646 */ +#line 3240 "y.tab.c" /* yacc.c:1646 */ break; - case 158: -#line 1204 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 159: +#line 1219 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[0].command)) (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ (yyval.command) = (yyvsp[0].command); } -#line 3237 "y.tab.c" /* yacc.c:1646 */ +#line 3250 "y.tab.c" /* yacc.c:1646 */ break; - case 159: -#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 160: +#line 1225 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { if ((yyvsp[0].command)) (yyvsp[0].command)->flags |= (yyvsp[-1].number); (yyval.command) = (yyvsp[0].command); } -#line 3247 "y.tab.c" /* yacc.c:1646 */ +#line 3260 "y.tab.c" /* yacc.c:1646 */ break; - case 160: -#line 1216 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 161: +#line 1231 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { ELEMENT x; @@ -3265,12 +3278,13 @@ yyreduce: token_to_read = '\n'; else if ((yyvsp[0].number) == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3270 "y.tab.c" /* yacc.c:1646 */ +#line 3284 "y.tab.c" /* yacc.c:1646 */ break; - case 161: -#line 1235 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 162: +#line 1251 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { ELEMENT x; @@ -3289,18 +3303,19 @@ yyreduce: token_to_read = '\n'; if ((yyvsp[0].number) == ';') token_to_read = ';'; + parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */ } -#line 3294 "y.tab.c" /* yacc.c:1646 */ +#line 3309 "y.tab.c" /* yacc.c:1646 */ break; - case 162: -#line 1257 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 163: +#line 1274 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3300 "y.tab.c" /* yacc.c:1646 */ +#line 3315 "y.tab.c" /* yacc.c:1646 */ break; - case 163: -#line 1259 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 164: +#line 1276 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ COMMAND *tc; @@ -3323,35 +3338,35 @@ yyreduce: (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } -#line 3327 "y.tab.c" /* yacc.c:1646 */ +#line 3342 "y.tab.c" /* yacc.c:1646 */ break; - case 164: -#line 1282 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 165: +#line 1299 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.command) = (yyvsp[0].command); } -#line 3333 "y.tab.c" /* yacc.c:1646 */ +#line 3348 "y.tab.c" /* yacc.c:1646 */ break; - case 165: -#line 1286 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 166: +#line 1303 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE; } -#line 3339 "y.tab.c" /* yacc.c:1646 */ +#line 3354 "y.tab.c" /* yacc.c:1646 */ break; - case 166: -#line 1288 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 167: +#line 1305 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3345 "y.tab.c" /* yacc.c:1646 */ +#line 3360 "y.tab.c" /* yacc.c:1646 */ break; - case 167: -#line 1290 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + case 168: +#line 1307 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } -#line 3351 "y.tab.c" /* yacc.c:1646 */ +#line 3366 "y.tab.c" /* yacc.c:1646 */ break; -#line 3355 "y.tab.c" /* yacc.c:1646 */ +#line 3370 "y.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3579,7 +3594,7 @@ yyreturn: #endif return yyresult; } -#line 1292 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1906 */ +#line 1309 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1906 */ /* Initial size to allocate for tokens, and the @@ -3607,6 +3622,8 @@ debug_parser (i) { #if YYDEBUG != 0 yydebug = i; + yyoutstream = stdout; + yyerrstream = stderr; #endif } #endif @@ -3744,6 +3761,7 @@ yy_readline_get () old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); } + sh_unset_nodelay_mode (fileno (rl_instream)); /* just in case */ current_readline_line = readline (current_readline_prompt ? current_readline_prompt : ""); @@ -3906,19 +3924,9 @@ yy_stream_get () result = EOF; if (bash_input.location.file) { -#if 0 - if (interactive) - interrupt_immediately++; -#endif - /* XXX - don't need terminate_immediately; getc_with_restart checks for terminating signals itself if read returns < 0 */ result = getc_with_restart (bash_input.location.file); - -#if 0 - if (interactive) - interrupt_immediately--; -#endif } return (result); } @@ -4252,6 +4260,23 @@ parser_restore_alias () #endif } +#if defined (ALIAS) +/* Before freeing AP, make sure that there aren't any cases of pointer + aliasing that could cause us to reference freed memory later on. */ +void +clear_string_list_expander (ap) + alias_t *ap; +{ + register STRING_SAVER *t; + + for (t = pushed_string_list; t; t = t->next) + { + if (t->expander && t->expander == ap) + t->expander = 0; + } +} +#endif + void clear_shell_input_line () { @@ -4305,7 +4330,8 @@ read_a_line (remove_quoted_newline) c = '\n'; } - /* `+2' in case the final character in the buffer is a newline. */ + /* `+2' in case the final character in the buffer is a newline or we + have to handle CTLESC or CTLNUL. */ RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a @@ -4336,7 +4362,14 @@ read_a_line (remove_quoted_newline) } } else - line_buffer[indx++] = c; + { + /* remove_quoted_newline is non-zero if the here-document delimiter + is unquoted. In this case, we will be expanding the lines and + need to make sure CTLESC and CTLNUL in the input are quoted. */ + if (remove_quoted_newline && (c == CTLESC || c == CTLNUL)) + line_buffer[indx++] = CTLESC; + line_buffer[indx++] = c; + } if (c == '\n') { @@ -4597,6 +4630,16 @@ shell_getc (remove_quoted_newline) #if 0 internal_warning ("shell_getc: ignored null byte in input"); #endif + /* If we get EOS while parsing a string, treat it as EOF so we + don't just keep looping. Happens very rarely */ + if (bash_input.type == st_string) + { + if (i == 0) + shell_input_line_terminator = EOF; + shell_input_line[i] = '\0'; + c = EOF; + break; + } continue; } @@ -4775,6 +4818,30 @@ next_alias_char: parsing an alias, we have just saved one (push_string, when called by the parse_dparen code) In this case, just go on as well. The PSH_SOURCE case is handled below. */ + + /* If we're at the end of an alias expansion add a space to make sure that + the alias remains marked as being in use while we expand its last word. + This makes sure that pop_string doesn't mark the alias as not in use + before the string resulting from the alias expansion is tokenized and + checked for alias expansion, preventing recursion. At this point, the + last character in shell_input_line is the last character of the alias + expansion. We test that last character to determine whether or not to + return the space that will delimit the token and postpone the pop_string. + This set of conditions duplicates what used to be in mk_alexpansion () + below, with the addition that we don't add a space if we're currently + reading a quoted string. */ +#ifndef OLD_ALIAS_HACK + if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE && + shell_input_line_index > 0 && + shell_input_line[shell_input_line_index-1] != ' ' && + shell_input_line[shell_input_line_index-1] != '\n' && + shellmeta (shell_input_line[shell_input_line_index-1]) == 0 && + (current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"')) + { + return ' '; /* END_ALIAS */ + } +#endif + pop_alias: if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE) { @@ -4793,10 +4860,9 @@ pop_alias: /* What do we do here if we're expanding an alias whose definition includes an escaped newline? If that's the last character in the alias expansion, we just pop the pushed string list (recall that - we inhibit the appending of a space in mk_alexpansion() if newline - is the last character). If it's not the last character, we need - to consume the quoted newline and move to the next character in - the expansion. */ + we inhibit the appending of a space if newline is the last + character). If it's not the last character, we need to consume the + quoted newline and move to the next character in the expansion. */ #if defined (ALIAS) if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') { @@ -4861,7 +4927,7 @@ parser_remaining_input () { if (shell_input_line == 0) return 0; - if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) + if ((int)shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -4971,7 +5037,7 @@ yylex () if (bash_input.type == st_string) rewind_input_string (); } - parser_state &= ~PST_EOFTOKEN; + parser_state &= ~PST_EOFTOKEN; /* ??? */ return (current_token); } @@ -4980,6 +5046,10 @@ yylex () which allow ESAC to be the next one read. */ static int esacs_needed_count; +/* When non-zero, we can read IN as an acceptable token, regardless of how + many newlines we read. */ +static int expecting_in_token; + static void push_heredoc (r) REDIRECT *r; @@ -5100,10 +5170,15 @@ mk_alexpansion (s) l = strlen (s); r = xmalloc (l + 2); strcpy (r, s); +#ifdef OLD_ALIAS_HACK /* If the last character in the alias is a newline, don't add a trailing space to the expansion. Works with shell_getc above. */ - if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) + /* Need to do something about the case where the alias expansion contains + an unmatched quoted string, since appending this space affects the + subsequent output. */ + if (l > 0 && r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; +#endif r[l] = '\0'; return r; } @@ -5124,10 +5199,14 @@ alias_expand_token (tokstr) if (ap && (ap->flags & AL_BEINGEXPANDED)) return (NO_EXPANSION); +#ifdef OLD_ALIAS_HACK /* mk_alexpansion puts an extra space on the end of the alias expansion, - so the lookahead by the parser works right. If this gets changed, - make sure the code in shell_getc that deals with reaching the end of - an expanded alias is changed with it. */ + so the lookahead by the parser works right (the alias needs to remain + `in use' while parsing its last word to avoid alias recursion for + something like "alias echo=echo"). If this gets changed, make sure + the code in shell_getc that deals with reaching the end of an + expanded alias is changed with it. */ +#endif expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; if (expanded) @@ -5225,12 +5304,9 @@ static int special_case_tokens (tokstr) char *tokstr; { + /* Posix grammar rule 6 */ if ((last_read_token == WORD) && -#if defined (SELECT_COMMAND) ((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) && -#else - ((token_before_that == FOR) || (token_before_that == CASE)) && -#endif (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) { if (token_before_that == CASE) @@ -5238,9 +5314,34 @@ special_case_tokens (tokstr) parser_state |= PST_CASEPAT; esacs_needed_count++; } + if (expecting_in_token) + expecting_in_token--; + return (IN); + } + + /* bash-5.0: leaving above code intact for now, but it should eventually be + removed in favor of this clause. */ + /* Posix grammar rule 6 */ + if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') && + (tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0)) + { + if (parser_state & PST_CASESTMT) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + expecting_in_token--; return (IN); } + /* Posix grammar rule 6, third word in FOR: for i; do command-list; done */ + else if (expecting_in_token && (last_read_token == '\n' || last_read_token == ';') && + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + { + expecting_in_token--; + return (DO); + } + /* for i do; command-list; done */ if (last_read_token == WORD && #if defined (SELECT_COMMAND) (token_before_that == FOR || token_before_that == SELECT) && @@ -5248,7 +5349,11 @@ special_case_tokens (tokstr) (token_before_that == FOR) && #endif (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) - return (DO); + { + if (expecting_in_token) + expecting_in_token--; + return (DO); + } /* Ditto for ESAC in the CASE case. Specifically, this handles "case word in esac", which is a legal @@ -5258,9 +5363,9 @@ special_case_tokens (tokstr) the designers disagree. */ if (esacs_needed_count) { - esacs_needed_count--; - if (STREQ (tokstr, "esac")) + if (last_read_token == IN && STREQ (tokstr, "esac")) { + esacs_needed_count--; parser_state &= ~PST_CASEPAT; return (ESAC); } @@ -5412,6 +5517,17 @@ read_token (command) return (yacc_EOF); } + /* If we hit the end of the string and we're not expanding an alias (e.g., + we are eval'ing a string that is an incomplete command), return EOF */ + if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0) + { +#if defined (DEBUG) +itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string); +#endif + EOF_Reached = 1; + return (yacc_EOF); + } + if MBTEST(character == '#' && (!interactive || interactive_comments)) { /* A comment. Discard until EOL or EOF, and then return a newline. */ @@ -5607,18 +5723,19 @@ tokword: #define P_DOLBRACE 0x0040 /* parsing a ${...} construct */ /* Lexical state while parsing a grouping construct or $(...). */ -#define LEX_WASDOL 0x001 -#define LEX_CKCOMMENT 0x002 -#define LEX_INCOMMENT 0x004 -#define LEX_PASSNEXT 0x008 -#define LEX_RESWDOK 0x010 -#define LEX_CKCASE 0x020 -#define LEX_INCASE 0x040 -#define LEX_INHEREDOC 0x080 -#define LEX_HEREDELIM 0x100 /* reading here-doc delimiter */ -#define LEX_STRIPDOC 0x200 /* <<- strip tabs from here doc delim */ -#define LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ -#define LEX_INWORD 0x800 +#define LEX_WASDOL 0x0001 +#define LEX_CKCOMMENT 0x0002 +#define LEX_INCOMMENT 0x0004 +#define LEX_PASSNEXT 0x0008 +#define LEX_RESWDOK 0x0010 +#define LEX_CKCASE 0x0020 +#define LEX_INCASE 0x0040 +#define LEX_INHEREDOC 0x0080 +#define LEX_HEREDELIM 0x0100 /* reading here-doc delimiter */ +#define LEX_STRIPDOC 0x0200 /* <<- strip tabs from here doc delim */ +#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */ +#define LEX_INWORD 0x0800 +#define LEX_GTLT 0x1000 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -5649,7 +5766,7 @@ parse_matched_pair (qc, open, close, lenp, flags) int open, close; int *lenp, flags; { - int count, ch, tflags; + int count, ch, prevch, tflags; int nestlen, ttranslen, start_lineno; char *ret, *nestret, *ttrans; int retind, retsize, rflags; @@ -5671,8 +5788,10 @@ parse_matched_pair (qc, open, close, lenp, flags) retind = 0; start_lineno = line_number; + ch = EOF; /* just in case */ while (count) { + prevch = ch; ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); if (ch == EOF) @@ -5823,7 +5942,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); /* If we're parsing a double-quoted brace expansion and we are not in a place where single quotes are treated specially, @@ -5853,7 +5972,7 @@ parse_matched_pair (qc, open, close, lenp, flags) { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -5866,6 +5985,12 @@ parse_matched_pair (qc, open, close, lenp, flags) } else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; +#if defined (PROCESS_SUBSTITUTION) + /* XXX - technically this should only be recognized at the start of + a word */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_GTLT) && (ch == '(')) /* ) */ + goto parse_dollar_word; +#endif } /* Parse an old-style command substitution within double quotes as a single word. */ @@ -5897,7 +6022,13 @@ parse_dollar_word: FREE (nestret); } - if MBTEST(ch == '$') +#if defined (PROCESS_SUBSTITUTION) + if MBTEST((ch == '<' || ch == '>') && (tflags & LEX_GTLT) == 0) + tflags |= LEX_GTLT; + else + tflags &= ~LEX_GTLT; +#endif + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -6029,7 +6160,7 @@ parse_comsub (qc, open, close, lenp, flags) while (count) { comsub_readchar: - ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0); if (ch == EOF) { @@ -6060,7 +6191,7 @@ eof_error: tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; - if (STREQN (ret + tind, heredelim, hdlen)) + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) { tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ @@ -6301,11 +6432,13 @@ eof_error: tflags |= LEX_RESWDOK; lex_rwlen = 0; } - else + else if (shellmeta (ch) == 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } + else /* can't be in a reserved word any more */ + lex_rwlen = 0; } else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) ; /* don't modify LEX_RESWDOK if we're starting a comment */ @@ -6378,7 +6511,10 @@ eof_error: continue; } else - ch = peekc; /* fall through and continue XXX */ + { + shell_ungetc (peekc); /* not a here-doc, start over */ + continue; + } } else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) { @@ -6434,7 +6570,7 @@ eof_error: { /* Translate $'...' here. */ ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); - xfree (nestret); + free (nestret); if ((rflags & P_DQUOTE) == 0) { @@ -6453,7 +6589,7 @@ eof_error: { /* Locale expand $"..." here. */ ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); - xfree (nestret); + free (nestret); nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); free (ttrans); @@ -6481,7 +6617,7 @@ eof_error: FREE (nestret); } - if MBTEST(ch == '$') + if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0) tflags |= LEX_WASDOL; else tflags &= ~LEX_WASDOL; @@ -6506,12 +6642,25 @@ xparse_dolparen (base, string, indp, flags) sh_parser_state_t ps; sh_input_line_state_t ls; int orig_ind, nc, sflags, orig_eof_token; - char *ret, *s, *ep, *ostring; + char *ret, *ep, *ostring; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + STRING_SAVER *saved_pushed_strings; +#endif - /*yydebug = 1;*/ +/*debug_parser(1);*/ orig_ind = *indp; ostring = string; + if (*string == 0) + { + if (flags & SX_NOALLOC) + return (char *)NULL; + + ret = xmalloc (1); + ret[0] = '\0'; + return ret; + } + /*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE; if (flags & SX_NOLONGJMP) @@ -6519,29 +6668,47 @@ xparse_dolparen (base, string, indp, flags) save_parser_state (&ps); save_input_line_state (&ls); orig_eof_token = shell_eof_token; +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + saved_pushed_strings = pushed_string_list; /* separate parsing context */ + pushed_string_list = (STRING_SAVER *)NULL; +#endif /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; + /* Should we save and restore the bison/yacc lookahead token (yychar) here? + Or only if it's not YYEMPTY? */ + nc = parse_string (string, "command substitution", sflags, &ep); + if (current_token == shell_eof_token) + yyclearin; /* might want to clear lookahead token unconditionally */ + shell_eof_token = orig_eof_token; restore_parser_state (&ps); reset_parser (); /* reset_parser clears shell_input_line and associated variables */ restore_input_line_state (&ls); +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + pushed_string_list = saved_pushed_strings; +#endif + token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the - negative of the return value */ + negative of the return value. We abandon the rest of this input line + first */ if (nc < 0) - jump_to_top_level (-nc); /* XXX */ + { + clear_shell_input_line (); /* XXX */ + jump_to_top_level (-nc); /* XXX */ + } /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET - and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ + and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */ /*(*/ if (ep[-1] != ')') @@ -6560,6 +6727,8 @@ xparse_dolparen (base, string, indp, flags) #if DEBUG if (base[*indp] != ')') itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); + if (*indp < orig_ind) + itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring); #endif if (flags & SX_NOALLOC) @@ -6803,7 +6972,7 @@ cond_term () if (term) term->flags |= CMD_INVERT_RETURN; } - else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) + else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word)) { op = yylval.word; tok = read_token (READ); @@ -6936,20 +7105,30 @@ parse_cond_command () #if defined (ARRAY_VARS) /* When this is called, it's guaranteed that we don't care about anything - in t beyond i. We do save and restore the chars, though. */ + in t beyond i. We use a buffer with room for the characters we add just + in case assignment() ends up doing something like parsing a command + substitution that will reallocate atoken. We don't want to write beyond + the end of an allocated buffer. */ static int token_is_assignment (t, i) char *t; int i; { - unsigned char c, c1; int r; + char *atoken; - c = t[i]; c1 = t[i+1]; - t[i] = '='; t[i+1] = '\0'; - r = assignment (t, (parser_state & PST_COMPASSIGN) != 0); - t[i] = c; t[i+1] = c1; - return r; + atoken = xmalloc (i + 3); + memcpy (atoken, t, i); + atoken[i] = '='; + atoken[i+1] = '\0'; + + r = assignment (atoken, (parser_state & PST_COMPASSIGN) != 0); + + free (atoken); + + /* XXX - check that r == i to avoid returning false positive for + t containing `=' before t[i]. */ + return (r > 0 && r == i); } /* XXX - possible changes here for `+=' */ @@ -7064,7 +7243,8 @@ read_token_word (character) strcpy (token + token_index, ttok); token_index += ttoklen; all_digit_token = 0; - quoted = 1; + if (character != '`') + quoted = 1; dollar_present |= (character == '"' && strchr (ttok, '$') != 0); FREE (ttok); goto next_character; @@ -7404,6 +7584,7 @@ got_token: yylval.word = the_word; + /* should we check that quoted == 0 as well? */ if (token[0] == '{' && token[token_index-1] == '}' && (character == '<' || character == '>')) { @@ -7416,9 +7597,15 @@ got_token: #endif { strcpy (the_word->word, token+1); -/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/ +/* itrace("read_token_word: returning REDIR_WORD for %s", the_word->word); */ + yylval.word = the_word; /* accommodate recursive call */ return (REDIR_WORD); } + else + /* valid_array_reference can call the parser recursively; need to + make sure that yylval.word doesn't change if we are going to + return WORD or ASSIGNMENT_WORD */ + yylval.word = the_word; } result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) @@ -7436,6 +7623,7 @@ got_token: if (word_top < MAX_CASE_NEST) word_top++; word_lineno[word_top] = line_number; + expecting_in_token++; break; } @@ -7639,6 +7827,9 @@ history_delimiting_chars (line) return (" "); } + if (line_isblank (line)) + return (""); + return ("; "); } #endif /* HISTORY */ @@ -7709,6 +7900,31 @@ print_prompt () fflush (stderr); } +#if defined (HISTORY) + /* The history library increments the history offset as soon as it stores + the first line of a potentially multi-line command, so we compensate + here by returning one fewer when appropriate. */ +static int +prompt_history_number (pmt) + char *pmt; +{ + int ret; + + ret = history_number (); + if (ret == 1) + return ret; + + if (pmt == ps1_prompt) /* are we expanding $PS1? */ + return ret; + else if (pmt == ps2_prompt && command_oriented_history == 0) + return ret; /* not command oriented history */ + else if (pmt == ps2_prompt && command_oriented_history && current_command_first_line_saved) + return ret - 1; + else + return ret - 1; /* PS0, PS4, ${var@P}, PS2 other cases */ +} +#endif + /* Return a string which will be printed as a prompt. The string may contain special characters which are decoded as follows: @@ -7746,7 +7962,7 @@ decode_prompt_string (string) char *string; { WORD_LIST *list; - char *result, *t; + char *result, *t, *orig_string; struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) @@ -7762,6 +7978,7 @@ decode_prompt_string (string) result = (char *)xmalloc (result_size = PROMPT_GROWTH); result[result_index = 0] = 0; temp = (char *)NULL; + orig_string = string; while (c = *string++) { @@ -7777,7 +7994,7 @@ decode_prompt_string (string) #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ string--; /* add_string increments string again. */ goto add_string; @@ -8009,14 +8226,19 @@ decode_prompt_string (string) goto add_string; case '#': - temp = itos (current_command_number); + n = current_command_number; + /* If we have already incremented current_command_number (PS4, + ${var@P}), compensate */ + if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt) + n--; + temp = itos (n); goto add_string; case '!': #if !defined (HISTORY) temp = savestring ("1"); #else /* HISTORY */ - temp = itos (history_number ()); + temp = itos (prompt_history_number (orig_string)); #endif /* HISTORY */ goto add_string; @@ -8593,8 +8815,6 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { - int i; - if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -8630,15 +8850,10 @@ save_parser_state (ps) ps->need_here_doc = need_here_doc; ps->here_doc_first_line = here_doc_first_line; -#if 0 - for (i = 0; i < HEREDOC_MAX; i++) - ps->redir_stack[i] = redir_stack[i]; -#else if (need_here_doc == 0) ps->redir_stack[0] = 0; else memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); -#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -8748,6 +8963,10 @@ restore_input_line_state (ls) ************************************************/ #if defined (HANDLE_MULTIBYTE) + +/* We don't let the property buffer get larger than this unless the line is */ +#define MAX_PROPSIZE 32768 + static void set_line_mbstate () { @@ -8759,8 +8978,22 @@ set_line_mbstate () if (shell_input_line == NULL) return; len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ - shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); + if (len == 0) + return; + if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1) + { + free (shell_input_line_property); + shell_input_line_property = 0; + shell_input_line_propsize = 0; + } + if (len+1 > shell_input_line_propsize) + { + shell_input_line_propsize = len + 1; + shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize); + } + /* XXX - use whether or not we are in a UTF-8 locale to avoid calls to + mbrlen */ memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) { @@ -8775,6 +9008,9 @@ set_line_mbstate () break; } + /* I'd love to take more advantage of UTF-8's properties in a UTF-8 + locale, but mbrlen changes the mbstate_t on every call even when + presented with single-byte characters. */ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); if (mbclen == 1 || mbclen == (size_t)-1) { diff --git a/y.tab.h b/y.tab.h index b367eb205..6efd73716 100644 --- a/y.tab.h +++ b/y.tab.h @@ -148,7 +148,7 @@ extern int yydebug; union YYSTYPE { -#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ +#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */